From 4a5d898846b66d13808e349a9d9d1f784b2c0b43 Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Mon, 26 Dec 2022 18:29:27 +0700 Subject: [PATCH 01/16] build: Add better SQL Test Infrastructure - Switch to JUnit5 for parametrized tests and parallel execution - Maven: Add Airlist Check SKIP switches for fast prototyping - Maven: remove Checklist Modules, since those are provided by Airbase - Eclipse formatter configuration for Airlift style - SQL Parser and Unparser Tests, read from SQL Files - Updated some Tests to benefit from JUnit5 --- .../eclipse-airlift.importorder | 6 + config/eclipse-formatter/eclipse-airlift.xml | 291 ++++++++++++++++++ linter/pom.xml | 6 +- parser/pom.xml | 29 +- .../facebook/coresql/parser/TestKeywords.java | 12 +- .../coresql/parser/TestSqlParser.java | 103 ++++--- .../resources/sqllogictest_result.txt | 8 + .../com/manticore/jsqlformatter/Comment.java | 42 +++ .../manticore/jsqlformatter/CommentMap.java | 212 +++++++++++++ .../manticore/jsqlformatter/SQLKeyEntry.java | 56 ++++ .../jsqlformatter/SimpleFileTest.java | 70 +++++ .../jsqlformatter/StandardFileTest.java | 124 ++++++++ .../manticore/jsqlformatter/TestUtils.java | 69 +++++ .../jsqlformatter/simple/SQLFileTest.sql | 12 + .../standard/StandardSelectTest.sql | 14 + pom.xml | 23 +- rewriter/pom.xml | 13 +- .../coresql/rewriter/TestOrderByRewriter.java | 15 +- 18 files changed, 1007 insertions(+), 98 deletions(-) create mode 100644 config/eclipse-formatter/eclipse-airlift.importorder create mode 100644 config/eclipse-formatter/eclipse-airlift.xml create mode 100644 parser/src/test/java/com/facebook/coresql/parser/sqllogictest/resources/sqllogictest_result.txt create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/Comment.java create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql diff --git a/config/eclipse-formatter/eclipse-airlift.importorder b/config/eclipse-formatter/eclipse-airlift.importorder new file mode 100644 index 0000000..5700764 --- /dev/null +++ b/config/eclipse-formatter/eclipse-airlift.importorder @@ -0,0 +1,6 @@ +#Organize Import Order +#Thu Jan 24 12:47:53 PST 2013 +3=\# +2=java +1=javax +0= diff --git a/config/eclipse-formatter/eclipse-airlift.xml b/config/eclipse-formatter/eclipse-airlift.xml new file mode 100644 index 0000000..1729d93 --- /dev/null +++ b/config/eclipse-formatter/eclipse-airlift.xml @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/linter/pom.xml b/linter/pom.xml index 79385b5..e5cac12 100644 --- a/linter/pom.xml +++ b/linter/pom.xml @@ -19,9 +19,9 @@ - junit - junit - 4.12 + org.junit.jupiter + junit-jupiter + 5.9.0 test diff --git a/parser/pom.xml b/parser/pom.xml index 3fead4f..ef10569 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -19,15 +19,23 @@ - junit - junit - 4.12 + org.junit.jupiter + junit-jupiter + 5.9.0 test - + + + org.junit.jupiter + junit-jupiter-api + 5.9.0 + test + + - org.testng - testng + org.junit.jupiter + junit-jupiter-params + 5.9.0 test @@ -189,10 +197,17 @@ + + maven-failsafe-plugin + 2.22.2 + + org.apache.maven.plugins maven-surefire-plugin + 3.0.0-M7 + false **/*.java target/**/*.java @@ -233,7 +248,7 @@ net.java.dev.javacc javacc - 7.0.10 + 7.0.12 runtime diff --git a/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java b/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java index 2133054..7e67c00 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java +++ b/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java @@ -13,7 +13,8 @@ */ package com.facebook.coresql.parser; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import static com.facebook.coresql.parser.ParserHelper.parseStatement; import static com.facebook.coresql.parser.SqlParserConstants.MAX_NON_RESERVED_WORD; @@ -21,9 +22,6 @@ import static com.facebook.coresql.parser.SqlParserConstants.MIN_NON_RESERVED_WORD; import static com.facebook.coresql.parser.SqlParserConstants.MIN_RESERVED_WORD; import static com.facebook.coresql.parser.SqlParserConstants.tokenImage; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertNull; public class TestKeywords { @@ -36,7 +34,7 @@ private static String getTokenImageWithoutQuotes(int kind) public void testReservedWords() { for (int i = MIN_RESERVED_WORD + 1; i < MAX_RESERVED_WORD; i++) { - assertNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), + Assertions.assertNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), getTokenImageWithoutQuotes(i) + " should be a reserved word."); } } @@ -46,7 +44,7 @@ public void testNonReservedWords() { // The last one is a weird one - "COUNT" so we ignore it for now. for (int i = MIN_NON_RESERVED_WORD + 1; i < MAX_NON_RESERVED_WORD - 1; i++) { - assertNotNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), + Assertions.assertNotNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), getTokenImageWithoutQuotes(i) + " should NOT be a reserved word."); } } @@ -56,7 +54,7 @@ public void testNoExtraneousKeywords() { for (int i = MAX_RESERVED_WORD + 1; i < tokenImage.length; i++) { // All string literal tokens start with quote and if it's a keyword first char is a letter (somewhat loosely). - assertFalse( + Assertions.assertFalse( tokenImage[i].charAt(0) == '"' && Character.isLetter(tokenImage[i].charAt(1)), tokenImage[i] + " should be in one of the reserved word or non-reserved word group of tokens."); } diff --git a/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java b/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java index 08886f2..a10c39a 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java +++ b/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java @@ -14,9 +14,15 @@ package com.facebook.coresql.parser; import com.facebook.coresql.parser.sqllogictest.java.SqlLogicTest; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import java.io.IOException; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Stream; import static com.facebook.coresql.parser.ParserHelper.parseExpression; import static com.facebook.coresql.parser.ParserHelper.parseStatement; @@ -26,56 +32,55 @@ import static com.facebook.coresql.parser.SqlParserConstants.SQRT; import static com.facebook.coresql.parser.SqlParserConstants.tokenImage; import static com.facebook.coresql.parser.Unparser.unparse; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; public class TestSqlParser { - private static final String[] TEST_SQL_TESTSTRINGS = new String[] { - "use a.b;", - " SELECT 1;", - "SELECT a FROM T;", - "SELECT a FROM T WHERE p1 > p2;", - "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", - "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", - "SELECT T.* FROM T JOIN W ON T.x = W.x;", - "SELECT NULL;", - "SELECT ARRAY[x] FROM T;", - "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", - "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + - "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", - "SELECT\n" + - " CAST(MAP() AS map>) AS \"bool_tensor_features\";", - "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", - "SELECT abs, 2 as abs;", - "SELECT sqrt(x), power(y, 5), myFunction('a') FROM T;", - }; + public static Stream sqlStrings() + { + List sqlStrings = Arrays.asList( + "use a.b;", + " SELECT 1;", + "SELECT a FROM T;", + "SELECT a FROM T WHERE p1 > p2;", + "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", + "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", + "SELECT T.* FROM T JOIN W ON T.x = W.x;", + "SELECT NULL;", + "SELECT ARRAY[x] FROM T;", + "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", + "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + + "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", + "SELECT\n" + + " CAST(MAP() AS map>) AS \"bool_tensor_features\";", + "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", + "SELECT abs, 2 as abs;", + "SELECT sqrt(x), power(y, 5), myFunction('a') FROM T;", + "SELECT concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat('1','2'),'3'),'4'),'5'),'6'),'7'),'8'),'9'),'10'),'11'),'12'),'13'),'14'),'15'),'16'),'17'),'18'),'19'),'20'),'21'),col1 FROM tbl t1;"); + return sqlStrings.stream(); + } private AstNode parse(String sql) { return parseStatement(sql); } - @Test - public void smokeTest() + @ParameterizedTest(name = "SQL {0}") + @MethodSource("sqlStrings") + public void smokeTest(String sqlStr) { - for (String sql : TEST_SQL_TESTSTRINGS) { - assertNotNull(parse(sql)); - } + Assertions.assertNotNull(parse(sqlStr)); } - @Test - public void parseUnparseTest() + @ParameterizedTest(name = "SQL {0}") + @MethodSource("sqlStrings") + public void parseUnparseTest(String sqlStr) { - for (String sql : TEST_SQL_TESTSTRINGS) { - System.out.println(sql); - AstNode ast = parse(sql); - assertNotNull(ast); - assertEquals(sql.trim(), unparse(ast).trim()); - } + AstNode ast = parse(sqlStr); + Assertions.assertNotNull(ast); + Assertions.assertEquals(sqlStr.trim(), unparse(ast).trim()); } @Test @@ -88,26 +93,26 @@ public void sqlLogicTest() @Test public void testGetOperator() { - assertEquals(parseExpression("x + 10").GetOperator(), PLUS); - assertEquals(parseExpression("x < /*comment*/ 10").GetOperator(), LESS_THAN); - assertEquals(parseExpression("NOT x").GetOperator(), NOT); + Assertions.assertEquals(PLUS, parseExpression("x + 10").GetOperator()); + Assertions.assertEquals(LESS_THAN, parseExpression("x < /*comment*/ 10").GetOperator()); + Assertions.assertEquals(NOT, parseExpression("NOT x").GetOperator()); } @Test public void testGetFunctionName() { - assertEquals(parseExpression("SQRT(10)").GetFunctionName(), tokenImage[SQRT].substring(1, tokenImage[SQRT].length() - 1)); - assertEquals(parseExpression("POW(x, 2)").GetFunctionName(), "POW"); - assertEquals(parseExpression("PoW(x, 2)").GetFunctionName(), "PoW"); - assertEquals(parseExpression("MyFunction('a')").GetFunctionName(), "MyFunction"); + Assertions.assertEquals(parseExpression("SQRT(10)").GetFunctionName(), tokenImage[SQRT].substring(1, tokenImage[SQRT].length() - 1)); + Assertions.assertEquals("POW", parseExpression("POW(x, 2)").GetFunctionName()); + Assertions.assertEquals("PoW", parseExpression("PoW(x, 2)").GetFunctionName()); + Assertions.assertEquals("MyFunction", parseExpression("MyFunction('a')").GetFunctionName()); } @Test public void testIsNegated() { - assertEquals(parseExpression("a LIKE B").IsNegated(), false); - assertEquals(parseExpression("a NOT LIKE B").IsNegated(), true); - assertEquals(parseExpression("a IS NULL").IsNegated(), false); - assertEquals(parseExpression("a IS NOT NULL").IsNegated(), true); + Assertions.assertFalse(parseExpression("a LIKE B").IsNegated()); + Assertions.assertTrue(parseExpression("a NOT LIKE B").IsNegated()); + Assertions.assertFalse(parseExpression("a IS NULL").IsNegated()); + Assertions.assertTrue(parseExpression("a IS NOT NULL").IsNegated()); } } diff --git a/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/resources/sqllogictest_result.txt b/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/resources/sqllogictest_result.txt new file mode 100644 index 0000000..5aa7770 --- /dev/null +++ b/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/resources/sqllogictest_result.txt @@ -0,0 +1,8 @@ +SELECT abs(b-c), CASE WHEN c>(SELECT avg(c) FROM t1) THEN a*2 ELSE b*10 END, b, a FROM t1 WHERE b>c AND d>e NON EXISTANT CLAUSE 4,1,3,2; ----> PARSING_ERROR + +=============================================== +RESULT +=============================================== +Database dialect tested against: ALL +183 statements found, 182 statements successfully parsed. +99.45% of sqllogictest statements were successfully parsed. \ No newline at end of file diff --git a/parser/src/test/java/com/manticore/jsqlformatter/Comment.java b/parser/src/test/java/com/manticore/jsqlformatter/Comment.java new file mode 100644 index 0000000..7705f45 --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/Comment.java @@ -0,0 +1,42 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.manticore.jsqlformatter; + +public class Comment + implements Comparable +{ + protected boolean newLine; + protected boolean extraNewLine; + protected int absolutePosition; + protected int relativePosition; + protected String text; + + public Comment(int absolutePosition, String text) + { + this.absolutePosition = absolutePosition; + this.text = text; + } + + @Override + public int compareTo(Comment o) + { + return Integer.compare(absolutePosition, o.absolutePosition); + } + + @Override + public String toString() + { + return text; + } +} diff --git a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java b/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java new file mode 100644 index 0000000..9a179e0 --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java @@ -0,0 +1,212 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.manticore.jsqlformatter; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class CommentMap + extends LinkedHashMap +{ + private static final Logger LOGGER = Logger.getLogger(CommentMap.class.getName()); + + public static final Pattern COMMENT_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + + public static final Pattern LINE_END_COMMENT_PATTERN = Pattern.compile("(\\/\\*.*\\\\*\\/\\s?[\\,\\)]?\\n)"); + + private static final Pattern STRING_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + + private static StringBuilder appendComment(StringBuilder builder, String keyword, String before, String after) + { + builder.append(before).append(keyword).append(after); + return builder; + } + + public CommentMap(String sqlStr) + { + Matcher matcher = COMMENT_PATTERN.matcher(sqlStr); + int i = 0; + while (matcher.find()) { + i++; + + String group = matcher.group(0); + int start = matcher.start(0); + int end = matcher.end(0); + + if (!STRING_PATTERN.matcher(group).matches()) { +// if (OracleHint.isHintMatch(group)) +// LOGGER.log(Level.FINE, "Oracle hint {0}", group); +// else { + Comment comment = new Comment(start, group); + if (start == 0 || (sqlStr.charAt(start - 1) == '\n' && sqlStr.charAt(end - 1) == '\n')) { + comment.newLine = true; + comment.extraNewLine = start > 1 && sqlStr.charAt(start - 2) == '\n'; + } + put(comment.absolutePosition, comment); +// } + } + } + + int absolutePosition = 0; + int relativePosition = 0; + int totalCommentsLength = 0; + + for (Comment comment : values()) { + while (absolutePosition < comment.absolutePosition) { + char c = sqlStr.charAt(absolutePosition); + if (!Character.isWhitespace(c)) { + relativePosition++; + } + + absolutePosition++; + } + comment.relativePosition = relativePosition - totalCommentsLength; + totalCommentsLength += comment.text.replaceAll("\\s", "").length(); + + LOGGER.log(Level.FINE, "Found comment {0} at Position {1} (absolute) {2} (relative).", new Object[] {comment.text, comment.absolutePosition, comment.relativePosition}); + } + } + + public StringBuilder insertComments(StringBuilder sqlStrWithoutComments) + { + StringBuilder builder = new StringBuilder(); + + Iterator commentIteraror = values().iterator(); + if (commentIteraror.hasNext()) { + Comment next = commentIteraror.next(); + + int relativePosition = 0; + int ansiStarted = -1; + boolean wasLastComment = false; + + for (int position = 0; position < sqlStrWithoutComments.length(); position++) { + String c = sqlStrWithoutComments.substring(position, position + 1); + + if (ansiStarted < 0) { + while (next.relativePosition <= relativePosition) { + if (next.extraNewLine) { + builder.append("\n"); + } + else if (next.newLine && builder.length() > 1 + && builder.charAt(builder.length() - 1) != '\n') { + builder.append("\n"); + } + else if (!c.matches("\\w")) { + builder.append(" "); + } + + if (!next.newLine && next.text.startsWith("--")) { + appendComment(builder, next.text.trim().replaceFirst("--\\s?", "/* "), "", " */"); + } + else { + appendComment(builder, next.text, "", ""); + } + + if (commentIteraror.hasNext()) { + next = commentIteraror.next(); + } + else { + wasLastComment = true; + break; + } + } + } + + if (wasLastComment) { + String remaining = sqlStrWithoutComments.substring(position); + if (next.newLine) { + int nextBreak = remaining.indexOf('\n'); + if (nextBreak >= 0 && remaining.substring(0, nextBreak).trim().length() == 0) { + builder.append(remaining.substring(nextBreak + 1)); + } + else { + builder.append(remaining); + } + } + else { + builder.append(remaining); + } + break; + } + + if (ansiStarted < 0 && position + 2 <= sqlStrWithoutComments.length() + && sqlStrWithoutComments.substring(position, position + 2).matches("\u001B\\[")) { + ansiStarted = position; + } + + if (ansiStarted >= 0 && sqlStrWithoutComments.substring(ansiStarted, position + 1).matches("\u001B\\[[;\\d]*[ -/]*[@-~]")) { + ansiStarted = -1; + } + + if (position > 0 && c.equals("\n")) { + int lastBreak = builder.lastIndexOf("\n"); + if (lastBreak < 0 || builder.substring(lastBreak).trim().length() > 0) { + builder.append(c); + } + } + else { + builder.append(c); + } + + if (ansiStarted < 0) { + relativePosition = sqlStrWithoutComments.substring(0, position + 1).replaceAll("\u001B\\[[;\\d]*[ -/]*[@-~]|\\s", "").length(); + } + } + } + + Matcher matcher = LINE_END_COMMENT_PATTERN.matcher(builder); + ArrayList matches = new ArrayList<>(); + + int i = 0; + int maxPosition = 0; + while (matcher.find()) { + i++; + int start = matcher.start(0); + + int lastLineBreak = builder.lastIndexOf("\n", start); + int pos = start - lastLineBreak; + maxPosition = Integer.max(maxPosition, pos); + matches.add(new Object[] {start, pos}); + } + + int subIndent = maxPosition / 4 + (maxPosition % 4 > 0 ? 1 : 0); + int totalInsertedChars = 0; + for (Object[] match : matches) { + int start = (int) match[0]; + int pos = (int) match[1]; + for (int j = pos; j < subIndent * 4; j++) { + builder.insert(start + totalInsertedChars, " "); + totalInsertedChars++; + } + } + + return builder; + } + + public int getLength() + { + int length = 0; + for (Comment c : values()) { + length += c.text.length(); + } + + return length; + } +} diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java b/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java new file mode 100644 index 0000000..c337dc7 --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java @@ -0,0 +1,56 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.manticore.jsqlformatter; + +import java.io.File; +import java.util.Map; + +public class SQLKeyEntry + implements Map.Entry +{ + File key; + String value; + + public SQLKeyEntry(File key, String value) + { + this.key = key; + this.value = value; + } + + @Override + public File getKey() + { + return key; + } + + @Override + public String getValue() + { + return value; + } + + @Override + public String setValue(String value) + { + this.value = value; + return this.value; + } + + @Override + public String toString() + { + return value + " @ " + key.getName(); + } +} diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java new file mode 100644 index 0000000..ba7b7cc --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java @@ -0,0 +1,70 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.manticore.jsqlformatter; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map.Entry; +import java.util.logging.Level; +import java.util.stream.Stream; + +public class SimpleFileTest + extends StandardFileTest +{ + public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/simple"; + + public static Stream> getSqlMap() + { + LinkedHashMap sqlMap = new LinkedHashMap<>(); + + for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { + boolean start = false; + boolean end; + + StringBuilder stringBuilder = new StringBuilder(); + String line; + String k = ""; + + try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader)) { + while ((line = bufferedReader.readLine()) != null) { + if (!start && line.startsWith("--") && !line.startsWith("-- @")) { + k = line.substring(3).trim().toUpperCase(); + } + + start = start + || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; + end = start && line.trim().endsWith(";"); + + if (start) { + stringBuilder.append(line).append("\n"); + } + + if (end) { + sqlMap.put(new SQLKeyEntry(file, k), stringBuilder.toString().trim()); + stringBuilder.setLength(0); + start = false; + } + } + } + catch (IOException ex) { + LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); + } + } + + return sqlMap.entrySet().stream(); + } +} diff --git a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java new file mode 100644 index 0000000..9267b98 --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java @@ -0,0 +1,124 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.manticore.jsqlformatter; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FilenameFilter; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map.Entry; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Pattern; +import java.util.stream.Stream; + +/** + * @author Andreas Reichel + */ +public class StandardFileTest +{ + public static final Pattern COMMENT_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + + public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/standard"; + + public static final FilenameFilter FILENAME_FILTER = new FilenameFilter() + { + @Override + public boolean accept(File dir, String name) + { + return name.toLowerCase().endsWith(".sql"); + } + }; + + public static final Logger LOGGER = Logger.getLogger(StandardFileTest.class.getName()); + + public static Stream> getSqlMap() + { + LinkedHashMap sqlMap = new LinkedHashMap<>(); + + for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { + boolean start = false; + boolean end; + + StringBuilder stringBuilder = new StringBuilder(); + String line; + String k = ""; + + try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader)) { + while ((line = bufferedReader.readLine()) != null) { + if (!start && line.startsWith("--") && !line.startsWith("-- @")) { + k = line.substring(3).trim().toUpperCase(); + } + + start = start + || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; + end = start && line.trim().endsWith(";"); + + if (start) { + stringBuilder.append(line).append("\n"); + } + + if (end) { + sqlMap.put(new SQLKeyEntry(file, k), stringBuilder.toString().trim()); + stringBuilder.setLength(0); + start = false; + } + } + } + catch (IOException ex) { + LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); + } + } + + return sqlMap.entrySet().stream(); + } + + public String buildSqlString(final String originalSql, boolean laxDeparsingCheck) + { + String sql = COMMENT_PATTERN.matcher(originalSql).replaceAll(""); + if (laxDeparsingCheck) { + String s = sql.replaceAll("\\n\\s*;", ";").replaceAll("\\s+", " ").replaceAll("\\s*([!/,()=+\\-*|\\]<>])\\s*", "$1").toLowerCase().trim(); + return !s.endsWith(";") ? s + ";" : s; + } + else { + return sql; + } + } + + /** + * Test parsing the provided examples + * + */ + @DisplayName("Standard SQL File Test") + @ParameterizedTest(name = "{index} {0}: {1}") + @MethodSource("getSqlMap") + public void testParser(Entry entry) + { + String expected = entry.getValue(); + + if (expected.length() <= new CommentMap(expected).getLength()) { + LOGGER.warning("Skip empty statement, when found only comments: " + expected); + } + else { + TestUtils.assertParseAndUnparse(expected); + } + } +} diff --git a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java b/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java new file mode 100644 index 0000000..5e27cdf --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java @@ -0,0 +1,69 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.manticore.jsqlformatter; + +import com.facebook.coresql.parser.AstNode; +import com.facebook.coresql.parser.ParserHelper; +import com.facebook.coresql.parser.Unparser; +import org.junit.jupiter.api.Assertions; + +import java.util.regex.Pattern; + +public final class TestUtils +{ + private static final Pattern SQL_COMMENT_PATTERN = Pattern.compile("(--.*$)|(/\\*.*?\\*/)", Pattern.MULTILINE); + + private static final Pattern SQL_SANITATION_PATTERN = Pattern.compile("(\\s+)", Pattern.MULTILINE); + + // Assure SPACE around Syntax Characters + private static final Pattern SQL_SANITATION_PATTERN2 = Pattern.compile("\\s*([!/,()=+\\-*|\\]<>:])\\s*", Pattern.MULTILINE); + + private TestUtils() + {} + + public static String buildSqlString(final String originalSql, boolean relaxed) + { + if (relaxed) { + // remove comments + String sanitizedSqlStr = SQL_COMMENT_PATTERN.matcher(originalSql).replaceAll(""); + + // redundant white space + sanitizedSqlStr = SQL_SANITATION_PATTERN.matcher(sanitizedSqlStr).replaceAll(" "); + + // assure spacing around Syntax Characters + sanitizedSqlStr = SQL_SANITATION_PATTERN2.matcher(sanitizedSqlStr).replaceAll("$1"); + return sanitizedSqlStr.trim().toLowerCase(); + } + else { + // remove comments only + return SQL_COMMENT_PATTERN.matcher(originalSql).replaceAll(""); + } + } + + public static void assertParseAndUnparse(String sqlStr, boolean relaxed) + { + String expectedSqlStr = buildSqlString(sqlStr, relaxed); + + AstNode ast = ParserHelper.parseStatement(sqlStr); + Assertions.assertNotNull(ast); + String actualSqlStr = buildSqlString(Unparser.unparse(ast), relaxed); + + Assertions.assertEquals(expectedSqlStr, actualSqlStr); + } + + public static void assertParseAndUnparse(String sqlStr) + { + assertParseAndUnparse(sqlStr, true); + } +} diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest.sql new file mode 100644 index 0000000..453d1b3 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest.sql @@ -0,0 +1,12 @@ +-- some comments +-- for nothing + + +select * +from dual +; + + +select * +from dual +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql new file mode 100644 index 0000000..50a01d8 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql @@ -0,0 +1,14 @@ +-- some comments +-- for nothing + + +-- Test 2 +select * +from dual +; + + +-- TEST 1 +select * +from dual +; \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3a6732b..fc7c17d 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.facebook.airlift airbase - 99 + 100 com.facebook.presto @@ -20,6 +20,11 @@ ${project.parent.basedir} 0.198 + false + false + false + false + false @@ -81,14 +86,6 @@ - - org.apache.maven.plugins - maven-checkstyle-plugin - - **/generated-sources/**/* - - - maven-pmd-plugin @@ -110,14 +107,6 @@ - - org.apache.maven.plugins - maven-checkstyle-plugin - - **/generated-sources/**/* - - - org.apache.maven.plugins diff --git a/rewriter/pom.xml b/rewriter/pom.xml index c04330c..7d962be 100644 --- a/rewriter/pom.xml +++ b/rewriter/pom.xml @@ -19,15 +19,16 @@ - junit - junit - 4.12 + org.junit.jupiter + junit-jupiter + 5.9.0 test - + - org.testng - testng + org.junit.jupiter + junit-jupiter-api + 5.9.0 test diff --git a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java index 774037c..1c0bb47 100644 --- a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java +++ b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java @@ -16,16 +16,13 @@ import com.facebook.coresql.parser.AstNode; import com.google.common.collect.ImmutableMap; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; import java.util.Map; import java.util.Optional; import static com.facebook.coresql.parser.ParserHelper.parseStatement; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertFalse; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.assertTrue; public class TestOrderByRewriter { @@ -89,20 +86,20 @@ public class TestOrderByRewriter private void assertStatementUnchanged(String originalStatement) { - assertFalse(getRewriteResult(originalStatement).isPresent()); + Assertions.assertFalse(getRewriteResult(originalStatement).isPresent()); } private void assertStatementRewritten(String originalStatement, String expectedStatement) { Optional result = getRewriteResult(originalStatement); - assertTrue(result.isPresent()); - assertEquals(result.get().getRewrittenSql(), expectedStatement); + Assertions.assertTrue(result.isPresent()); + Assertions.assertEquals(result.get().getRewrittenSql(), expectedStatement); } private Optional getRewriteResult(String originalStatement) { AstNode ast = parseStatement(originalStatement); - assertNotNull(ast); + Assertions.assertNotNull(ast); return new OrderByRewriter(ast).rewrite(); } From 075fa94b7ef4de7d89021533ada83d02c20fd8bd Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Mon, 26 Dec 2022 19:12:39 +0700 Subject: [PATCH 02/16] build: Add Spotless Plugin Maven Spotless Plugin to enforce Airlift compliant formatting based on Eclipse formatter --- .../facebook/coresql/parser/TestKeywords.java | 10 +--- .../coresql/parser/TestSqlParser.java | 23 +------- .../manticore/jsqlformatter/CommentMap.java | 9 +-- .../jsqlformatter/SimpleFileTest.java | 3 +- .../jsqlformatter/StandardFileTest.java | 6 +- pom.xml | 51 ++++++++++++++++- .../coresql/rewriter/TestOrderByRewriter.java | 55 +------------------ 7 files changed, 63 insertions(+), 94 deletions(-) diff --git a/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java b/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java index 7e67c00..4ebea2b 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java +++ b/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java @@ -34,8 +34,7 @@ private static String getTokenImageWithoutQuotes(int kind) public void testReservedWords() { for (int i = MIN_RESERVED_WORD + 1; i < MAX_RESERVED_WORD; i++) { - Assertions.assertNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), - getTokenImageWithoutQuotes(i) + " should be a reserved word."); + Assertions.assertNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), getTokenImageWithoutQuotes(i) + " should be a reserved word."); } } @@ -44,8 +43,7 @@ public void testNonReservedWords() { // The last one is a weird one - "COUNT" so we ignore it for now. for (int i = MIN_NON_RESERVED_WORD + 1; i < MAX_NON_RESERVED_WORD - 1; i++) { - Assertions.assertNotNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), - getTokenImageWithoutQuotes(i) + " should NOT be a reserved word."); + Assertions.assertNotNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), getTokenImageWithoutQuotes(i) + " should NOT be a reserved word."); } } @@ -54,9 +52,7 @@ public void testNoExtraneousKeywords() { for (int i = MAX_RESERVED_WORD + 1; i < tokenImage.length; i++) { // All string literal tokens start with quote and if it's a keyword first char is a letter (somewhat loosely). - Assertions.assertFalse( - tokenImage[i].charAt(0) == '"' && Character.isLetter(tokenImage[i].charAt(1)), - tokenImage[i] + " should be in one of the reserved word or non-reserved word group of tokens."); + Assertions.assertFalse(tokenImage[i].charAt(0) == '"' && Character.isLetter(tokenImage[i].charAt(1)), tokenImage[i] + " should be in one of the reserved word or non-reserved word group of tokens."); } } } diff --git a/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java b/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java index a10c39a..a3af32d 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java +++ b/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java @@ -37,28 +37,7 @@ public class TestSqlParser { public static Stream sqlStrings() { - List sqlStrings = Arrays.asList( - "use a.b;", - " SELECT 1;", - "SELECT a FROM T;", - "SELECT a FROM T WHERE p1 > p2;", - "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", - "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", - "SELECT T.* FROM T JOIN W ON T.x = W.x;", - "SELECT NULL;", - "SELECT ARRAY[x] FROM T;", - "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", - "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + - "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", - "SELECT\n" + - " CAST(MAP() AS map>) AS \"bool_tensor_features\";", - "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", - "SELECT abs, 2 as abs;", - "SELECT sqrt(x), power(y, 5), myFunction('a') FROM T;", - "SELECT concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat('1','2'),'3'),'4'),'5'),'6'),'7'),'8'),'9'),'10'),'11'),'12'),'13'),'14'),'15'),'16'),'17'),'18'),'19'),'20'),'21'),col1 FROM tbl t1;"); + List sqlStrings = Arrays.asList("use a.b;", " SELECT 1;", "SELECT a FROM T;", "SELECT a FROM T WHERE p1 > p2;", "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", "SELECT T.* FROM T JOIN W ON T.x = W.x;", "SELECT NULL;", "SELECT ARRAY[x] FROM T;", "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", "SELECT\n" + " CAST(MAP() AS map>) AS \"bool_tensor_features\";", "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", "SELECT abs, 2 as abs;", "SELECT sqrt(x), power(y, 5), myFunction('a') FROM T;", "SELECT concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat('1','2'),'3'),'4'),'5'),'6'),'7'),'8'),'9'),'10'),'11'),'12'),'13'),'14'),'15'),'16'),'17'),'18'),'19'),'20'),'21'),col1 FROM tbl t1;"); return sqlStrings.stream(); } diff --git a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java b/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java index 9a179e0..fbf3531 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java @@ -26,8 +26,7 @@ public class CommentMap { private static final Logger LOGGER = Logger.getLogger(CommentMap.class.getName()); - public static final Pattern COMMENT_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" - + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + public static final Pattern COMMENT_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); public static final Pattern LINE_END_COMMENT_PATTERN = Pattern.compile("(\\/\\*.*\\\\*\\/\\s?[\\,\\)]?\\n)"); @@ -104,8 +103,7 @@ public StringBuilder insertComments(StringBuilder sqlStrWithoutComments) if (next.extraNewLine) { builder.append("\n"); } - else if (next.newLine && builder.length() > 1 - && builder.charAt(builder.length() - 1) != '\n') { + else if (next.newLine && builder.length() > 1 && builder.charAt(builder.length() - 1) != '\n') { builder.append("\n"); } else if (!c.matches("\\w")) { @@ -146,8 +144,7 @@ else if (!c.matches("\\w")) { break; } - if (ansiStarted < 0 && position + 2 <= sqlStrWithoutComments.length() - && sqlStrWithoutComments.substring(position, position + 2).matches("\u001B\\[")) { + if (ansiStarted < 0 && position + 2 <= sqlStrWithoutComments.length() && sqlStrWithoutComments.substring(position, position + 2).matches("\u001B\\[")) { ansiStarted = position; } diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java index ba7b7cc..ffb07d1 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java @@ -45,8 +45,7 @@ public static Stream> getSqlMap() k = line.substring(3).trim().toUpperCase(); } - start = start - || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; + start = start || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; end = start && line.trim().endsWith(";"); if (start) { diff --git a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java index 9267b98..f1afed6 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java @@ -34,8 +34,7 @@ */ public class StandardFileTest { - public static final Pattern COMMENT_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" - + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + public static final Pattern COMMENT_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/standard"; @@ -68,8 +67,7 @@ public static Stream> getSqlMap() k = line.substring(3).trim().toUpperCase(); } - start = start - || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; + start = start || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; end = start && line.trim().endsWith(";"); if (start) { diff --git a/pom.xml b/pom.xml index fc7c17d..8eb71ee 100644 --- a/pom.xml +++ b/pom.xml @@ -113,7 +113,7 @@ maven-jar-plugin + e.g. a pom project --> true @@ -124,6 +124,55 @@ + + + com.diffplug.spotless + spotless-maven-plugin + 2.28.0 + + + origin/main + + + + + + *.md + .gitignore + + + + + + true + 4 + + + + + + + + src/main/java/**/*.java + src/test/java/**/*.java + + + + + config/eclipse-formatter/eclipse-airlift.importorder + + + + + + 4.13.0 + config/eclipse-formatter/eclipse-airlift.xml + + + + + + diff --git a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java index 1c0bb47..93ab1dd 100644 --- a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java +++ b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java @@ -28,61 +28,12 @@ public class TestOrderByRewriter { private static final String[] STATEMENTS_THAT_DONT_NEED_REWRITE = new String[] { // False Positive - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;", - "SELECT dealer_id, sales OVER (PARTITION BY dealer_id ORDER BY sales);", - "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t ORDER BY t.date LIMIT 100);", - "SELECT (true or false) and false;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;", "SELECT dealer_id, sales OVER (PARTITION BY dealer_id ORDER BY sales);", "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t ORDER BY t.date LIMIT 100);", "SELECT (true or false) and false;", // True Negative - "SELECT * FROM T ORDER BY y;", - "SELECT * FROM T ORDER BY y LIMIT 10;", - "use a.b;", - " SELECT 1;", - "SELECT a FROM T;", - "SELECT a FROM T WHERE p1 > p2;", - "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", - "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", - "SELECT T.* FROM T JOIN W ON T.x = W.x;", - "SELECT NULL;", - "SELECT ARRAY[x] FROM T;", - "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", - "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", - "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + - "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", - "SELECT\n" + - " CAST(MAP() AS map>) AS \"bool_tensor_features\";", - "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", - "SELECT abs, 2 as abs;", + "SELECT * FROM T ORDER BY y;", "SELECT * FROM T ORDER BY y LIMIT 10;", "use a.b;", " SELECT 1;", "SELECT a FROM T;", "SELECT a FROM T WHERE p1 > p2;", "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", "SELECT T.* FROM T JOIN W ON T.x = W.x;", "SELECT NULL;", "SELECT ARRAY[x] FROM T;", "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", "SELECT\n" + " CAST(MAP() AS map>) AS \"bool_tensor_features\";", "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", "SELECT abs, 2 as abs;", }; - private static final ImmutableMap STATEMENT_TO_REWRITTEN_STATEMENT = - new ImmutableMap.Builder() - .put("CREATE TABLE blah AS SELECT * FROM T ORDER BY y;", - "CREATE TABLE blah AS SELECT * FROM T;") - .put("INSERT INTO blah SELECT * FROM T ORDER BY y;", - "INSERT INTO blah SELECT * FROM T;") - .put("CREATE TABLE blah AS SELECT * FROM T ORDER BY SUM(payment);", - "CREATE TABLE blah AS SELECT * FROM T;") - .put("INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t ORDER BY t.date) LIMIT 10;", - "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t) LIMIT 10;") - .put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM T) ORDER BY z;", - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM T);") - .put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x));", - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T));") - .put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y) ORDER BY z;", - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10));") - .put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y LIMIT 10) ORDER BY z;", - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T) ORDER BY y LIMIT 10);") - .put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y) ORDER BY z LIMIT 10;", - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T)) ORDER BY z LIMIT 10;") - .put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;", - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;") - .put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y) ORDER BY z LIMIT 10;", - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10)) ORDER BY z LIMIT 10;") - .put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10) ORDER BY z;", - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10);") - .build(); + private static final ImmutableMap STATEMENT_TO_REWRITTEN_STATEMENT = new ImmutableMap.Builder().put("CREATE TABLE blah AS SELECT * FROM T ORDER BY y;", "CREATE TABLE blah AS SELECT * FROM T;").put("INSERT INTO blah SELECT * FROM T ORDER BY y;", "INSERT INTO blah SELECT * FROM T;").put("CREATE TABLE blah AS SELECT * FROM T ORDER BY SUM(payment);", "CREATE TABLE blah AS SELECT * FROM T;").put("INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t ORDER BY t.date) LIMIT 10;", "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t) LIMIT 10;").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM T) ORDER BY z;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM T);").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x));", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T));").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y) ORDER BY z;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10));").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y LIMIT 10) ORDER BY z;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T) ORDER BY y LIMIT 10);").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y) ORDER BY z LIMIT 10;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T)) ORDER BY z LIMIT 10;").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y) ORDER BY z LIMIT 10;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10)) ORDER BY z LIMIT 10;").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10) ORDER BY z;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10);").build(); private void assertStatementUnchanged(String originalStatement) { From 7a5d4dc2aa41a008bb747b286ee624f92618538a Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Mon, 26 Dec 2022 21:36:17 +0700 Subject: [PATCH 03/16] doc: Add basic HTML documentation based on Sphinx Add basic Sphinx Template with minimal content Add Gradle task for Changelog Add Gradle task for Rail Road Diagrams (although it does not work yet because this Grammar is strong) Add Gradle task for building the Sphinx documentation, including the Prologue Add Github Action for deploying the HTML to Github Pages Add Github Action for Maven build Add Github Issue template Tweak the .gitignore file --- .github/ISSUE_TEMPLATE/bug_report.md | 27 ++++ .github/workflows/maven.yml | 30 ++++ .github/workflows/sphinx.yml | 29 ++++ .gitignore | 6 + build.gradle | 187 ++++++++++++++++++++++ parser/pom.xml | 63 +++++++- settings.gradle | 11 ++ sphinx/Makefile | 20 +++ sphinx/make.bat | 35 ++++ sphinx/src/changelog.rst | 79 +++++++++ sphinx/src/conf.py | 33 ++++ sphinx/src/contribution.rst | 139 ++++++++++++++++ sphinx/src/index.rst | 60 +++++++ sphinx/src/keywords.rst | 231 +++++++++++++++++++++++++++ sphinx/src/syntax.rst | 11 ++ sphinx/src/usage.rst | 83 ++++++++++ 16 files changed, 1043 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/workflows/maven.yml create mode 100644 .github/workflows/sphinx.yml create mode 100644 build.gradle create mode 100644 settings.gradle create mode 100644 sphinx/Makefile create mode 100644 sphinx/make.bat create mode 100644 sphinx/src/changelog.rst create mode 100644 sphinx/src/conf.py create mode 100644 sphinx/src/contribution.rst create mode 100644 sphinx/src/index.rst create mode 100644 sphinx/src/keywords.rst create mode 100644 sphinx/src/syntax.rst create mode 100644 sphinx/src/usage.rst diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..3f84de5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,27 @@ +--- +name: SQL Parser Error +about: Create a report to help us improve +title: 'Parser Version : RDBMS : Failing feature description' +labels: 'Parser Error', 'Feature Request', 'Documentation', 'Java API', 'RDBMS support' +assignees: '' + +--- + +**Failing SQL Feature** +- Brief description of the failing SQL feature +- Example: `WITH ROLLUP` can't be parsed + +**SQL Example** +- Simplified Query Example, focusing on the failing feature +```sql +-- Replace with your ACTUAL example +select 1 +from dual +``` + +**Software Information** +- Parser version +- Database (e.g. Oracle, MS SQL Server, H2, PostgreSQL, IBM DB2 ) + +**Tips** +Please write in English and avoid Screenshots (as we can't copy and paste content from it). \ No newline at end of file diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 0000000..92846f2 --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,30 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Java CI with Maven + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + java: [8, 11] + name: Java ${{ matrix.java }} building ... + + steps: + - uses: actions/checkout@v3 + - name: Set up Java ${{ matrix.java }} + uses: actions/setup-java@v3 + with: + java-version: ${{ matrix.java }} + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/.github/workflows/sphinx.yml b/.github/workflows/sphinx.yml new file mode 100644 index 0000000..fe6394d --- /dev/null +++ b/.github/workflows/sphinx.yml @@ -0,0 +1,29 @@ +name: Sphinx Pages +on: [push, workflow_dispatch] +permissions: write-all +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v2 + - name: Install dependencies + run: pip install sphinx sphinx_rtd_theme myst_parser sphinx-prompt sphinx_substitution_extensions sphinx_issues sphinx_tabs pygments + - name: Checkout project sources + uses: actions/checkout@v2 + with: + ref: master + fetch-depth: 0 + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + - name: Run build with Gradle Wrapper + run: ./gradlew sphinx + - name: Deploy + uses: actions/configure-pages@v2 + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + # Upload entire repository + path: 'target/site/sphinx' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1 diff --git a/.gitignore b/.gitignore index f9b1a4b..cd19616 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.ipr *.iws target/ +build/ /var /*/var/ /presto-product-tests/**/var/ @@ -25,3 +26,8 @@ benchmark_outputs .mvn/timing.properties .editorconfig node_modules +nb-configuration.xml +gradle/ +.gradle/ +gradlew +gradlew.bat diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..af1fa58 --- /dev/null +++ b/build.gradle @@ -0,0 +1,187 @@ +import se.bjurr.gitchangelog.plugin.gradle.GitChangelogTask + +import java.nio.charset.Charset + +plugins { + //id 'java' + //id 'maven-publish' + //id "ca.coglinc2.javacc" version "latest.release" + //id 'jacoco' + //id "com.github.spotbugs" version "latest.release" + //id 'pmd' + //id 'checkstyle' + + // download the RR tools which have no Maven Repository + id "de.undercouch.download" version "latest.release" + + id "se.bjurr.gitchangelog.git-changelog-gradle-plugin" version "latest.release" +} + +group = 'com.facebook.presto' + +def getVersion = { boolean considerSnapshot -> + def major = 0 + def minor = 0 + def patch = 0 + def commit = "" + def snapshot ="" + new ByteArrayOutputStream().withStream { os -> + exec { + workingDir "$projectDir" + args = [ + "--no-pager" + , "describe" + , "--tags" + , "--always" + , "--dirty=-SNAPSHOT" + ] + executable "git" + standardOutput = os + } + def matcher = os.toString() =~ /(\d*)\.(\d*)-(\d*)-([a-zA-Z\d]*)/ + matcher.find() + + major = matcher[0][1] + minor = matcher[0][2] + patch = matcher[0][3] + commit = matcher[0][4] + + if (considerSnapshot && os.toString().trim().endsWith("-SNAPSHOT")) { + minor++ + snapshot = "-SNAPSHOT" + } + } + return "${major}.${minor}${snapshot}" +} +version = getVersion(true) + +description = 'Java SQL:2016 compliant Parser Suite' + +repositories { + gradlePluginPortal() + mavenLocal() + mavenCentral() +} + +task renderRR() { + doLast { + // these WAR files have been provided as a courtesy by Gunther Rademacher + // and belong to the RR - Railroad Diagram Generator Project + // https://github.com/GuntherRademacher/rr + // + // Hosting at manticore-projects.com is temporary until a better solution is found + // Please do not use these files without Gunther's permission + download.run { + src 'http://manticore-projects.com/download/convert.war' + dest "target/rr/convert.war" + overwrite false + } + + download.run { + src 'http://manticore-projects.com/download/rr.war' + dest "target/rr/rr.war" + overwrite false + } + + javaexec { + standardOutput = new FileOutputStream("target/rr/syntax.ebnf") + main = "-jar" + args = [ + "target/rr/convert.war", + "parser/target/generated-sources/javacc/parser_tmp.jjt" + ] + } + + javaexec { + main = "-jar" + args = [ + "target/rr/rr.war", + "-noepsilon", + "-color:#4D88FF", + "-offset:0", + "-width:800", + //"-png", + //"-out:target/rr/JSqlParserCC.zip", + "-out:target/rr/syntax.xhtml", + "target/rr/syntax.ebnf" + ] + } + } +} + +task gitChangelogTask(type: GitChangelogTask) { + fromRepo = file("$projectDir") + file = new File("${projectDir}/sphinx/src/changelog.rst") + //fromRef = "4.0" + //toRef = "1.1"; + templateContent =""" +************************ +Changelog +************************ + + +{{#tags}} +{{#ifMatches name "^Unreleased.*"}} +Latest Changes since |JSQLPARSER_VERSION| +{{/ifMatches}} +{{#ifMatches name "^(?!Unreleased).*"}} +Version {{name}} +{{/ifMatches}} +============================================================= + + {{#issues}} + + {{#commits}} + {{#ifMatches messageTitle "^(?!Merge).*"}} + * **{{{messageTitle}}}** + + {{authorName}}, {{commitDate}} + {{/ifMatches}} + {{/commits}} + + {{/issues}} +{{/tags}} +""" +} + +task sphinx(type: Exec) { + dependsOn(gitChangelogTask) + + String PROLOG = """ +.. |_| unicode:: U+00A0 + :trim: + +.. |JSQLPARSER_EMAIL| replace:: support@manticore-projects.com +.. |JSQLPARSER_VERSION| replace:: ${getVersion(false)} +.. |JSQLPARSER_SNAPSHOT_VERSION| replace:: ${getVersion(true)} +.. |JSQLPARSER_STABLE_VERSION_LINK| raw:: html + + ${project.name}-${getVersion(false)}.jar + +.. |JSQLPARSER_SNAPSHOT_VERSION_LINK| raw:: html + + ${project.name}-${getVersion(true)}.jar + +""" + + args = [ + "-Dproject=Java SQL:2016 Parser" + , "-Dcopyright=Sreeni Viswanadha, 2022" + , "-Dauthor=Sreeni Viswanadha" + , "-Drelease=${getVersion(false)}" + , "-Drst_prolog=$PROLOG" + , "sphinx/src" + , "target/site/sphinx" + ] + + executable "sphinx-build" + + //store the output instead of printing to the console: + standardOutput = new ByteArrayOutputStream() + + //extension method stopTomcat.output() can be used to obtain the output: + ext.output = { + return standardOutput.toString() + } +} + diff --git a/parser/pom.xml b/parser/pom.xml index ef10569..c91d898 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -95,7 +95,7 @@ org.javacc.plugin javacc-maven-plugin - 3.0.2 + 3.0.3 jcc7jcc @@ -266,4 +266,65 @@ + + + + + + org.javacc.plugin + javacc-maven-plugin + 3.0.3 + + + true + + + true + + + false + + + + + ${project.reporting.outputDirectory} + + + + diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..b4b132d --- /dev/null +++ b/settings.gradle @@ -0,0 +1,11 @@ +/* + * This file was generated by the Gradle 'init' task. + */ + +rootProject.name = 'presto-coresql' +include(':presto-coresql-linter') +include(':presto-coresql-rewriter') +include(':presto-coresql-parser') +project(":presto-coresql-linter").projectDir = file('linter') +project(":presto-coresql-rewriter").projectDir = file('rewriter') +project(":presto-coresql-parser").projectDir = file('parser') diff --git a/sphinx/Makefile b/sphinx/Makefile new file mode 100644 index 0000000..2b9b071 --- /dev/null +++ b/sphinx/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = src +BUILDDIR = ../target/site/sphinx + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/sphinx/make.bat b/sphinx/make.bat new file mode 100644 index 0000000..dc1312a --- /dev/null +++ b/sphinx/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/sphinx/src/changelog.rst b/sphinx/src/changelog.rst new file mode 100644 index 0000000..f807674 --- /dev/null +++ b/sphinx/src/changelog.rst @@ -0,0 +1,79 @@ + +************************ +Changelog +************************ + + +Latest Changes since |JSQLPARSER_VERSION| +============================================================= + + + * **build: Add Spotless Plugin** + + Andreas Reichel, 2022-12-26 + * **build: Add better SQL Test Infrastructure** + + Andreas Reichel, 2022-12-26 + * **More cleanup** + + Sreeni Viswanadha, 2022-10-13 + * **Really fix BuiltinFunctionCall** + + Sreeni Viswanadha, 2022-10-12 + * **Fix up builtin function calls** + + Sreeni Viswanadha, 2022-10-12 + * **Make RewriteResult fields final** + + Nathan Mugerwa, 2021-04-26 + * **Add sqllogictest** + + Nathan Mugerwa, 2021-04-09 + * **Refactor Rewriter API** + + Nathan Mugerwa, 2021-03-26 + * **Add base rewriter classes with specific implementation for rewriting ORDER BY anti-pattern** + + Nathan Mugerwa, 2021-03-17 + * **Add Java 8 flag to travis config** + + Nathan Mugerwa, 2021-03-15 + * **Move linter code into top-level package** + + Nathan Mugerwa, 2021-03-10 + * **[maven-release-plugin] prepare for next development iteration** + + Leiqing Cai, 2021-02-12 + +Version 0.1 +============================================================= + + + * **[maven-release-plugin] prepare release 0.1** + + Leiqing Cai, 2021-02-12 + * **Add parser linting support** + + Nathan Mugerwa, 2021-02-05 + * **Streamlined reserverd/non-reserved word handling.** + + Sreeni Viswanadha, 2020-12-30 + * **Travis CI configuration.** + + Sreeni Viswanadha, 2020-12-29 + * **SQL 16 + Presto extensions JavaCC grammar.** + + Sreeni Viswanadha, 2020-12-29 + * **JavaCC C++ code generator configuration.** + + Sreeni Viswanadha, 2020-12-29 + * **JavaCC Java code generator configuration.** + + Sreeni Viswanadha, 2020-12-29 + * **Update README.md** + + Rongrong Zhong, 2020-10-22 + * **Initial commit** + + Rongrong Zhong, 2020-10-22 + diff --git a/sphinx/src/conf.py b/sphinx/src/conf.py new file mode 100644 index 0000000..ebc7900 --- /dev/null +++ b/sphinx/src/conf.py @@ -0,0 +1,33 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +project = 'presto-sql' +copyright = '2022, Andreas Reichel' +author = 'Andreas Reichel' +release = '0.2' + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = ['myst_parser', 'sphinx.ext.autodoc', 'sphinx.ext.autosectionlabel', 'sphinx.ext.extlinks', 'sphinx-prompt', 'sphinx_substitution_extensions', 'sphinx_issues', 'sphinx_tabs.tabs', 'pygments.sphinxext', ] + +templates_path = ['_templates'] +exclude_patterns = [] +source_encoding = 'utf-8-sig' +pygments_style = 'friendly' +show_sphinx = False +master_doc = 'index' +source_suffix = ['.rst', '.md'] + + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'alabaster' +html_static_path = ['_static'] + diff --git a/sphinx/src/contribution.rst b/sphinx/src/contribution.rst new file mode 100644 index 0000000..dc547b4 --- /dev/null +++ b/sphinx/src/contribution.rst @@ -0,0 +1,139 @@ +****************************** +How to contribute +****************************** + +Error Reports +============================== + +Please report any issue to the `GitHub Issue Tracker `_: + + 1) Provide the **Sample SQL** (shortened and simplified, properly formatted) + 2) State the exact **Version of the Java SQL:2016 Parser** + 3) State the **RDBMS** in use and point on the applicable Grammar specification + 4) Please write in **English** and post **Plain Text only** (avoiding screen shots or bitmap pictures). + +Feature Requests +============================== + +**Java SQL:2016 Parser** is a demand-driven software library, where many contributors have shared solutions for their own needs. Requests for new features have a good chance to get implemented when + + 1) the request is about a commonly used feature for one of the major RDBMS + 2) or the request is backed by a sponsor or a bounty, which may attract developers to spend their time on it. + +Implementing new Features +============================== + +The team around **Java SQL:2016 Parser** warmly welcomes Code Contributions and Pull Requests. Please follow the guidance below and do not hesitate to ask us for assistance. + +Create a new Git Branch +------------------------------ + +When starting afresh, clone the **Java SQL:2016 Parser** from the `GitHub` repository: + +.. code-block:: Bash + + git clone https://github.com/kaikalur/sql.git + cd sql + git branch + +When having a local repository already, then pull/merge from the `GitHub` repository: + +.. code-block:: Bash + + cd sql + git pull origin master + git branch + +Amend the Code +------------------------------ + +The **Java SQL:2016 Parser** is generated by ``JavaCC`` based on the provided Grammar. The Grammar defines how a SQL Text is read and translated into Java Objects. Thus any contribution will depend on the following steps: + + 1) Edit the ``JavaCC`` Grammar at ``sql/parser/grammar`` + 2) Add or edit the Java Classes at ``sql/parser/src/main/java/com/facebook/coresql/parser/`` to facilitate this Grammar. + 3) Provide Java Unit Tests at ``sql/parser/src/test/java/com/facebook/coresql/parser/`` to test the new feature + + * The test should call the method ``TestUtils.assertParseAndUnparse()`` at least one time + * The test should ensure complete coverage of the new Java Classes. + * The complete test suite must succeed. + + 4) Add the description of the new feature to the ``README.md`` file, section `Extensions`. + 5) Build the package with ``Maven`` and ensure, all checks do pass (PMD and CheckStyle and Code Formatting). + +Manage Reserved Keywords +------------------------------ + +Since **Java SQL:2016 Parser** is built by JavaCC from a Token based Grammar, ``Reserved Keywords`` need a special treatment. All Tokens of the Grammar would become ``Reserved Keywords`` -- unless explicitly allowed and white-listened. + +.. code-block:: sql + :caption: White-list Keyword example + + -- is a Token, recently defined in the Grammar + -- Although it is not restricted by the SQL Standard and could be used for Column, Table and Alias names + -- Explicitly white-listing OVERLAPS by adding it to the RelObjectNameWithoutValue() Production will allow for parsing the following statement + + SELECT Overlaps( overlaps ) AS overlaps + FROM overlaps.overlaps overlaps + WHERE overlaps = 'overlaps' + AND (CURRENT_TIME, INTERVAL '1' HOUR) OVERLAPS (CURRENT_TIME, INTERVAL -'1' HOUR) + ; + +So we will need to define and white-list any Keywords which may be allowed for Object Names (such as `Schema`, `Table`, `Column`, `Function`, `Alias`). This White-List must be updated whenever the Tokens of the Grammar change (e. |_| g. when adding a new Token or Production). +Otherwise any new Token or Production will become a ``Reserved Keyword`` automatically and can't be used for Object Names without quoting. + + +Commit a Pull Request +--------------------------------- + +.. code-block:: Bash + + cd sql + git add -A + git commit -m -m <description> + git push –set-upstream origin <new-branch> + +Follow the advice on `Meaningful Commit Messages <https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/>`_ and consider using `Commitizen <https://commitizen-tools.github.io/commitizen/>`_ when describing your commits. + +Please consider using `Conventional Commits` and structure your commit message as follows: + +.. code-block:: text + :caption: Conventional Commit Message Structure + + <type>[optional scope]: <description> + + [optional body] + + [BREAKING CHANGE: <change_description>] + + [optional footer(s)] + +.. list-table:: Commit Message Types + :widths: 15 85 + :header-rows: 1 + + * - Type + - Description + * - **feat** + - introduce a new feature + * - **fix** + - patches a bug in your codebase (bugfix or hotfix) + * - **build** + - changes that affect the build system or external dependencies + * - **chore** + - updates dependencies and does not relate to fix or feat and does not modify src or test files. + * - **ci** + - changes that affect the continuous integration process + * - **docs** + - updates the documentation or introduce documentation + * - **style** + - updates the formatting of code; remove white spaces, add missing spaces, remove unnecessary newlines + * - **refactor** + - reactors code segments to optimize readability without changing behavior + * - **perf** + - improve performance + * - **test** + - add/remove/update tests + * - **revert** + - reverts one or many previous commits + +Please visit `Better Programming <https://betterprogramming.pub/write-better-git-commit-messages-to-increase-your-productivity-89fa773e8375>`_ for more information and guidance. diff --git a/sphinx/src/index.rst b/sphinx/src/index.rst new file mode 100644 index 0000000..1e2ae8f --- /dev/null +++ b/sphinx/src/index.rst @@ -0,0 +1,60 @@ +########################### +Java SQL:2016 Parser Library +########################### + +.. toctree:: + :maxdepth: 2 + :hidden: + + usage + contribution + keywords + changelog + +.. image:: https://maven-badges.herokuapp.com/maven-central/com.facebook.presto/presto-coresql/badge.svg + :alt: Maven Repo + +.. image:: https://github.com/kaikalur/sql/actions/workflows/maven.yml/badge.svg + :alt: Maven Build Status + +.. image:: https://www.javadoc.io/badge/com.facebook.presto/presto-coresql.svg + :alt: Java Docs + +**Java SQL:2016 Parser** is a SQL statement parser built from JavaCC. It translates SQLs in a traversable hierarchy of Java classes. + +Latest stable release: |JSQLPARSER_STABLE_VERSION_LINK| + +Development version: |JSQLPARSER_SNAPSHOT_VERSION_LINK| + +****************************** +SQL Dialects +****************************** + +**JSqlParser** is SQL:2016 compliant and provides support various RDBMS such as: + + * Oracle Database + * MS SqlServer + * MySQL and MariaDB + * PostgreSQL + * H2 + +Although support for specific dialects is work in progress and has not been implemented yet. + +******************************* +Features +******************************* + + * Comprehensive support for statements: + - QUERY: ``SELECT ...`` + - DML: ``INSERT ... INTO ...`` ``UPDATE ...`` ``MERGE ... INTO ...`` ``DELETE ... FROM ...`` + - DDL: ``CREATE ...`` ``ALTER ...`` ``DROP ...`` + + * Nested Expressions (e.g. Sub-Selects) + * ``WITH`` clauses + * De-Parser for a Statement AST Node, which writes a SQL from Java Objects + + + + + + diff --git a/sphinx/src/keywords.rst b/sphinx/src/keywords.rst new file mode 100644 index 0000000..b785b4b --- /dev/null +++ b/sphinx/src/keywords.rst @@ -0,0 +1,231 @@ +*********************** +Restricted Keywords +*********************** + +The following Keywords are **restricted** in Version |JSQLPARSER_VERSION| and must not be used for **Naming Objects**: + ++----------------------+-------------+-----------+ +| **Keyword** | JSQL Parser | SQL:2016 | ++----------------------+-------------+-----------+ +| ABSENT | Yes | Yes | ++----------------------+-------------+-----------+ +| ALL | Yes | Yes | ++----------------------+-------------+-----------+ +| AND | Yes | Yes | ++----------------------+-------------+-----------+ +| ANY | Yes | Yes | ++----------------------+-------------+-----------+ +| AS | Yes | Yes | ++----------------------+-------------+-----------+ +| BETWEEN | Yes | Yes | ++----------------------+-------------+-----------+ +| BOTH | Yes | Yes | ++----------------------+-------------+-----------+ +| CASEWHEN | Yes | | ++----------------------+-------------+-----------+ +| CHECK | Yes | Yes | ++----------------------+-------------+-----------+ +| CONNECT | Yes | | ++----------------------+-------------+-----------+ +| CONNECT_BY_ROOT | Yes | Yes | ++----------------------+-------------+-----------+ +| CONSTRAINT | Yes | Yes | ++----------------------+-------------+-----------+ +| CREATE | Yes | | ++----------------------+-------------+-----------+ +| CROSS | Yes | Yes | ++----------------------+-------------+-----------+ +| CURRENT | Yes | Yes | ++----------------------+-------------+-----------+ +| DISTINCT | Yes | Yes | ++----------------------+-------------+-----------+ +| DOUBLE | Yes | | ++----------------------+-------------+-----------+ +| ELSE | Yes | Yes | ++----------------------+-------------+-----------+ +| EXCEPT | Yes | Yes | ++----------------------+-------------+-----------+ +| EXISTS | Yes | Yes | ++----------------------+-------------+-----------+ +| FETCH | Yes | Yes | ++----------------------+-------------+-----------+ +| FOR | Yes | Yes | ++----------------------+-------------+-----------+ +| FORCE | Yes | Yes | ++----------------------+-------------+-----------+ +| FOREIGN | Yes | Yes | ++----------------------+-------------+-----------+ +| FROM | Yes | Yes | ++----------------------+-------------+-----------+ +| FULL | Yes | Yes | ++----------------------+-------------+-----------+ +| GROUP | Yes | Yes | ++----------------------+-------------+-----------+ +| GROUPING | Yes | | ++----------------------+-------------+-----------+ +| HAVING | Yes | Yes | ++----------------------+-------------+-----------+ +| IF | Yes | Yes | ++----------------------+-------------+-----------+ +| IIF | Yes | | ++----------------------+-------------+-----------+ +| IGNORE | Yes | | ++----------------------+-------------+-----------+ +| ILIKE | Yes | Yes | ++----------------------+-------------+-----------+ +| IN | Yes | Yes | ++----------------------+-------------+-----------+ +| INNER | Yes | Yes | ++----------------------+-------------+-----------+ +| INTERSECT | Yes | Yes | ++----------------------+-------------+-----------+ +| INTERVAL | Yes | Yes | ++----------------------+-------------+-----------+ +| INTO | Yes | Yes | ++----------------------+-------------+-----------+ +| IS | Yes | Yes | ++----------------------+-------------+-----------+ +| JOIN | Yes | Yes | ++----------------------+-------------+-----------+ +| LATERAL | Yes | Yes | ++----------------------+-------------+-----------+ +| LEFT | Yes | Yes | ++----------------------+-------------+-----------+ +| LIKE | Yes | Yes | ++----------------------+-------------+-----------+ +| LIMIT | Yes | Yes | ++----------------------+-------------+-----------+ +| MINUS | Yes | Yes | ++----------------------+-------------+-----------+ +| NATURAL | Yes | Yes | ++----------------------+-------------+-----------+ +| NOCYCLE | Yes | Yes | ++----------------------+-------------+-----------+ +| NOT | Yes | Yes | ++----------------------+-------------+-----------+ +| NULL | Yes | Yes | ++----------------------+-------------+-----------+ +| OFFSET | Yes | Yes | ++----------------------+-------------+-----------+ +| ON | Yes | Yes | ++----------------------+-------------+-----------+ +| ONLY | Yes | Yes | ++----------------------+-------------+-----------+ +| OPTIMIZE | Yes | | ++----------------------+-------------+-----------+ +| OR | Yes | Yes | ++----------------------+-------------+-----------+ +| ORDER | Yes | Yes | ++----------------------+-------------+-----------+ +| OUTER | Yes | Yes | ++----------------------+-------------+-----------+ +| OUTPUT | Yes | Yes | ++----------------------+-------------+-----------+ +| OPTIMIZE | Yes | Yes | ++----------------------+-------------+-----------+ +| PIVOT | Yes | Yes | ++----------------------+-------------+-----------+ +| PROCEDURE | Yes | | ++----------------------+-------------+-----------+ +| PUBLIC | Yes | | ++----------------------+-------------+-----------+ +| RECURSIVE | Yes | Yes | ++----------------------+-------------+-----------+ +| REGEXP | Yes | Yes | ++----------------------+-------------+-----------+ +| RETURNING | Yes | Yes | ++----------------------+-------------+-----------+ +| RIGHT | Yes | Yes | ++----------------------+-------------+-----------+ +| SEL | Yes | | ++----------------------+-------------+-----------+ +| SELECT | Yes | | ++----------------------+-------------+-----------+ +| SEMI | Yes | Yes | ++----------------------+-------------+-----------+ +| SET | Yes | Yes | ++----------------------+-------------+-----------+ +| SOME | Yes | Yes | ++----------------------+-------------+-----------+ +| START | Yes | Yes | ++----------------------+-------------+-----------+ +| TABLES | Yes | | ++----------------------+-------------+-----------+ +| TOP | Yes | Yes | ++----------------------+-------------+-----------+ +| TRAILING | Yes | Yes | ++----------------------+-------------+-----------+ +| UNBOUNDED | Yes | Yes | ++----------------------+-------------+-----------+ +| UNION | Yes | Yes | ++----------------------+-------------+-----------+ +| UNIQUE | Yes | Yes | ++----------------------+-------------+-----------+ +| UNPIVOT | Yes | Yes | ++----------------------+-------------+-----------+ +| USE | Yes | Yes | ++----------------------+-------------+-----------+ +| USING | Yes | Yes | ++----------------------+-------------+-----------+ +| SQL_CACHE | Yes | Yes | ++----------------------+-------------+-----------+ +| SQL_CALC_FOUND_ROWS | Yes | Yes | ++----------------------+-------------+-----------+ +| SQL_NO_CACHE | Yes | Yes | ++----------------------+-------------+-----------+ +| STRAIGHT_JOIN | Yes | Yes | ++----------------------+-------------+-----------+ +| VALUE | Yes | Yes | ++----------------------+-------------+-----------+ +| VALUES | Yes | Yes | ++----------------------+-------------+-----------+ +| VARYING | Yes | Yes | ++----------------------+-------------+-----------+ +| WHEN | Yes | Yes | ++----------------------+-------------+-----------+ +| WHERE | Yes | Yes | ++----------------------+-------------+-----------+ +| WINDOW | Yes | Yes | ++----------------------+-------------+-----------+ +| WITH | Yes | Yes | ++----------------------+-------------+-----------+ +| XOR | Yes | Yes | ++----------------------+-------------+-----------+ +| XMLSERIALIZE | Yes | Yes | ++----------------------+-------------+-----------+ +| SEL | Yes | Yes | ++----------------------+-------------+-----------+ +| SELECT | Yes | Yes | ++----------------------+-------------+-----------+ +| DATE | Yes | Yes | ++----------------------+-------------+-----------+ +| TIME | Yes | Yes | ++----------------------+-------------+-----------+ +| TIMESTAMP | Yes | Yes | ++----------------------+-------------+-----------+ +| YEAR | Yes | Yes | ++----------------------+-------------+-----------+ +| MONTH | Yes | Yes | ++----------------------+-------------+-----------+ +| DAY | Yes | Yes | ++----------------------+-------------+-----------+ +| HOUR | Yes | Yes | ++----------------------+-------------+-----------+ +| MINUTE | Yes | Yes | ++----------------------+-------------+-----------+ +| SECOND | Yes | Yes | ++----------------------+-------------+-----------+ +| SUBSTR | Yes | Yes | ++----------------------+-------------+-----------+ +| SUBSTRING | Yes | Yes | ++----------------------+-------------+-----------+ +| TRIM | Yes | Yes | ++----------------------+-------------+-----------+ +| POSITION | Yes | Yes | ++----------------------+-------------+-----------+ +| OVERLAY | Yes | Yes | ++----------------------+-------------+-----------+ +| NEXTVAL | Yes | Yes | ++----------------------+-------------+-----------+ +| 0x | Yes | Yes | ++----------------------+-------------+-----------+ diff --git a/sphinx/src/syntax.rst b/sphinx/src/syntax.rst new file mode 100644 index 0000000..d9b1960 --- /dev/null +++ b/sphinx/src/syntax.rst @@ -0,0 +1,11 @@ +*********************** +Supported SQL Syntax +*********************** + +The EBNF and Railroad Diagrams for the supported SQL Syntax. +Kindly provided by Gunther Rademacher. + +.. raw:: html + + <iframe id="rrFrame" src="_static/JSqlParserCC.xhtml" height="640" width="100%"></iframe></div> + diff --git a/sphinx/src/usage.rst b/sphinx/src/usage.rst new file mode 100644 index 0000000..12df977 --- /dev/null +++ b/sphinx/src/usage.rst @@ -0,0 +1,83 @@ +****************************** +How to use it +****************************** + +Compile from Source Code +============================== + +You will need to have ``JDK 8`` or ``JDK 11`` installed. + +.. tabs:: + + .. tab:: Maven + + .. code-block:: shell + + git clone https://github.com/kaikalur/sql.git + cd sql + mvn install + + .. tab:: Gradle + + .. code-block:: shell + + git clone https://github.com/kaikalur/sql.git + cd sql + gradle build + + + +Maven Artifacts +============================== + +.. tabs:: + + + .. tab:: Stable Release + + .. code-block:: xml + :substitutions: + + <dependency> + <groupId>com.facebook.presto</groupId> + <artifactId>presto-coresql</artifactId> + <version>|JSQLPARSER_VERSION|</version> + </dependency> + + .. tab:: Development Snapshot + + .. code-block:: xml + :substitutions: + + <repositories> + <repository> + <id>presto-coresql-snapshots</id> + <snapshots> + <enabled>true</enabled> + </snapshots> + <url>https://oss.sonatype.org/content/groups/public/</url> + </repository> + </repositories> + <dependency> + <groupId>com.facebook.presto</groupId> + <artifactId>presto-coresql</artifactId> + <version>|JSQLPARSER_SNAPSHOT_VERSION|</version> + </dependency> + + +Parse a SQL Statements +============================== + +Parse the SQL Text into Java Objects: + +.. code-block:: java + + import com.facebook.coresql.parser.AstNode; + import com.facebook.coresql.parser.ParserHelper; + import com.facebook.coresql.parser.Unparser; + + String sqlStr = "select 1 from dual where a=b"; + AstNode ast = ParserHelper.parseStatement(sqlStr); + String unparsedSqlStr = Unparser.unparse(ast); + + From bf9ec8df2b1bc6e6d83c4ec36c0998e021ffe60c Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Mon, 26 Dec 2022 21:40:34 +0700 Subject: [PATCH 04/16] fix: Git Branch is MAIN --- .github/workflows/sphinx.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sphinx.yml b/.github/workflows/sphinx.yml index fe6394d..c53fb56 100644 --- a/.github/workflows/sphinx.yml +++ b/.github/workflows/sphinx.yml @@ -11,7 +11,7 @@ jobs: - name: Checkout project sources uses: actions/checkout@v2 with: - ref: master + ref: main fetch-depth: 0 - name: Setup Gradle uses: gradle/gradle-build-action@v2 From da733b579b175b60b12f21e06aa0d17f187695e8 Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Mon, 26 Dec 2022 22:27:11 +0700 Subject: [PATCH 05/16] fix: Try using native GIT --- .github/workflows/maven.yml | 4 ++-- .github/workflows/sphinx.yml | 2 +- parser/pom.xml | 8 ++++++++ sphinx/src/changelog.rst | 6 ++++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 92846f2..a0f9ef7 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -5,9 +5,9 @@ name: Java CI with Maven on: push: - branches: [ master ] + branches: [ main ] pull_request: - branches: [ master ] + branches: [ main ] jobs: build: diff --git a/.github/workflows/sphinx.yml b/.github/workflows/sphinx.yml index c53fb56..3c77ef2 100644 --- a/.github/workflows/sphinx.yml +++ b/.github/workflows/sphinx.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Gradle uses: gradle/gradle-build-action@v2 - name: Run build with Gradle Wrapper - run: ./gradlew sphinx + run: gradle sphinx - name: Deploy uses: actions/configure-pages@v2 - name: Upload artifact diff --git a/parser/pom.xml b/parser/pom.xml index c91d898..e524cfd 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -237,6 +237,14 @@ </archive> </configuration> </plugin> + + <plugin> + <groupId>pl.project13.maven</groupId> + <artifactId>git-commit-id-plugin</artifactId> + <configuration> + <useNativeGit>true</useNativeGit> + </configuration> + </plugin> </plugins> <pluginManagement> diff --git a/sphinx/src/changelog.rst b/sphinx/src/changelog.rst index f807674..443ea35 100644 --- a/sphinx/src/changelog.rst +++ b/sphinx/src/changelog.rst @@ -8,6 +8,12 @@ Latest Changes since |JSQLPARSER_VERSION| ============================================================= + * **fix: Git Branch is MAIN** + + Andreas Reichel, 2022-12-26 + * **doc: Add basic HTML documentation based on Sphinx** + + Andreas Reichel, 2022-12-26 * **build: Add Spotless Plugin** Andreas Reichel, 2022-12-26 From 1d7a19895945f3d4c96023248f14b0d910b9d7dd Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Mon, 26 Dec 2022 23:43:32 +0700 Subject: [PATCH 06/16] doc: Update the readme --- README.md | 54 +++++++++++++++++++++++++++++++++++-- pom.xml | 17 +++++++++++- sphinx/src/changelog.rst | 12 +++++++++ sphinx/src/contribution.rst | 2 +- sphinx/src/index.rst | 2 +- sphinx/src/usage.rst | 4 +-- 6 files changed, 84 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 185566f..d3c4264 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,53 @@ -# SQL Language Frontend +# Java SQL:2016 Language Frontend -A Modern SQL frontend based on SQL16 with extensions for streaming, graph, rich types, etc, including parser, resolver, rewriters, etc. +##[Visit our Website.](https://manticore-projects.github.io/sql/index.html) + +![Build Status](https://github.com/manticore-projects/sql/actions/workflows/maven.yml/badge.svg) +[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.facebook.presto/presto-coresql/badge.svg)](http://maven-badges.herokuapp.com/maven-central/com.facebook.presto/presto-coresql) +[![Javadocs](https://www.javadoc.io/badge/com.facebook.presto/presto-coresql.svg)](https://www.javadoc.io/doc/com.facebook.presto/presto-coresql) + +A Modern SQL frontend based on the SQL16 Standard with extensions for streaming, graph, rich types. + + * Comprehensive support for statements: + + - QUERY: ``SELECT ...`` + - DML: ``INSERT ... INTO ...`` ``UPDATE ...`` ``MERGE ... INTO ...`` ``DELETE ... FROM ...`` + - DDL: ``CREATE ...`` ``ALTER ...`` ``DROP ...`` + + * Nested Expressions (e.g. Sub-Selects) + * ``WITH`` clauses + * De-Parser for a Statement AST Node, which writes a SQL from Java Objects + * Rewriter + * Linter + +## How to use it + +1) Maven Repository + + ```xml + <dependency> + <groupId>com.facebook.presto</groupId> + <artifactId>presto-coresql</artifactId> + <version>0.1</version> + </dependency> + ``` + +2) Parsing and Unparsing a SQL Statement + + ```java + import com.facebook.coresql.parser.AstNode; + import com.facebook.coresql.parser.ParserHelper; + import com.facebook.coresql.parser.Unparser; + + String sqlStr = "select 1 from dual where a=b"; + AstNode ast = ParserHelper.parseStatement(sqlStr); + String unparsedSqlStr = Unparser.unparse(ast); + ``` + +3) Compile latest version from source + + ```shell + git clone https://github.com/kaikalur/sql.git + cd sql + mvn install + ``` \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8eb71ee..f52bbe7 100644 --- a/pom.xml +++ b/pom.xml @@ -172,7 +172,22 @@ <formatAnnotations /> <!-- fixes formatting of type annotations, see below --> </java> </configuration> - </plugin> + </plugin> </plugins> + + <pluginManagement> + <plugins> + <plugin> + <groupId>pl.project13.maven</groupId> + <artifactId>git-commit-id-plugin</artifactId> + <configuration> + <useNativeGit>true</useNativeGit> + <generateGitPropertiesFile>true</generateGitPropertiesFile> + <skip>false</skip> + <runOnlyOnce>true</runOnlyOnce> + </configuration> + </plugin> + </plugins> + </pluginManagement> </build> </project> diff --git a/sphinx/src/changelog.rst b/sphinx/src/changelog.rst index 443ea35..edb2416 100644 --- a/sphinx/src/changelog.rst +++ b/sphinx/src/changelog.rst @@ -8,6 +8,18 @@ Latest Changes since |JSQLPARSER_VERSION| ============================================================= + * **fix: Try using native GIT** + + Andreas Reichel, 2022-12-26 + * **fix: Try using native GIT** + + Andreas Reichel, 2022-12-26 + * **fix: Gradle Wrapper is not needed** + + Andreas Reichel, 2022-12-26 + * **fix: Gradle Wrapper is needed** + + Andreas Reichel, 2022-12-26 * **fix: Git Branch is MAIN** Andreas Reichel, 2022-12-26 diff --git a/sphinx/src/contribution.rst b/sphinx/src/contribution.rst index dc547b4..e0b334f 100644 --- a/sphinx/src/contribution.rst +++ b/sphinx/src/contribution.rst @@ -32,7 +32,7 @@ When starting afresh, clone the **Java SQL:2016 Parser** from the `GitHub` repos .. code-block:: Bash - git clone https://github.com/kaikalur/sql.git + git clone https://github.com/prestodb/sql.git cd sql git branch <new-branch> diff --git a/sphinx/src/index.rst b/sphinx/src/index.rst index 1e2ae8f..aed1377 100644 --- a/sphinx/src/index.rst +++ b/sphinx/src/index.rst @@ -14,7 +14,7 @@ Java SQL:2016 Parser Library .. image:: https://maven-badges.herokuapp.com/maven-central/com.facebook.presto/presto-coresql/badge.svg :alt: Maven Repo -.. image:: https://github.com/kaikalur/sql/actions/workflows/maven.yml/badge.svg +.. image:: https://github.com/prestodb/sql/actions/workflows/maven.yml/badge.svg :alt: Maven Build Status .. image:: https://www.javadoc.io/badge/com.facebook.presto/presto-coresql.svg diff --git a/sphinx/src/usage.rst b/sphinx/src/usage.rst index 12df977..f2b9ffa 100644 --- a/sphinx/src/usage.rst +++ b/sphinx/src/usage.rst @@ -13,7 +13,7 @@ You will need to have ``JDK 8`` or ``JDK 11`` installed. .. code-block:: shell - git clone https://github.com/kaikalur/sql.git + git clone https://github.com/prestodb/sql.git cd sql mvn install @@ -21,7 +21,7 @@ You will need to have ``JDK 8`` or ``JDK 11`` installed. .. code-block:: shell - git clone https://github.com/kaikalur/sql.git + git clone https://github.com/prestodb/sql.git cd sql gradle build From 24ddd02e68c8658c7285302de9be6c65dc4d59a3 Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Tue, 27 Dec 2022 16:37:06 +0700 Subject: [PATCH 07/16] style: Tune the Eclipse Formatter Configuration Update the Line Wrapping Options for Function and Array Parameters. Tweak the Eclipse Formatter Configuration to match the Airlift Checkstyle rules precisely. Now, calling `mvn spotless:apply` will guarantee compliance with Airlift style. --- README.md | 60 +- config/eclipse-formatter/eclipse-airlift.xml | 686 ++++++++++-------- .../facebook/coresql/parser/TestKeywords.java | 15 +- .../coresql/parser/TestSqlParser.java | 28 +- .../manticore/jsqlformatter/CommentMap.java | 29 +- .../jsqlformatter/SimpleFileTest.java | 3 +- .../jsqlformatter/StandardFileTest.java | 11 +- .../manticore/jsqlformatter/TestUtils.java | 3 +- .../coresql/rewriter/TestOrderByRewriter.java | 59 +- 9 files changed, 547 insertions(+), 347 deletions(-) diff --git a/README.md b/README.md index d3c4264..830bad3 100644 --- a/README.md +++ b/README.md @@ -8,46 +8,46 @@ A Modern SQL frontend based on the SQL16 Standard with extensions for streaming, graph, rich types. - * Comprehensive support for statements: + * Comprehensive support for statements: - - QUERY: ``SELECT ...`` - - DML: ``INSERT ... INTO ...`` ``UPDATE ...`` ``MERGE ... INTO ...`` ``DELETE ... FROM ...`` - - DDL: ``CREATE ...`` ``ALTER ...`` ``DROP ...`` + - QUERY: ``SELECT ...`` + - DML: ``INSERT ... INTO ...`` ``UPDATE ...`` ``MERGE ... INTO ...`` ``DELETE ... FROM ...`` + - DDL: ``CREATE ...`` ``ALTER ...`` ``DROP ...`` - * Nested Expressions (e.g. Sub-Selects) - * ``WITH`` clauses - * De-Parser for a Statement AST Node, which writes a SQL from Java Objects - * Rewriter - * Linter + * Nested Expressions (e.g. Sub-Selects) + * ``WITH`` clauses + * De-Parser for a Statement AST Node, which writes a SQL from Java Objects + * Rewriter + * Linter ## How to use it 1) Maven Repository - ```xml - <dependency> - <groupId>com.facebook.presto</groupId> - <artifactId>presto-coresql</artifactId> - <version>0.1</version> - </dependency> - ``` + ```xml + <dependency> + <groupId>com.facebook.presto</groupId> + <artifactId>presto-coresql</artifactId> + <version>0.1</version> + </dependency> + ``` 2) Parsing and Unparsing a SQL Statement - ```java - import com.facebook.coresql.parser.AstNode; - import com.facebook.coresql.parser.ParserHelper; - import com.facebook.coresql.parser.Unparser; - - String sqlStr = "select 1 from dual where a=b"; - AstNode ast = ParserHelper.parseStatement(sqlStr); - String unparsedSqlStr = Unparser.unparse(ast); - ``` + ```java + import com.facebook.coresql.parser.AstNode; + import com.facebook.coresql.parser.ParserHelper; + import com.facebook.coresql.parser.Unparser; + + String sqlStr = "select 1 from dual where a=b"; + AstNode ast = ParserHelper.parseStatement(sqlStr); + String unparsedSqlStr = Unparser.unparse(ast); + ``` 3) Compile latest version from source - ```shell - git clone https://github.com/kaikalur/sql.git - cd sql - mvn install - ``` \ No newline at end of file + ```shell + git clone https://github.com/kaikalur/sql.git + cd sql + mvn install + ``` diff --git a/config/eclipse-formatter/eclipse-airlift.xml b/config/eclipse-formatter/eclipse-airlift.xml index 1729d93..413beb2 100644 --- a/config/eclipse-formatter/eclipse-airlift.xml +++ b/config/eclipse-formatter/eclipse-airlift.xml @@ -1,291 +1,399 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> -<profiles version="12"> -<profile kind="CodeFormatterProfile" name="Airlift" version="12"> -<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/> -<setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="9999"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="33"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/> -<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/> -<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/> -<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/> -<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="33"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/> -<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/> -<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/> -<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="33"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/> -<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="9999"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/> -<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="33"/> -<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="33"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/> -<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="false"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/> -<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/> -<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/> -<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="true"/> -<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/> -</profile> +<profiles version="22"> + <profile kind="CodeFormatterProfile" name="Airlift" version="22"> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.align_with_spaces" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/> + <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_before_code_block" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_switch_case_expressions" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="120"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/> + <setting id="org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_record_components" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="120"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_logical_operator" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_annotation_declaration_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_record_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_abstract_method" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.keep_enum_constant_declaration_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="64"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_switch_case_expressions" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_shift_operator" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/> + <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_code_block" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="18"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_type_parameters" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_loops" value="16"/> + <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_switch_case_arrow_operator" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_enum_constant" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.text_block_indentation" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_module_statements" value="16"/> + <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_permitted_types" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain" value="64"/> + <setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_type_annotations" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="48"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_assertion_message_operator" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines" value="2147483647"/> + <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/> + <setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="33"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_not_operator" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_type_arguments" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_package" value="49"/> + <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_record_header" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.indent_tag_description" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_constructor" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_string_concatenation" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_shift_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_shift_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_record_components" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_additive_operator" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_record_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_relational_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_logical_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_record_declaration" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="48"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_end_of_method_body" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.keep_switch_body_block_on_one_line" value="one_line_never"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_arrow" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="120"/> + <setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.keep_method_body_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_additive_operator" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_constructor" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_relational_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_record_declaration_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_lambda_body" value="end_of_line"/> + <setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="48"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="120"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_parameter" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="48"/> + <setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_record_declaration" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_switch_case_with_arrow_on_one_line" value="one_line_never"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_switch_case_with_colon" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_after_code_block" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="33"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="32"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_type" value="49"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_local_variable" value="49"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_between_different_tags" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_additive_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_field" value="49"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_conditional_operator" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_shift_operator" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.keep_code_block_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_record_components" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_record_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="33"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_assignment_operator" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_switch_case_with_arrow" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_annotations_on_method" value="49"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_record_constructor_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_record_declaration" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_assertion_message" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_logical_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="48"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_record_declaration" value="33"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_relational_operator" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="36"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line" value="false"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_logical_operator" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_statement_group_in_switch" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration" value="common_lines"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_permitted_types" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line" value="one_line_if_empty"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_code_block" value="0"/> + <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/> + <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/> + <setting id="org.eclipse.jdt.core.formatter.wrap_before_string_concatenation" value="true"/> + <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/> + <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/> + </profile> </profiles> diff --git a/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java b/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java index 4ebea2b..b418f69 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java +++ b/parser/src/test/java/com/facebook/coresql/parser/TestKeywords.java @@ -34,7 +34,9 @@ private static String getTokenImageWithoutQuotes(int kind) public void testReservedWords() { for (int i = MIN_RESERVED_WORD + 1; i < MAX_RESERVED_WORD; i++) { - Assertions.assertNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), getTokenImageWithoutQuotes(i) + " should be a reserved word."); + Assertions.assertNull( + parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), + getTokenImageWithoutQuotes(i) + " should be a reserved word."); } } @@ -43,7 +45,9 @@ public void testNonReservedWords() { // The last one is a weird one - "COUNT" so we ignore it for now. for (int i = MIN_NON_RESERVED_WORD + 1; i < MAX_NON_RESERVED_WORD - 1; i++) { - Assertions.assertNotNull(parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), getTokenImageWithoutQuotes(i) + " should NOT be a reserved word."); + Assertions.assertNotNull( + parseStatement("select 1 as " + getTokenImageWithoutQuotes(i) + ";"), + getTokenImageWithoutQuotes(i) + " should NOT be a reserved word."); } } @@ -51,8 +55,11 @@ public void testNonReservedWords() public void testNoExtraneousKeywords() { for (int i = MAX_RESERVED_WORD + 1; i < tokenImage.length; i++) { - // All string literal tokens start with quote and if it's a keyword first char is a letter (somewhat loosely). - Assertions.assertFalse(tokenImage[i].charAt(0) == '"' && Character.isLetter(tokenImage[i].charAt(1)), tokenImage[i] + " should be in one of the reserved word or non-reserved word group of tokens."); + // All string literal tokens start with quote and if it's a keyword first char is a letter (somewhat + // loosely). + Assertions.assertFalse( + tokenImage[i].charAt(0) == '"' && Character.isLetter(tokenImage[i].charAt(1)), + tokenImage[i] + " should be in one of the reserved word or non-reserved word group of tokens."); } } } diff --git a/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java b/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java index a3af32d..3fe5d83 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java +++ b/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java @@ -37,7 +37,26 @@ public class TestSqlParser { public static Stream<String> sqlStrings() { - List<String> sqlStrings = Arrays.asList("use a.b;", " SELECT 1;", "SELECT a FROM T;", "SELECT a FROM T WHERE p1 > p2;", "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", "SELECT T.* FROM T JOIN W ON T.x = W.x;", "SELECT NULL;", "SELECT ARRAY[x] FROM T;", "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", "SELECT\n" + " CAST(MAP() AS map<bigint,array<boolean>>) AS \"bool_tensor_features\";", "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", "SELECT abs, 2 as abs;", "SELECT sqrt(x), power(y, 5), myFunction('a') FROM T;", "SELECT concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat('1','2'),'3'),'4'),'5'),'6'),'7'),'8'),'9'),'10'),'11'),'12'),'13'),'14'),'15'),'16'),'17'),'18'),'19'),'20'),'21'),col1 FROM tbl t1;"); + List<String> sqlStrings = Arrays.asList( + "use a.b;", + " SELECT 1;", + "SELECT a FROM T;", + "SELECT a FROM T WHERE p1 > p2;", + "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", + "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", + "SELECT T.* FROM T JOIN W ON T.x = W.x;", + "SELECT NULL;", + "SELECT ARRAY[x] FROM T;", + "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", + "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", + "SELECT\n" + " CAST(MAP() AS map<bigint,array<boolean>>) AS \"bool_tensor_features\";", + "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", + "SELECT abs, 2 as abs;", + "SELECT sqrt(x), power(y, 5), myFunction('a') FROM T;", + "SELECT concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat('1','2'),'3'),'4'),'5'),'6'),'7'),'8'),'9'),'10'),'11'),'12'),'13'),'14'),'15'),'16'),'17'),'18'),'19'),'20'),'21'),col1 FROM tbl t1;"); return sqlStrings.stream(); } @@ -63,8 +82,7 @@ public void parseUnparseTest(String sqlStr) } @Test - public void sqlLogicTest() - throws IOException + public void sqlLogicTest() throws IOException { SqlLogicTest.execute(); } @@ -80,7 +98,9 @@ public void testGetOperator() @Test public void testGetFunctionName() { - Assertions.assertEquals(parseExpression("SQRT(10)").GetFunctionName(), tokenImage[SQRT].substring(1, tokenImage[SQRT].length() - 1)); + Assertions.assertEquals( + parseExpression("SQRT(10)").GetFunctionName(), + tokenImage[SQRT].substring(1, tokenImage[SQRT].length() - 1)); Assertions.assertEquals("POW", parseExpression("POW(x, 2)").GetFunctionName()); Assertions.assertEquals("PoW", parseExpression("PoW(x, 2)").GetFunctionName()); Assertions.assertEquals("MyFunction", parseExpression("MyFunction('a')").GetFunctionName()); diff --git a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java b/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java index fbf3531..078e18f 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java @@ -26,11 +26,14 @@ public class CommentMap { private static final Logger LOGGER = Logger.getLogger(CommentMap.class.getName()); - public static final Pattern COMMENT_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + public static final Pattern COMMENT_PATTERN = Pattern.compile( + "(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", + Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); public static final Pattern LINE_END_COMMENT_PATTERN = Pattern.compile("(\\/\\*.*\\\\*\\/\\s?[\\,\\)]?\\n)"); - private static final Pattern STRING_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + private static final Pattern STRING_PATTERN = Pattern + .compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); private static StringBuilder appendComment(StringBuilder builder, String keyword, String before, String after) { @@ -50,16 +53,16 @@ public CommentMap(String sqlStr) int end = matcher.end(0); if (!STRING_PATTERN.matcher(group).matches()) { -// if (OracleHint.isHintMatch(group)) -// LOGGER.log(Level.FINE, "Oracle hint {0}", group); -// else { +// if (OracleHint.isHintMatch(group)) +// LOGGER.log(Level.FINE, "Oracle hint {0}", group); +// else { Comment comment = new Comment(start, group); if (start == 0 || (sqlStr.charAt(start - 1) == '\n' && sqlStr.charAt(end - 1) == '\n')) { comment.newLine = true; comment.extraNewLine = start > 1 && sqlStr.charAt(start - 2) == '\n'; } put(comment.absolutePosition, comment); -// } +// } } } @@ -79,7 +82,10 @@ public CommentMap(String sqlStr) comment.relativePosition = relativePosition - totalCommentsLength; totalCommentsLength += comment.text.replaceAll("\\s", "").length(); - LOGGER.log(Level.FINE, "Found comment {0} at Position {1} (absolute) {2} (relative).", new Object[] {comment.text, comment.absolutePosition, comment.relativePosition}); + LOGGER.log( + Level.FINE, + "Found comment {0} at Position {1} (absolute) {2} (relative).", + new Object[] {comment.text, comment.absolutePosition, comment.relativePosition}); } } @@ -144,11 +150,13 @@ else if (!c.matches("\\w")) { break; } - if (ansiStarted < 0 && position + 2 <= sqlStrWithoutComments.length() && sqlStrWithoutComments.substring(position, position + 2).matches("\u001B\\[")) { + if (ansiStarted < 0 && position + 2 <= sqlStrWithoutComments.length() && sqlStrWithoutComments + .substring(position, position + 2).matches("\u001B\\[")) { ansiStarted = position; } - if (ansiStarted >= 0 && sqlStrWithoutComments.substring(ansiStarted, position + 1).matches("\u001B\\[[;\\d]*[ -/]*[@-~]")) { + if (ansiStarted >= 0 && sqlStrWithoutComments.substring(ansiStarted, position + 1) + .matches("\u001B\\[[;\\d]*[ -/]*[@-~]")) { ansiStarted = -1; } @@ -163,7 +171,8 @@ else if (!c.matches("\\w")) { } if (ansiStarted < 0) { - relativePosition = sqlStrWithoutComments.substring(0, position + 1).replaceAll("\u001B\\[[;\\d]*[ -/]*[@-~]|\\s", "").length(); + relativePosition = sqlStrWithoutComments.substring(0, position + 1) + .replaceAll("\u001B\\[[;\\d]*[ -/]*[@-~]|\\s", "").length(); } } } diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java index ffb07d1..b3ba3bd 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java @@ -39,7 +39,8 @@ public static Stream<Entry<SQLKeyEntry, String>> getSqlMap() String line; String k = ""; - try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader)) { + try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( + fileReader)) { while ((line = bufferedReader.readLine()) != null) { if (!start && line.startsWith("--") && !line.startsWith("-- @")) { k = line.substring(3).trim().toUpperCase(); diff --git a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java index f1afed6..afd2a7a 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java @@ -34,7 +34,9 @@ */ public class StandardFileTest { - public static final Pattern COMMENT_PATTERN = Pattern.compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + public static final Pattern COMMENT_PATTERN = Pattern.compile( + "(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", + Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/standard"; @@ -61,7 +63,8 @@ public static Stream<Entry<SQLKeyEntry, String>> getSqlMap() String line; String k = ""; - try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(fileReader)) { + try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( + fileReader)) { while ((line = bufferedReader.readLine()) != null) { if (!start && line.startsWith("--") && !line.startsWith("-- @")) { k = line.substring(3).trim().toUpperCase(); @@ -93,7 +96,8 @@ public String buildSqlString(final String originalSql, boolean laxDeparsingCheck { String sql = COMMENT_PATTERN.matcher(originalSql).replaceAll(""); if (laxDeparsingCheck) { - String s = sql.replaceAll("\\n\\s*;", ";").replaceAll("\\s+", " ").replaceAll("\\s*([!/,()=+\\-*|\\]<>])\\s*", "$1").toLowerCase().trim(); + String s = sql.replaceAll("\\n\\s*;", ";").replaceAll("\\s+", " ") + .replaceAll("\\s*([!/,()=+\\-*|\\]<>])\\s*", "$1").toLowerCase().trim(); return !s.endsWith(";") ? s + ";" : s; } else { @@ -103,7 +107,6 @@ public String buildSqlString(final String originalSql, boolean laxDeparsingCheck /** * Test parsing the provided examples - * */ @DisplayName("Standard SQL File Test") @ParameterizedTest(name = "{index} {0}: {1}") diff --git a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java b/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java index 5e27cdf..c2c04c8 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java @@ -27,7 +27,8 @@ public final class TestUtils private static final Pattern SQL_SANITATION_PATTERN = Pattern.compile("(\\s+)", Pattern.MULTILINE); // Assure SPACE around Syntax Characters - private static final Pattern SQL_SANITATION_PATTERN2 = Pattern.compile("\\s*([!/,()=+\\-*|\\]<>:])\\s*", Pattern.MULTILINE); + private static final Pattern SQL_SANITATION_PATTERN2 = Pattern + .compile("\\s*([!/,()=+\\-*|\\]<>:])\\s*", Pattern.MULTILINE); private TestUtils() {} diff --git a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java index 93ab1dd..744b690 100644 --- a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java +++ b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java @@ -28,12 +28,63 @@ public class TestOrderByRewriter { private static final String[] STATEMENTS_THAT_DONT_NEED_REWRITE = new String[] { // False Positive - "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;", "SELECT dealer_id, sales OVER (PARTITION BY dealer_id ORDER BY sales);", "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t ORDER BY t.date LIMIT 100);", "SELECT (true or false) and false;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;", + "SELECT dealer_id, sales OVER (PARTITION BY dealer_id ORDER BY sales);", + "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t ORDER BY t.date LIMIT 100);", + "SELECT (true or false) and false;", // True Negative - "SELECT * FROM T ORDER BY y;", "SELECT * FROM T ORDER BY y LIMIT 10;", "use a.b;", " SELECT 1;", "SELECT a FROM T;", "SELECT a FROM T WHERE p1 > p2;", "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", "SELECT T.* FROM T JOIN W ON T.x = W.x;", "SELECT NULL;", "SELECT ARRAY[x] FROM T;", "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", "SELECT\n" + " CAST(MAP() AS map<bigint,array<boolean>>) AS \"bool_tensor_features\";", "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", "SELECT abs, 2 as abs;", - }; + "SELECT * FROM T ORDER BY y;", + "SELECT * FROM T ORDER BY y LIMIT 10;", + "use a.b;", + " SELECT 1;", + "SELECT a FROM T;", + "SELECT a FROM T WHERE p1 > p2;", + "SELECT a, b, c FROM T WHERE c1 < c2 and c3 < c4;", + "SELECT CASE a WHEN IN ( 1 ) THEN b ELSE c END AS x, b, c FROM T WHERE c1 < c2 and c3 < c4;", + "SELECT T.* FROM T JOIN W ON T.x = W.x;", + "SELECT NULL;", + "SELECT ARRAY[x] FROM T;", + "SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", + "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", + "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", + "SELECT\n" + " CAST(MAP() AS map<bigint,array<boolean>>) AS \"bool_tensor_features\";", + "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", + "SELECT abs, 2 as abs;"}; - private static final ImmutableMap<String, String> STATEMENT_TO_REWRITTEN_STATEMENT = new ImmutableMap.Builder<String, String>().put("CREATE TABLE blah AS SELECT * FROM T ORDER BY y;", "CREATE TABLE blah AS SELECT * FROM T;").put("INSERT INTO blah SELECT * FROM T ORDER BY y;", "INSERT INTO blah SELECT * FROM T;").put("CREATE TABLE blah AS SELECT * FROM T ORDER BY SUM(payment);", "CREATE TABLE blah AS SELECT * FROM T;").put("INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t ORDER BY t.date) LIMIT 10;", "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t) LIMIT 10;").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM T) ORDER BY z;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM T);").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x));", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T));").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y) ORDER BY z;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10));").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y LIMIT 10) ORDER BY z;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T) ORDER BY y LIMIT 10);").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y) ORDER BY z LIMIT 10;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T)) ORDER BY z LIMIT 10;").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y) ORDER BY z LIMIT 10;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10)) ORDER BY z LIMIT 10;").put("CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10) ORDER BY z;", "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10);").build(); + private static final ImmutableMap<String, String> STATEMENT_TO_REWRITTEN_STATEMENT = new ImmutableMap.Builder<String, String>() + .put("CREATE TABLE blah AS SELECT * FROM T ORDER BY y;", "CREATE TABLE blah AS SELECT * FROM T;") + .put("INSERT INTO blah SELECT * FROM T ORDER BY y;", "INSERT INTO blah SELECT * FROM T;") + .put("CREATE TABLE blah AS SELECT * FROM T ORDER BY SUM(payment);", "CREATE TABLE blah AS SELECT * FROM T;") + .put( + "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t ORDER BY t.date) LIMIT 10;", + "INSERT INTO blah SELECT * FROM (SELECT t.date, t.code, t.qty FROM sales AS t) LIMIT 10;") + .put( + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM T) ORDER BY z;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM T);") + .put( + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x));", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T));") + .put( + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y) ORDER BY z;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10));") + .put( + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y LIMIT 10) ORDER BY z;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T) ORDER BY y LIMIT 10);") + .put( + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y) ORDER BY z LIMIT 10;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T)) ORDER BY z LIMIT 10;") + .put( + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T) ORDER BY y LIMIT 10) ORDER BY z LIMIT 10;") + .put( + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y) ORDER BY z LIMIT 10;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10)) ORDER BY z LIMIT 10;") + .put( + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10) ORDER BY z;", + "CREATE TABLE blah AS SELECT * FROM (SELECT * FROM (SELECT foo FROM T ORDER BY x LIMIT 10) ORDER BY y LIMIT 10);") + .build(); private void assertStatementUnchanged(String originalStatement) { From 4376245520cbf9d69295c0fb3c949ce8d2aa9011 Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Tue, 27 Dec 2022 19:54:25 +0700 Subject: [PATCH 08/16] test: Add many more Real Life SQL statements Add plenty of SQL samples Separate succeeding samples from failing samples so that failures will not block the build Let the tests show the Statement and the Parser Error Further tune the Eclipse Formatter since Airlift is really strict Simplify some Regular Expressions --- config/eclipse-formatter/eclipse-airlift.xml | 4 +- parser/pom.xml | 24 +- .../coresql/parser/TestSqlParser.java | 4 +- .../manticore/jsqlformatter/CommentMap.java | 44 +- .../manticore/jsqlformatter/SQLKeyEntry.java | 1 - .../jsqlformatter/SimpleFileTest.java | 59 ++- .../jsqlformatter/SimpleFileTestIT.java | 38 ++ .../jsqlformatter/StandardFileTest.java | 76 ++- .../jsqlformatter/StandardFileTestIT.java | 48 ++ .../manticore/jsqlformatter/TestUtils.java | 35 +- .../ignore/BracketQuotationTest.sql | 57 +++ .../ignore/H2OrderedAggregateTest.sql | 45 ++ .../jsqlformatter/ignore/MeanChallenges.sql | 74 +++ .../jsqlformatter/ignore/MsSqlServerTest.sql | 44 ++ .../jsqlformatter/ignore/MySQLTest.sql | 45 ++ .../jsqlformatter/simple/SQLFileTest.sql | 12 - .../jsqlformatter/simple/SQLFileTest_1.sql | 29 ++ .../simple/SQLFileTest_short.sql | 17 + .../simpleIT/EmptyStatementTest.sql | 13 + .../jsqlformatter/simpleIT/SQLFileTest.sql | 96 ++++ .../jsqlformatter/simpleIT/SQLFileTest_1.sql | 419 +++++++++++++++ .../simpleIT/SQLFileTest_short.sql | 26 + .../standard/StandardDeleteTest.sql | 22 + .../standard/StandardInsertTest.sql | 30 ++ .../standard/StandardSelectTest.sql | 232 ++++++++- .../standard/StandardUpdateTest.sql | 76 +++ .../standardIT/H2OrderedAggregateTest.sql | 45 ++ .../standardIT/MeanChallenges.sql | 74 +++ .../standardIT/StandardAlterTest.sql | 74 +++ .../standardIT/StandardCommentTest.sql | 41 ++ .../standardIT/StandardCreateIndexTest.sql | 57 +++ .../standardIT/StandardCreateTableTest.sql | 117 +++++ .../standardIT/StandardCreateViewTest.sql | 100 ++++ .../standardIT/StandardDeleteTest.sql | 103 ++++ .../standardIT/StandardInsertTest.sql | 58 +++ .../standardIT/StandardMergeTest.sql | 229 +++++++++ .../standardIT/StandardOffsetLimitTest.sql | 44 ++ .../standardIT/StandardSelectTest.sql | 476 ++++++++++++++++++ .../standardIT/StandardTruncateTest.sql | 21 + .../standardIT/StandardUpdateTest.sql | 130 +++++ .../standardIT/StandardValueStatementTest.sql | 72 +++ pom.xml | 1 - .../coresql/rewriter/TestOrderByRewriter.java | 3 - 43 files changed, 3065 insertions(+), 150 deletions(-) create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTestIT.java create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/StandardFileTestIT.java create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/ignore/BracketQuotationTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/ignore/H2OrderedAggregateTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/ignore/MeanChallenges.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/ignore/MsSqlServerTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/ignore/MySQLTest.sql delete mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest_1.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest_short.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/EmptyStatementTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest_1.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest_short.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardDeleteTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardInsertTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardUpdateTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/H2OrderedAggregateTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/MeanChallenges.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardAlterTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCommentTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateIndexTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateTableTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateViewTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardDeleteTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardInsertTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardMergeTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardOffsetLimitTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardSelectTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardTruncateTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardUpdateTest.sql create mode 100644 parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardValueStatementTest.sql diff --git a/config/eclipse-formatter/eclipse-airlift.xml b/config/eclipse-formatter/eclipse-airlift.xml index 413beb2..fdea458 100644 --- a/config/eclipse-formatter/eclipse-airlift.xml +++ b/config/eclipse-formatter/eclipse-airlift.xml @@ -277,7 +277,7 @@ <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_relational_operator" value="0"/> <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="48"/> - <setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/> + <setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="0"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_after_additive_operator" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/> @@ -357,7 +357,7 @@ <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/> <setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/> - <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="36"/> + <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="32"/> <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/> <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_last_class_body_declaration" value="0"/> <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/> diff --git a/parser/pom.xml b/parser/pom.xml index e524cfd..030ee1d 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -199,7 +199,25 @@ <plugin> <artifactId>maven-failsafe-plugin</artifactId> - <version>2.22.2</version> + <version>3.0.0-M7</version> + <configuration> + <properties> + <configurationParameters> + junit.jupiter.conditions.deactivate = * + junit.jupiter.extensions.autodetection.enabled = true + junit.jupiter.testinstance.lifecycle.default = per_class + junit.jupiter.execution.parallel.enabled = true + </configurationParameters> + </properties> + </configuration> + <executions> + <execution> + <id>integration-test</id> + <goals> + <goal>integration-test</goal> + </goals> + </execution> + </executions> </plugin> <plugin> @@ -207,7 +225,7 @@ <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M7</version> <configuration combine.children="append"> - <trimStackTrace>false</trimStackTrace> + <trimStackTrace>true</trimStackTrace> <includes> <include>**/*.java</include> <include>target/**/*.java</include> @@ -216,6 +234,8 @@ <excludes> <exclude>**/*jmhTest*.java</exclude> <exclude>**/*jmhType*.java</exclude> + <!-- those shall be handled by the FAIL SAFE plugin only --> + <exclude>**/*TestIT.java</exclude> </excludes> </configuration> </plugin> diff --git a/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java b/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java index 3fe5d83..4d39bd1 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java +++ b/parser/src/test/java/com/facebook/coresql/parser/TestSqlParser.java @@ -69,7 +69,7 @@ private AstNode parse(String sql) @MethodSource("sqlStrings") public void smokeTest(String sqlStr) { - Assertions.assertNotNull(parse(sqlStr)); + Assertions.assertNotNull(parse(sqlStr), "Failed SQL:\n" + sqlStr); } @ParameterizedTest(name = "SQL {0}") @@ -78,7 +78,7 @@ public void parseUnparseTest(String sqlStr) { AstNode ast = parse(sqlStr); Assertions.assertNotNull(ast); - Assertions.assertEquals(sqlStr.trim(), unparse(ast).trim()); + Assertions.assertEquals(sqlStr.trim(), unparse(ast).trim(), "Failed SQL:\n" + sqlStr); } @Test diff --git a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java b/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java index 078e18f..9a847e6 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java @@ -25,33 +25,26 @@ public class CommentMap extends LinkedHashMap<Integer, Comment> { private static final Logger LOGGER = Logger.getLogger(CommentMap.class.getName()); - public static final Pattern COMMENT_PATTERN = Pattern.compile( - "(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", + "'[^']*+'|\"[^\"]*+\"|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); - - public static final Pattern LINE_END_COMMENT_PATTERN = Pattern.compile("(\\/\\*.*\\\\*\\/\\s?[\\,\\)]?\\n)"); - + public static final Pattern LINE_END_COMMENT_PATTERN = Pattern.compile("(/\\*.*\\\\*/\\s?[,)]?\\n)"); private static final Pattern STRING_PATTERN = Pattern - .compile("(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); + .compile("'[^']*+'|\"[^\"]*+\"", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); - private static StringBuilder appendComment(StringBuilder builder, String keyword, String before, String after) + private static StringBuilder appendComment(StringBuilder builder, String keyword, String after) { - builder.append(before).append(keyword).append(after); + builder.append("").append(keyword).append(after); return builder; } public CommentMap(String sqlStr) { Matcher matcher = COMMENT_PATTERN.matcher(sqlStr); - int i = 0; while (matcher.find()) { - i++; - String group = matcher.group(0); int start = matcher.start(0); int end = matcher.end(0); - if (!STRING_PATTERN.matcher(group).matches()) { // if (OracleHint.isHintMatch(group)) // LOGGER.log(Level.FINE, "Oracle hint {0}", group); @@ -65,23 +58,19 @@ public CommentMap(String sqlStr) // } } } - int absolutePosition = 0; int relativePosition = 0; int totalCommentsLength = 0; - for (Comment comment : values()) { while (absolutePosition < comment.absolutePosition) { char c = sqlStr.charAt(absolutePosition); if (!Character.isWhitespace(c)) { relativePosition++; } - absolutePosition++; } comment.relativePosition = relativePosition - totalCommentsLength; totalCommentsLength += comment.text.replaceAll("\\s", "").length(); - LOGGER.log( Level.FINE, "Found comment {0} at Position {1} (absolute) {2} (relative).", @@ -92,18 +81,14 @@ public CommentMap(String sqlStr) public StringBuilder insertComments(StringBuilder sqlStrWithoutComments) { StringBuilder builder = new StringBuilder(); - Iterator<Comment> commentIteraror = values().iterator(); if (commentIteraror.hasNext()) { Comment next = commentIteraror.next(); - int relativePosition = 0; int ansiStarted = -1; boolean wasLastComment = false; - for (int position = 0; position < sqlStrWithoutComments.length(); position++) { String c = sqlStrWithoutComments.substring(position, position + 1); - if (ansiStarted < 0) { while (next.relativePosition <= relativePosition) { if (next.extraNewLine) { @@ -115,14 +100,12 @@ else if (next.newLine && builder.length() > 1 && builder.charAt(builder.length() else if (!c.matches("\\w")) { builder.append(" "); } - if (!next.newLine && next.text.startsWith("--")) { - appendComment(builder, next.text.trim().replaceFirst("--\\s?", "/* "), "", " */"); + appendComment(builder, next.text.trim().replaceFirst("--\\s?", "/* "), " */"); } else { - appendComment(builder, next.text, "", ""); + appendComment(builder, next.text, ""); } - if (commentIteraror.hasNext()) { next = commentIteraror.next(); } @@ -132,7 +115,6 @@ else if (!c.matches("\\w")) { } } } - if (wasLastComment) { String remaining = sqlStrWithoutComments.substring(position); if (next.newLine) { @@ -149,17 +131,14 @@ else if (!c.matches("\\w")) { } break; } - if (ansiStarted < 0 && position + 2 <= sqlStrWithoutComments.length() && sqlStrWithoutComments .substring(position, position + 2).matches("\u001B\\[")) { ansiStarted = position; } - if (ansiStarted >= 0 && sqlStrWithoutComments.substring(ansiStarted, position + 1) .matches("\u001B\\[[;\\d]*[ -/]*[@-~]")) { ansiStarted = -1; } - if (position > 0 && c.equals("\n")) { int lastBreak = builder.lastIndexOf("\n"); if (lastBreak < 0 || builder.substring(lastBreak).trim().length() > 0) { @@ -169,29 +148,22 @@ else if (!c.matches("\\w")) { else { builder.append(c); } - if (ansiStarted < 0) { relativePosition = sqlStrWithoutComments.substring(0, position + 1) .replaceAll("\u001B\\[[;\\d]*[ -/]*[@-~]|\\s", "").length(); } } } - Matcher matcher = LINE_END_COMMENT_PATTERN.matcher(builder); ArrayList<Object[]> matches = new ArrayList<>(); - - int i = 0; int maxPosition = 0; while (matcher.find()) { - i++; int start = matcher.start(0); - int lastLineBreak = builder.lastIndexOf("\n", start); int pos = start - lastLineBreak; maxPosition = Integer.max(maxPosition, pos); matches.add(new Object[] {start, pos}); } - int subIndent = maxPosition / 4 + (maxPosition % 4 > 0 ? 1 : 0); int totalInsertedChars = 0; for (Object[] match : matches) { @@ -202,7 +174,6 @@ else if (!c.matches("\\w")) { totalInsertedChars++; } } - return builder; } @@ -212,7 +183,6 @@ public int getLength() for (Comment c : values()) { length += c.text.length(); } - return length; } } diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java b/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java index c337dc7..c7fe833 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java @@ -11,7 +11,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.manticore.jsqlformatter; import java.io.File; diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java index b3ba3bd..15f2861 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java @@ -30,41 +30,46 @@ public class SimpleFileTest public static Stream<Entry<SQLKeyEntry, String>> getSqlMap() { LinkedHashMap<SQLKeyEntry, String> sqlMap = new LinkedHashMap<>(); - for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { + extractIntoMap(sqlMap, file); + } + return sqlMap.entrySet().stream(); + } + + protected static void extractIntoMap(LinkedHashMap<SQLKeyEntry, String> sqlMap, File file) + { + try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( + fileReader)) { boolean start = false; boolean end; - StringBuilder stringBuilder = new StringBuilder(); String line; String k = ""; - - try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( - fileReader)) { - while ((line = bufferedReader.readLine()) != null) { - if (!start && line.startsWith("--") && !line.startsWith("-- @")) { - k = line.substring(3).trim().toUpperCase(); - } - - start = start || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; - end = start && line.trim().endsWith(";"); - - if (start) { - stringBuilder.append(line).append("\n"); - } - - if (end) { - sqlMap.put(new SQLKeyEntry(file, k), stringBuilder.toString().trim()); - stringBuilder.setLength(0); - start = false; - } + boolean afterHeader = false; + while ((line = bufferedReader.readLine()) != null) { + if (!afterHeader && line.startsWith("--")) { + continue; + } + else { + afterHeader = true; + } + if (!start && line.startsWith("--") && !line.startsWith("-- @")) { + k = line.substring(3).trim().toUpperCase(); + } + start = start || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; + end = start && line.trim().endsWith(";"); + if (start) { + stringBuilder.append(line).append("\n"); + } + if (end) { + sqlMap.put(new SQLKeyEntry(file, k), stringBuilder.toString().trim()); + stringBuilder.setLength(0); + start = false; } - } - catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); } } - - return sqlMap.entrySet().stream(); + catch (IOException ex) { + LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); + } } } diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTestIT.java b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTestIT.java new file mode 100644 index 0000000..0584977 --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTestIT.java @@ -0,0 +1,38 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.manticore.jsqlformatter; + +import java.io.File; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.stream.Stream; + +/** + * This Class is used for Fail Safe Integration Tests only + * It will test Real Life SQLs not supported by the Parser yet + */ +public class SimpleFileTestIT + extends SimpleFileTest +{ + public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/simpleIT"; + + public static Stream<Map.Entry<SQLKeyEntry, String>> getSqlMap() + { + LinkedHashMap<SQLKeyEntry, String> sqlMap = new LinkedHashMap<>(); + for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { + extractIntoMap(sqlMap, file); + } + return sqlMap.entrySet().stream(); + } +} diff --git a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java index afd2a7a..9aa52b5 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java @@ -13,6 +13,7 @@ */ package com.manticore.jsqlformatter; +import com.facebook.coresql.parser.ParseException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -35,11 +36,9 @@ public class StandardFileTest { public static final Pattern COMMENT_PATTERN = Pattern.compile( - "(?:'[^']*+')|(?:\\\"[^\\\"]*+\\\")" + "|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", + "'[^']*+'|\"[^\"]*+\"|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); - public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/standard"; - public static final FilenameFilter FILENAME_FILTER = new FilenameFilter() { @Override @@ -48,60 +47,52 @@ public boolean accept(File dir, String name) return name.toLowerCase().endsWith(".sql"); } }; - public static final Logger LOGGER = Logger.getLogger(StandardFileTest.class.getName()); public static Stream<Entry<SQLKeyEntry, String>> getSqlMap() { LinkedHashMap<SQLKeyEntry, String> sqlMap = new LinkedHashMap<>(); - for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { - boolean start = false; - boolean end; - - StringBuilder stringBuilder = new StringBuilder(); - String line; - String k = ""; - try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( fileReader)) { - while ((line = bufferedReader.readLine()) != null) { - if (!start && line.startsWith("--") && !line.startsWith("-- @")) { - k = line.substring(3).trim().toUpperCase(); - } - - start = start || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; - end = start && line.trim().endsWith(";"); - - if (start) { - stringBuilder.append(line).append("\n"); - } - - if (end) { - sqlMap.put(new SQLKeyEntry(file, k), stringBuilder.toString().trim()); - stringBuilder.setLength(0); - start = false; - } - } + extractIntoMap(sqlMap, file, bufferedReader); } catch (IOException ex) { LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); } } - return sqlMap.entrySet().stream(); } - public String buildSqlString(final String originalSql, boolean laxDeparsingCheck) + protected static void extractIntoMap( + LinkedHashMap<SQLKeyEntry, String> sqlMap, File file, BufferedReader bufferedReader) throws IOException { - String sql = COMMENT_PATTERN.matcher(originalSql).replaceAll(""); - if (laxDeparsingCheck) { - String s = sql.replaceAll("\\n\\s*;", ";").replaceAll("\\s+", " ") - .replaceAll("\\s*([!/,()=+\\-*|\\]<>])\\s*", "$1").toLowerCase().trim(); - return !s.endsWith(";") ? s + ";" : s; - } - else { - return sql; + boolean start = false; + boolean end; + StringBuilder stringBuilder = new StringBuilder(); + String line; + String k = ""; + boolean afterHeader = false; + while ((line = bufferedReader.readLine()) != null) { + if (!afterHeader && line.startsWith("--")) { + continue; + } + else { + afterHeader = true; + } + if (!start && line.startsWith("--") && !line.startsWith("-- @")) { + k = line.substring(3).trim().toUpperCase(); + } + start = start || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; + end = start && line.trim().endsWith(";"); + if (start) { + stringBuilder.append(line).append("\n"); + } + if (end) { + sqlMap.put(new SQLKeyEntry(file, k), stringBuilder.toString().trim()); + stringBuilder.setLength(0); + start = false; + } } } @@ -111,12 +102,11 @@ public String buildSqlString(final String originalSql, boolean laxDeparsingCheck @DisplayName("Standard SQL File Test") @ParameterizedTest(name = "{index} {0}: {1}") @MethodSource("getSqlMap") - public void testParser(Entry<SQLKeyEntry, String> entry) + public void testParser(Entry<SQLKeyEntry, String> entry) throws ParseException { String expected = entry.getValue(); - if (expected.length() <= new CommentMap(expected).getLength()) { - LOGGER.warning("Skip empty statement, when found only comments: " + expected); + LOGGER.log(Level.WARNING, "Skip empty statement, when found only comments: {0}", expected); } else { TestUtils.assertParseAndUnparse(expected); diff --git a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTestIT.java b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTestIT.java new file mode 100644 index 0000000..52a6d13 --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTestIT.java @@ -0,0 +1,48 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.manticore.jsqlformatter; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.stream.Stream; + +/** + * This Class is used for Fail Safe Integration Tests only + * It will test Real Life SQLs not supported by the Parser yet + */ +public class StandardFileTestIT + extends StandardFileTest +{ + public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/standardIT"; + + public static Stream<Map.Entry<SQLKeyEntry, String>> getSqlMap() + { + LinkedHashMap<SQLKeyEntry, String> sqlMap = new LinkedHashMap<>(); + for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { + try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( + fileReader)) { + extractIntoMap(sqlMap, file, bufferedReader); + } + catch (IOException ex) { + LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); + } + } + return sqlMap.entrySet().stream(); + } +} diff --git a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java b/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java index c2c04c8..3cb5ac8 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java @@ -14,18 +14,20 @@ package com.manticore.jsqlformatter; import com.facebook.coresql.parser.AstNode; -import com.facebook.coresql.parser.ParserHelper; +import com.facebook.coresql.parser.ParseException; +import com.facebook.coresql.parser.SimpleCharStream; +import com.facebook.coresql.parser.SqlParser; +import com.facebook.coresql.parser.SqlParserTokenManager; import com.facebook.coresql.parser.Unparser; import org.junit.jupiter.api.Assertions; +import java.io.StringReader; import java.util.regex.Pattern; public final class TestUtils { private static final Pattern SQL_COMMENT_PATTERN = Pattern.compile("(--.*$)|(/\\*.*?\\*/)", Pattern.MULTILINE); - private static final Pattern SQL_SANITATION_PATTERN = Pattern.compile("(\\s+)", Pattern.MULTILINE); - // Assure SPACE around Syntax Characters private static final Pattern SQL_SANITATION_PATTERN2 = Pattern .compile("\\s*([!/,()=+\\-*|\\]<>:])\\s*", Pattern.MULTILINE); @@ -38,10 +40,8 @@ public static String buildSqlString(final String originalSql, boolean relaxed) if (relaxed) { // remove comments String sanitizedSqlStr = SQL_COMMENT_PATTERN.matcher(originalSql).replaceAll(""); - // redundant white space sanitizedSqlStr = SQL_SANITATION_PATTERN.matcher(sanitizedSqlStr).replaceAll(" "); - // assure spacing around Syntax Characters sanitizedSqlStr = SQL_SANITATION_PATTERN2.matcher(sanitizedSqlStr).replaceAll("$1"); return sanitizedSqlStr.trim().toLowerCase(); @@ -52,18 +52,31 @@ public static String buildSqlString(final String originalSql, boolean relaxed) } } + // re-implement this method since we want to catch the Error + public static AstNode parseStatement(String sql) throws ParseException + { + SqlParserTokenManager tokenManager = new SqlParserTokenManager( + new SimpleCharStream(new StringReader(sql), 1, 1)); + SqlParser parser = new SqlParser(tokenManager); + parser.direct_SQL_statement(); + return parser.getResult(); + } + public static void assertParseAndUnparse(String sqlStr, boolean relaxed) { String expectedSqlStr = buildSqlString(sqlStr, relaxed); - - AstNode ast = ParserHelper.parseStatement(sqlStr); - Assertions.assertNotNull(ast); + AstNode ast = null; + try { + ast = parseStatement(sqlStr); + } + catch (ParseException ex) { + Assertions.fail(ex.getLocalizedMessage() + "\n" + sqlStr); + } String actualSqlStr = buildSqlString(Unparser.unparse(ast), relaxed); - - Assertions.assertEquals(expectedSqlStr, actualSqlStr); + Assertions.assertEquals(expectedSqlStr, actualSqlStr, "Failed SQL:\n" + sqlStr); } - public static void assertParseAndUnparse(String sqlStr) + public static void assertParseAndUnparse(String sqlStr) throws ParseException { assertParseAndUnparse(sqlStr, true); } diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/ignore/BracketQuotationTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/BracketQuotationTest.sql new file mode 100644 index 0000000..5027d37 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/BracketQuotationTest.sql @@ -0,0 +1,57 @@ +-- +-- 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. +-- + +-- BRACKETS 1 +SELECT columnname +FROM [server-name\\server-instance]..schemaname.tablename +; + +-- BRACKETS 2 +SELECT columnname +FROM [server-name\\server-instance]..[schemaName].[table Name] +; + +-- BRACKETS 3 +SELECT columnname +FROM [server-name\\server-instance]..[schemaName].[table-Name] +; + +-- BRACKETS 4 +SELECT columnname +FROM [schemaName].[tableName] +; + +-- BRACKETS 5 +SELECT columnname +FROM schemaname.[tableName] +; + +-- BRACKETS 6 +SELECT columnname +FROM [schemaName].tablename +; + +-- READ INSTRUMENT TRANSACTIONS WITH COLLATERAL ONLY +SELECT a.* +FROM [cfe].[TRANSACTION] a + INNER JOIN cfe.instrument b + ON a.id_instrument = b.id_instrument +WHERE a.id_instrument >= ? + AND a.id_instrument <= ? + AND EXISTS ( SELECT 1 + FROM cfe.instrument_ref b + INNER JOIN cfe.instrument_collateral_hst c + ON b.id_instrument_ref = c.id_instrument_ref + WHERE b.id_instrument = a.id_instrument ) +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/ignore/H2OrderedAggregateTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/H2OrderedAggregateTest.sql new file mode 100644 index 0000000..9ef7f4e --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/H2OrderedAggregateTest.sql @@ -0,0 +1,45 @@ +-- +-- 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. +-- + +-- LISTAGG 1 +SELECT LISTAGG(NAME, ', ') WITHIN GROUP (ORDER BY ID) +; + + +-- LISTAGG 2 +SELECT LISTAGG(COALESCE(NAME, 'null'), ', ') WITHIN GROUP (ORDER BY ID) +; + + +-- LISTAGG 3 +/* Unsupported: SELECT LISTAGG(ID, ', ') WITHIN GROUP (ORDER BY ID) OVER (ORDER BY ID); */ +SELECT 1 +FROM dual +; + +-- ARRAY_AGG 1 +SELECT Array_Agg( name ) +; + + +-- ARRAY_AGG 2 +SELECT ARRAY_AGG(NAME ORDER BY ID) FILTER (WHERE NAME IS NOT NULL) +; + + +-- ARRAY_AGG 3 +/* SELECT ARRAY_AGG(ID ORDER BY ID) OVER (ORDER BY ID); */ +SELECT 1 +FROM dual +; \ No newline at end of file diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MeanChallenges.sql b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MeanChallenges.sql new file mode 100644 index 0000000..9a3b369 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MeanChallenges.sql @@ -0,0 +1,74 @@ +-- +-- 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. +-- + + +-- SELECT Date Ranges of available data +WITH p + AS (SELECT DISTINCT value_date + FROM risk.migration_data_v + WHERE (:1 IS NULL OR :2 ='' OR id_portfolio = Decode (:3 , '001', 'IFRS1', + '002', 'IFRS2', + '003', 'IFRS3', + '004', 'IFRS4', + '005', 'IFRS5', + '006', 'IFRS6', + :4 )) + AND value_date >= :5 + AND value_date <= :6 ), + ri + AS (SELECT a.id_risk_indicator + , Greatest((SELECT Min(value_date) + FROM p + WHERE value_date >= :7 ), (SELECT Max(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :8 )) min_ri_date + , Greatest((SELECT Min(value_date) + FROM p + WHERE value_date >= :9 ), (SELECT Min(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :10 )) min_ri_date_1 + , Least((SELECT Max(value_date) + FROM p + WHERE value_date <= :11 ), (SELECT Min(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :12 )) max_ri_date + , Least((SELECT Max(value_date) + FROM p + WHERE value_date <= :13 ), (SELECT Max(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :14 )) max_ri_date_1 + FROM risk.risk_indicator a + WHERE a.id_status = 'C' + AND a.id_risk_indicator_ref = (SELECT Max(id_risk_indicator_ref) + FROM risk.risk_indicator + WHERE id_status = 'C' + AND id_risk_indicator = a.id_risk_indicator) + AND ( ( :15 IS NULL + OR id_risk_indicator = :16 ) + )) +SELECT /*+parallel*/ ri.id_risk_indicator + , Min(p.value_date) "Min. Observation Date" + , Max(p.value_date) "Max. Observation Date" +FROM ri + , p +WHERE p.value_date >= Nvl(ri.min_ri_date, ri.min_ri_date_1) + AND p.value_date <= Nvl(ri.max_ri_date, ri.max_ri_date_1) +GROUP BY ri.id_risk_indicator +order by 1 +; + diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MsSqlServerTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MsSqlServerTest.sql new file mode 100644 index 0000000..088eb89 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MsSqlServerTest.sql @@ -0,0 +1,44 @@ +-- +-- 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. +-- + +-- DELETE INSTRUMENT ATTRIBUTE HST AFTER VALUE_DATE_P +DELETE a FROM cfe.instrument_attribute_hst2 a + INNER JOIN ( SELECT value_date + , posting_date + FROM cfe.execution + WHERE posting_date > ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) + OR ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) IS NULL ) b + ON a.value_date = b.value_date + AND b.posting_date = b.posting_date +; + +-- READ INSTRUMENT TRANSACTIONS WITH COLLATERAL ONLY1 +SELECT a.* +FROM [cfe].[TRANSACTION] a + INNER JOIN cfe.instrument b + ON a.id_instrument = b.id_instrument +WHERE a.id_instrument >= ? + AND a.id_instrument <= ? + AND EXISTS ( SELECT 1 + FROM cfe.instrument_ref b + INNER JOIN cfe.instrument_collateral_hst c + ON b.id_instrument_ref = c.id_instrument_ref + WHERE b.id_instrument = a.id_instrument ) +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MySQLTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MySQLTest.sql new file mode 100644 index 0000000..147e25b --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/ignore/MySQLTest.sql @@ -0,0 +1,45 @@ +-- +-- 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. +-- + +-- GROUP_CONCAT +SELECT Group_Concat( DISTINCT Trim( Concat( m.title, ' ', m.firstname + , ' ', m.lastname ) ) + ORDER BY p2m.manufacturer_type_id ASC + SEPARATOR ' ' ) AS manufacturer_name +FROM product_to_manufacturer p2m + LEFT JOIN manufacturer m + ON m.manufacturer_id = p2m.manufacturer_id +WHERE p2m.product_id = 574768 +; + +-- WITHOUT A FROM ITEM +-- @JSQLFormatter(indentWidth=2, keywordSpelling=LOWER, functionSpelling=CAMEL, objectSpelling=LOWER, separation=BEFORE) +select case + when ( select ccp.campaign_id + from campaign_constraint_product ccp + inner join campaign_free_shipping_products_visibility cfspv + on cfspv.campaign_id = ccp.campaign_id + where ccp.product_id = 530729 + and cfspv.status = 1 + union + select cap.campaign_id + from campaign_action_product cap + inner join campaign_free_shipping_products_visibility cfspv + on cfspv.campaign_id = cap.campaign_id + where cap.product_id = 530729 + and cfspv.status = 1 ) is not null + then 1 + else 0 + end as is_free_shipping +; \ No newline at end of file diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest.sql deleted file mode 100644 index 453d1b3..0000000 --- a/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest.sql +++ /dev/null @@ -1,12 +0,0 @@ --- some comments --- for nothing - - -select * -from dual -; - - -select * -from dual -; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest_1.sql b/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest_1.sql new file mode 100644 index 0000000..8bd2b21 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest_1.sql @@ -0,0 +1,29 @@ +-- +-- 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. +-- + + +SELECT * +FROM schedule_info info +WHERE ( info.employee_id, info.schedule_date ) IN ( ( 1, '2019-10-01' ), ( 1, '2019-10-02' ) ) +; + + +SELECT * +FROM table_a +WHERE other_id IN ( ( SELECT id + FROM table_b + WHERE name LIKE '%aa%' ), ( SELECT id + FROM table_b + WHERE name LIKE '%bb%' ) ) +; \ No newline at end of file diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest_short.sql b/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest_short.sql new file mode 100644 index 0000000..aeb36d9 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/simple/SQLFileTest_short.sql @@ -0,0 +1,17 @@ +-- +-- 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. +-- + +DELETE FROM cfe.ledger_branch_balance +WHERE a=b and c=d +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/EmptyStatementTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/EmptyStatementTest.sql new file mode 100644 index 0000000..d702ba8 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/EmptyStatementTest.sql @@ -0,0 +1,13 @@ +-- +-- 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. +-- diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest.sql new file mode 100644 index 0000000..94e3061 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest.sql @@ -0,0 +1,96 @@ +-- +-- 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. +-- + +SELECT osuser + , sl.sql_id + , sl.sql_hash_value + , opname + , target + , elapsed_seconds + , time_remaining +FROM v$session_longops sl + INNER JOIN v$session s + ON sl.sid = s.sid + AND sl.serial# = s.serial# +WHERE time_remaining > 0 +; + +CREATE VIEW sys.running_sql + AS SELECT s.username + , sl.sid + , sq.executions + , sl.last_update_time + , sl.sql_id + , sl.sql_hash_value + , opname + , target + , elapsed_seconds + , time_remaining + , sq.sql_fulltext + FROM v$session_longops sl + INNER JOIN v$sql sq + ON sq.sql_id = sl.sql_id + INNER JOIN v$session s + ON sl.sid = s.sid + AND sl.serial# = s.serial# + WHERE time_remaining > 0 +; + + +SET pagesize 55 +; + + +SET linesize 170 +; + + +/* +something crazy; +something crazy; +something crazy; +something crazy; +*/ + + +-- something crazy; +SELECT Substr( v$session.username, 1, 8 ) username + , v$session.osuser osuser + , Decode( v$session.server + , 'DEDICATED', 'D' + , 'SHARED', 'S' + , 'O' ) server + , v$sqlarea.disk_reads disk_reads + , v$sqlarea.buffer_gets buffer_gets + , Substr( v$session.lockwait, 1, 10 ) lockwait + , v$session.process pid + , v$session_wait.event event + , v$sqlarea.sql_text sql +FROM v$session_wait + , v$sqlarea + , v$session +WHERE v$session.sql_address = v$sqlarea.address + AND v$session.sql_hash_value = v$sqlarea.hash_value + AND v$session.sid = v$session_wait.sid + AND v$session.status = 'ACTIVE' + AND v$session_wait.event != 'client message' +ORDER BY v$session.lockwait ASC + , v$session.username +; + + +SELECT 'exec DBMS_SHARED_POOL.PURGE (''' || address || ',' || hash_value || ''', ''C'');' +FROM v$sqlarea +WHERE sql_id LIKE '9z1ufprvt2pk2' +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest_1.sql b/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest_1.sql new file mode 100644 index 0000000..7e97c32 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest_1.sql @@ -0,0 +1,419 @@ +-- +-- 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. +-- + +-- GET OBSERVATION PERIOD FOR ID_PORTFOLIO AND ID_RISK_INDICATOR +WITH p AS ( + SELECT DISTINCT + value_date + FROM risk.migration_data_v + WHERE ( :ID_PORTFOLIO IS NULL + OR :ID_PORTFOLIO = '' + OR id_portfolio = Decode( :ID_PORTFOLIO + , '001', 'IFRS1' + , '002', 'IFRS2' + , '003', 'IFRS3' + , '004', 'IFRS4' + , '005', 'IFRS5' + , '006', 'IFRS6' + , :ID_PORTFOLIO ) ) + AND value_date >= :FROM + AND value_date <= :TO ) + , ri AS ( + SELECT a.id_risk_indicator + , Greatest( ( SELECT Min( value_date ) + FROM p + WHERE value_date >= :FROM ), ( SELECT Max( value_date ) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :FROM ) ) min_ri_date + , Greatest( ( SELECT Min( value_date ) + FROM p + WHERE value_date >= :FROM ), ( SELECT Min( value_date ) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :FROM ) ) min_ri_date_1 + , Least( ( SELECT Max( value_date ) + FROM p + WHERE value_date <= :TO ), ( SELECT Min( value_date ) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :TO ) ) max_ri_date + , Least( ( SELECT Max( value_date ) + FROM p + WHERE value_date <= :TO ), ( SELECT Max( value_date ) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :TO ) ) max_ri_date_1 + FROM risk.risk_indicator a + WHERE a.id_status = 'C' + AND a.id_risk_indicator_ref = ( SELECT Max( id_risk_indicator_ref ) + FROM risk.risk_indicator + WHERE id_status = 'C' + AND id_risk_indicator = a.id_risk_indicator ) + AND ( ( :id_risk_indicator IS NULL + OR id_risk_indicator = :id_risk_indicator ) ) ) +SELECT /*+ PARALLEL */ + ri.id_risk_indicator + , Min( p.value_date ) "Min. Observation Date" + , Max( p.value_date ) "Max. Observation Date" +FROM ri + , p +WHERE p.value_date >= Nvl( ri.min_ri_date, ri.min_ri_date_1 ) + AND p.value_date <= Nvl( ri.max_ri_date, ri.max_ri_date_1 ) +GROUP BY ri.id_risk_indicator +ORDER BY 1 +; + +INSERT INTO cfe.ext_eab +SELECT /*+ PARALLEL DRIVING_SITE(A) */ a.* +FROM tbaadm.eod_acct_bal_table@finnacle a +WHERE end_eod_date >= Add_Months( To_Date( :VALUE_DATE, 'mm/dd/yy' ), - 4 ) +; + +WITH ex AS ( + SELECT value_date + , posting_date + FROM cfe.execution x + WHERE id_status = 'R' + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status = 'R' ) + AND posting_date = ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = x.value_date ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + WHERE f.value_date <= ( SELECT value_date + FROM ex ) + AND f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into ) + AND id_currency_into = 'NGN' + UNION ALL + SELECT 'NGN' + , 1 + FROM dual ) + , p AS ( + SELECT t.* + FROM cfe.portfolio_coll_impairment_hst t + INNER JOIN ex + ON Trunc( valid_date ) <= ex.value_date + WHERE valid_date = ( SELECT Max( valid_date ) + FROM cfe.portfolio_coll_impairment_hst + WHERE id_portfolio = t.id_portfolio + AND Trunc( valid_date ) <= ex.value_date ) ) + , coll AS ( + SELECT id_instrument_ref + , 'group_concat(description SEPARATOR CHR(10))' description + FROM ( SELECT Concat( Rpad( c.id_collateral, 20 ), ' ', Rpad( Trim( d.description ), 40 ) + , ' ', Rpad( Substr( Trim( c.description ), 0, 24 ), 24 ), ' ' + , To_Char( a1.amount, '9,999,999,999' ), ' ', a1.id_currency + , ' ', To_Char( d.hair_cut * 100, '9,99' ), '%' ) description + , a1.id_instrument_ref + FROM cfe.instr_coll_recovery_hst a1 + INNER JOIN ex + ON a1.valid_date = ex.value_date + INNER JOIN cfe.collateral_ref b + ON a1.id_collateral_ref = b.id_collateral_ref + INNER JOIN cfe.collateral c + ON b.id_collateral = c.id_collateral + INNER JOIN common.collateral_type d + ON c.id_collateral_type = d.id_collateral_type + AND d.id_status = 'C' + AND d.id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_collateral_type = d.id_collateral_type + AND id_status = 'C' ) ) t + GROUP BY id_instrument_ref ) + , cp AS ( + SELECT b.foracid id_instrument + , b.cif_id id_counterparty + , Convert( a.description, varchar ) description + FROM risk.counterparty a + INNER JOIN cfe.ext_gam b + ON a.id_counterparty = b.cif_id + AND a.id_status = 'C' ) +SELECT Coalesce( cp.id_counterparty, g2.attribute_value ) id_counterparty + , Coalesce( Convert( cp1.description, varchar ), cp.description, h2.attribute_value ) description + , b.id_instrument + , a.id_instrument_type + , f2.attribute_value product + , a.start_date + , a.end_date + , k2.attribute_value gl_code + , c.yield + , a.id_currency + , c.amortised_cost_dirty + , c.amortised_cost_dirty_bc + , c.nominal_balance + + c.receivable_principal nominal_balance + , c.nominal_balance_bc + + c.receivable_principal_bc nominal_balance_bc + , c.open_commitment + , c.open_commitment_bc + , coll.description collaterals + , p1.rate_pd pd_1y + , CASE + WHEN c.amortised_cost_dirty_bc < 0 + OR ( c.amortised_cost_dirty_bc = 0 + AND c.open_commitment_bc < 0 ) + THEN Greatest( 1 + Round( Nvl( ( SELECT Sum( a1.amount * fxr.fxrate * Exp( - Nvl( c.yield, 0 ) * d.workout_period / 365 ) ) recovery_amount + FROM cfe.instr_coll_recovery_hst a1 + INNER JOIN ex + ON a1.valid_date = ex.value_date + INNER JOIN fxr + ON a1.id_currency = fxr.id_currency_from + INNER JOIN cfe.collateral_ref b + ON a1.id_collateral_ref = b.id_collateral_ref + INNER JOIN cfe.collateral c + ON b.id_collateral = c.id_collateral + INNER JOIN common.collateral_type d + ON c.id_collateral_type = d.id_collateral_type + AND d.id_status = 'C' + AND d.id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_collateral_type = d.id_collateral_type + AND id_status = 'C' ) + WHERE a1.id_instrument_ref = a.id_instrument_ref ), 0 ), 2 ) / ( Nvl( c.amortised_cost_dirty_bc, 0 ) + Nvl( c.open_commitment_bc, 0 ) * Nvl( e.ccf, 0.25 ) ), 0 ) + ELSE 0 + END lgd_1y + , p2.rate_pd pd_2y + , p2.rate_lgd lgd_2y + , p3.rate_pd pd_3y + , p3.rate_lgd lgd_3y + , p10.rate_pd pd_10y + , p10.rate_lgd lgd_10y + , CASE + WHEN e.impairment_stage = 3 + AND d.impairment_is_specific = '0' + THEN 'D' + ELSE Decode( d.impairment_is_specific + , '1', 'S' + , '0', 'C' ) + END impairment_is_specific + , d.impairment + + d.impairment_spec impairment + , d.impairment_bc + + d.impairment_spec_bc impairment_bc + , d.impairment_contingent impairment_contingent + , d.impairment_contingent_bc impairment_contingent_bc + , d.unwinding unwinding + , d.unwinding_bc unwinding_bc + , d.impairment_spec_d + + d.unwinding_d impairment_spec_d + , d.impairment_spec_d_bc + + d.unwinding_d_bc impairment_spec_d_bc + , d.impairment_d + + d.impairment_contingent_d impairment_d + , d.impairment_d_bc + + d.impairment_contingent_d_bc impairment_d_bc + , d.unwinding_d unwinding_d + , d.unwinding_d_bc unwinding_d_bc + , e.id_portfolio + , e.master_rating + , Nvl( e.impairment_stage, 1 ) impairment_stage + , e.overdue_days + , e.risk_classification +FROM ex + INNER JOIN cfe.instrument_hst a + ON ex.value_date = a.value_date + AND ex.posting_date = a.posting_date + INNER JOIN cfe.instrument_ref b + ON a.id_instrument_ref = b.id_instrument_ref + LEFT JOIN coll + ON a.id_instrument_ref = coll.id_instrument_ref + LEFT JOIN cp + ON b.id_instrument = cp.id_instrument + INNER JOIN cfe.instrument_measure_balance c + ON ex.value_date = c.value_date + AND ex.posting_date = c.posting_date + AND b.id_instrument_ref = c.id_instrument_ref + AND c.asset_liability_flag = 'A' + LEFT JOIN cfe.instrument_measure_impairment d + ON ex.value_date = d.value_date + AND ex.posting_date = d.posting_date + AND b.id_instrument_ref = d.id_instrument_ref + AND d.asset_liability_flag = '9' + LEFT JOIN cfe.impairment e + ON b.id_instrument = e.id_instrument + LEFT JOIN ( cfe.instrument_attribute_hst2 f + INNER JOIN cfe.attribute_ref f1 + ON f1.id_attribute_ref = f.id_attribute_ref + AND f1.id_attribute = 'product' + INNER JOIN cfe.attribute_value_ref f2 + ON f2.id_attribute_value_ref = f.id_attribute_value_ref ) + ON f.value_date = ex.value_date + AND f.posting_date = ex.posting_date + AND f.id_instrument_ref = d.id_instrument_ref + LEFT JOIN ( cfe.instrument_attribute_hst2 g + INNER JOIN cfe.attribute_ref g1 + ON g1.id_attribute_ref = g.id_attribute_ref + AND g1.id_attribute = 'cust_id' + INNER JOIN cfe.attribute_value_ref g2 + ON g2.id_attribute_value_ref = g.id_attribute_value_ref ) + ON g.value_date = ex.value_date + AND g.posting_date = ex.posting_date + AND g.id_instrument_ref = a.id_instrument_ref + LEFT JOIN ( cfe.instrument_attribute_hst2 h + INNER JOIN cfe.attribute_ref h1 + ON h1.id_attribute_ref = h.id_attribute_ref + AND h1.id_attribute = 'cust_name' + INNER JOIN cfe.attribute_value_ref h2 + ON h2.id_attribute_value_ref = h.id_attribute_value_ref ) + ON h.value_date = ex.value_date + AND h.posting_date = ex.posting_date + AND h.id_instrument_ref = a.id_instrument_ref + LEFT JOIN ( cfe.instrument_attribute_hst2 k + INNER JOIN cfe.attribute_ref k1 + ON k1.id_attribute_ref = k.id_attribute_ref + AND k1.id_attribute = 'gl_code' + INNER JOIN cfe.attribute_value_ref k2 + ON k2.id_attribute_value_ref = k.id_attribute_value_ref ) + ON k.value_date = ex.value_date + AND k.posting_date = ex.posting_date + AND k.id_instrument_ref = a.id_instrument_ref + LEFT JOIN risk.counterparty cp1 + ON cp1.id_counterparty = Coalesce( cp.id_counterparty, g2.attribute_value ) + AND cp1.id_status = 'C' + LEFT JOIN p p1 + ON e.id_portfolio || '_ifrs9' = p1.id_portfolio + AND ( ( p1.period_scalar = 1 + AND p1.id_period_type = 'Y' ) + OR ( p1.period_scalar = 12 + AND p1.id_period_type = 'M' ) ) + LEFT JOIN p p2 + ON e.id_portfolio || '_ifrs9' = p2.id_portfolio + AND ( ( p2.period_scalar = 2 + AND p2.id_period_type = 'Y' ) + OR ( p2.period_scalar = 24 + AND p2.id_period_type = 'M' ) ) + LEFT JOIN p p3 + ON e.id_portfolio || '_ifrs9' = p3.id_portfolio + AND ( ( p3.period_scalar = 3 + AND p3.id_period_type = 'Y' ) + OR ( p3.period_scalar = 36 + AND p3.id_period_type = 'M' ) ) + LEFT JOIN p p10 + ON e.id_portfolio || '_ifrs9' = p10.id_portfolio + AND ( ( p10.period_scalar = 10 + AND p10.id_period_type = 'Y' ) + OR ( p10.period_scalar = 360 + AND p10.id_period_type = 'M' ) ) +WHERE ( amortised_cost_dirty < 0 + OR ( amortised_cost_dirty = 0 + AND open_commitment <= 0 ) + OR impairment != 0 + OR impairment_d != 0 + OR impairment_spec != 0 + OR impairment_spec_d != 0 + OR impairment_contingent != 0 + OR impairment_contingent_d != 0 ) + AND NOT ( id_instrument_type IN ( 'own_acc', 'sec_hft', 'sec_hft_set' ) + OR ( f2.attribute_value IS NOT NULL + AND f2.attribute_value IN ( 'GOVBONDS', 'TBILL' /*CBN Issues*/ ) ) + OR ( g2.attribute_value IS NOT NULL + AND g2.attribute_value IN ( '271', '7614' ) ) /*CBN*/ ) +; + + +SELECT * +FROM schedule_info info +WHERE ( info.employee_id, info.schedule_date ) IN ( ( 1, '2019-10-01' ), ( 1, '2019-10-02' ) ) +; + + +SELECT * +FROM table_a +WHERE other_id IN ( ( SELECT id + FROM table_b + WHERE name LIKE '%aa%' ), ( SELECT id + FROM table_b + WHERE name LIKE '%bb%' ) ) +; + + +SELECT * +FROM table1 +UNION +SELECT * +FROM table2 +ORDER BY col +LIMIT 4 +OFFSET 5 +; + + +-- ORACLE LONGOPS +SELECT l.inst_id + , l.sid + , l.serial# + , l.sql_id + , l.opname + , l.username + , l.target + , l.sofar + , l.totalwork + , l.start_time + , l.last_update_time + , Round( l.time_remaining / 60, 2 ) "REMAIN MINS" + , Round( l.elapsed_seconds / 60, 2 ) "ELAPSED MINS" + , Round( ( l.time_remaining + l.elapsed_seconds ) / 60, 2 ) "TOTAL MINS" + , Round( l.sofar / l.totalwork * 100, 2 ) "%_COMPLETE" + , l.message + , s.sql_text +FROM gv$session_longops l + LEFT OUTER JOIN v$sql s + ON s.hash_value = l.sql_hash_value + AND s.address = l.sql_address + AND s.child_number = 0 +WHERE l.opname NOT LIKE 'RMAN%' + AND l.opname NOT LIKE '%aggregate%' + AND l.totalwork != 0 + AND l.sofar <> l.totalwork + AND l.time_remaining > 0 +; + + +-- Old Oracle Outer Joins (+) +SELECT * +FROM foo + , bar +WHERE foo.id = bar.id(+) +; + + +SELECT * +FROM foo + , bar +WHERE foo.id(+) = bar.id +; + + +SELECT v.lname + , v.function + , d.name +FROM ( SELECT e.dept_id + , e.lname + , j.function + FROM employee e + , job j + WHERE e.job_id(+) = j.job_id ) v + , department d +WHERE v.dept_id(+) = d.dept_id +; + diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest_short.sql b/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest_short.sql new file mode 100644 index 0000000..87ac206 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/simpleIT/SQLFileTest_short.sql @@ -0,0 +1,26 @@ +-- +-- 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. +-- + +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date, something_else + , value_date, posting_date, something_else ) = ( SELECT value_date + , posting_date + , something_else + , value_date + , posting_date + , something_else + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardDeleteTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardDeleteTest.sql new file mode 100644 index 0000000..969a7e3 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardDeleteTest.sql @@ -0,0 +1,22 @@ +-- +-- 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. +-- + +-- DELETE LEDGER BRANCH BALANCE +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date ) = ( SELECT value_date + , posting_date + FROM cfe.execution + WHERE id_status = 'R' ) +; + diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardInsertTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardInsertTest.sql new file mode 100644 index 0000000..f38ecc4 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardInsertTest.sql @@ -0,0 +1,30 @@ +-- +-- 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. +-- + +-- INSERT RATIO COLLECTION RATIOS +INSERT INTO risk.counterparty_ratio +VALUES ( ?, ?, ? ) +; + +-- APPEND ATTRIBUTE VALUE REF +INSERT INTO cfe.attribute_value_ref +SELECT cfe.id_attribute_value_ref.nextval + , attribute_value +FROM ( SELECT DISTINCT + a.attribute_value + FROM cfe.instrument_attribute a + LEFT JOIN cfe.attribute_value_ref b + ON a.attribute_value = b.attribute_value + WHERE b.attribute_value IS NULL ) a +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql index 50a01d8..4b5812b 100644 --- a/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql @@ -1,14 +1,228 @@ --- some comments --- for nothing +-- +-- 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. +-- +-- SIMPLE +SELECT * FROM dual +; + +-- APPEND COLLATERAL REF +SELECT /*+ PARALLEL */ + cfe.id_collateral_ref.nextval + , id_collateral +FROM ( SELECT DISTINCT + a.id_collateral + FROM cfe.collateral a + LEFT JOIN cfe.collateral_ref b + ON a.id_collateral = b.id_collateral + WHERE b.id_collateral_ref IS NULL ) +; --- Test 2 -select * -from dual +-- APPEND COUNTER PARTY REF +SELECT /*+ PARALLEL */ + cfe.id_counter_party_ref.nextval + , id_counter_party +FROM ( SELECT DISTINCT + a.id_counter_party + FROM cfe.collateral a + LEFT JOIN cfe.counter_party_ref b + ON a.id_counter_party = b.id_counter_party + WHERE a.id_counter_party IS NOT NULL + AND b.id_counter_party_ref IS NULL ) ; +-- SELECT WITH COMPLEX ORDER +WITH ex AS ( + SELECT value_date + , posting_date + FROM cfe.execution x + WHERE id_status IN ( 'R', 'H' ) + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status IN ( 'R', 'H' ) ) + AND posting_date = ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status IN ( 'R', 'H' ) + AND value_date = x.value_date ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + WHERE f.value_date <= ( SELECT value_date + FROM ex ) + AND f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into ) + AND id_currency_into = 'NGN' + UNION ALL + SELECT 'NGN' + , 1 + FROM dual ) + , scope AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = 'INTERN' ) + , scope1 AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = 'NGAAP' ) + , c AS ( + SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) balance_bc + FROM scope + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope.id_accounting_scope_code + INNER JOIN ( SELECT id_account_credit id_account + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from + GROUP BY b.code ) + , c1 AS ( + SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) balance_bc + FROM scope1 + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope1.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope1.id_accounting_scope_code + INNER JOIN ( SELECT id_account_credit id_account + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from + GROUP BY b.code ) +SELECT /*+ PARALLEL */ + a.code code + , Lpad( ' ', 4 * ( a.gl_level - 1 ), ' ' ) + || a.code format_code + , b.description + , c.balance_bc + , c1.balance_bc +FROM scope + INNER JOIN cfe.ledger_branch_branch a + ON a.code = a.code_inferior + AND a.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_branch b + ON a.id_accounting_scope = b.id_accounting_scope + AND a.code = b.code + LEFT JOIN c + ON a.code = c.code + LEFT OUTER JOIN c1 + ON a.code = c1.code +WHERE gl_level <= 3 + AND NOT ( c.balance_bc IS NULL + AND c1.balance_bc IS NULL ) +ORDER BY ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 1 ) NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 2 ) ASC NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 3 ) DESC NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 4 ) DESC + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 5 ) ASC + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 6 ) NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 7 ) NULLS FIRST + , code +; + +-- ALL COLUMNS FROM TABLE +SELECT a.* +FROM cfe.instrument a +; --- TEST 1 -select * -from dual -; \ No newline at end of file +-- NESTED WITH +WITH teststmt1 AS ( + WITH teststmt2 AS ( + SELECT * + FROM my_table2 ) + SELECT col1 + , col2 + FROM teststmt2 ) +SELECT * +FROM teststmt +; + +( + SELECT __time + FROM traffic_protocol_stat_log + LIMIT 1 ) +UNION ALL ( + SELECT __time + FROM traffic_protocol_stat_log + ORDER BY __time + LIMIT 1 ) +; + +-- GROUP BY +SELECT a + , b + , c + , Sum( d ) +FROM t +GROUP BY a + , b + , c +HAVING Sum( d ) > 0 + AND Count( * ) > 1 +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardUpdateTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardUpdateTest.sql new file mode 100644 index 0000000..47c6629 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardUpdateTest.sql @@ -0,0 +1,76 @@ +-- +-- 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. +-- + +-- UPDATE COLLATERAL_TYPE +UPDATE common.collateral_type +SET hair_cut = least +WHERE id_collateral_type_ref IN ( SELECT id_collateral_type_ref + FROM common.collateral_type a + WHERE id_status IN ( 'C', 'H', 'C' + , 'H', 'C', 'H' + , 'C', 'H' ) + AND id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_status IN ( 'C', 'H' ) + AND id_collateral_type = a.id_collateral_type ) ) +; + +-- UPDATE COUNTERPARTY_INSTRUMENT +UPDATE risk.counterparty_instrument a1 +SET ( priority + , type + , description + , limit_amout + , id_currency + , end_date ) = ( SELECT a.priority + , a.type + , a.description + , a.limit_amout + , a.id_currency + , a.end_date + FROM risk.imp_counterparty_instrument a + INNER JOIN risk.counterparty b + ON a.id_counterparty = b.id_counterparty + AND b.id_status = 'C' + INNER JOIN risk.instrument c + ON a.id_instrument_beneficiary = c.id_instrument + AND c.id_status = 'C' + INNER JOIN risk.counterparty_instrument e + ON b.id_counterparty_ref = e.id_counterparty_ref + AND e.id_instrument_beneficiary = a.id_instrument_beneficiary + AND e.id_instrument_guarantee = a.id_instrument_guarantee + WHERE e.id_counterparty_ref = a1.id_counterparty_ref + AND e.id_instrument_beneficiary = a1.id_instrument_beneficiary + AND e.id_instrument_guarantee = a1.id_instrument_guarantee ) +WHERE EXISTS ( SELECT a.priority + , a.type + , a.description + , a.limit_amout + , a.id_currency + , a.end_date + FROM risk.imp_counterparty_instrument a + INNER JOIN risk.counterparty b + ON a.id_counterparty = b.id_counterparty + AND b.id_status = 'C' + INNER JOIN risk.instrument c + ON a.id_instrument_beneficiary = c.id_instrument + AND c.id_status = 'C' + INNER JOIN risk.counterparty_instrument e + ON b.id_counterparty_ref = e.id_counterparty_ref + AND e.id_instrument_beneficiary = a.id_instrument_beneficiary + AND e.id_instrument_guarantee = a.id_instrument_guarantee + WHERE e.id_counterparty_ref = a1.id_counterparty_ref + AND e.id_instrument_beneficiary = a1.id_instrument_beneficiary + AND e.id_instrument_guarantee = a1.id_instrument_guarantee ) +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/H2OrderedAggregateTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/H2OrderedAggregateTest.sql new file mode 100644 index 0000000..9ef7f4e --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/H2OrderedAggregateTest.sql @@ -0,0 +1,45 @@ +-- +-- 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. +-- + +-- LISTAGG 1 +SELECT LISTAGG(NAME, ', ') WITHIN GROUP (ORDER BY ID) +; + + +-- LISTAGG 2 +SELECT LISTAGG(COALESCE(NAME, 'null'), ', ') WITHIN GROUP (ORDER BY ID) +; + + +-- LISTAGG 3 +/* Unsupported: SELECT LISTAGG(ID, ', ') WITHIN GROUP (ORDER BY ID) OVER (ORDER BY ID); */ +SELECT 1 +FROM dual +; + +-- ARRAY_AGG 1 +SELECT Array_Agg( name ) +; + + +-- ARRAY_AGG 2 +SELECT ARRAY_AGG(NAME ORDER BY ID) FILTER (WHERE NAME IS NOT NULL) +; + + +-- ARRAY_AGG 3 +/* SELECT ARRAY_AGG(ID ORDER BY ID) OVER (ORDER BY ID); */ +SELECT 1 +FROM dual +; \ No newline at end of file diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/MeanChallenges.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/MeanChallenges.sql new file mode 100644 index 0000000..9a3b369 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/MeanChallenges.sql @@ -0,0 +1,74 @@ +-- +-- 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. +-- + + +-- SELECT Date Ranges of available data +WITH p + AS (SELECT DISTINCT value_date + FROM risk.migration_data_v + WHERE (:1 IS NULL OR :2 ='' OR id_portfolio = Decode (:3 , '001', 'IFRS1', + '002', 'IFRS2', + '003', 'IFRS3', + '004', 'IFRS4', + '005', 'IFRS5', + '006', 'IFRS6', + :4 )) + AND value_date >= :5 + AND value_date <= :6 ), + ri + AS (SELECT a.id_risk_indicator + , Greatest((SELECT Min(value_date) + FROM p + WHERE value_date >= :7 ), (SELECT Max(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :8 )) min_ri_date + , Greatest((SELECT Min(value_date) + FROM p + WHERE value_date >= :9 ), (SELECT Min(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :10 )) min_ri_date_1 + , Least((SELECT Max(value_date) + FROM p + WHERE value_date <= :11 ), (SELECT Min(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :12 )) max_ri_date + , Least((SELECT Max(value_date) + FROM p + WHERE value_date <= :13 ), (SELECT Max(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :14 )) max_ri_date_1 + FROM risk.risk_indicator a + WHERE a.id_status = 'C' + AND a.id_risk_indicator_ref = (SELECT Max(id_risk_indicator_ref) + FROM risk.risk_indicator + WHERE id_status = 'C' + AND id_risk_indicator = a.id_risk_indicator) + AND ( ( :15 IS NULL + OR id_risk_indicator = :16 ) + )) +SELECT /*+parallel*/ ri.id_risk_indicator + , Min(p.value_date) "Min. Observation Date" + , Max(p.value_date) "Max. Observation Date" +FROM ri + , p +WHERE p.value_date >= Nvl(ri.min_ri_date, ri.min_ri_date_1) + AND p.value_date <= Nvl(ri.max_ri_date, ri.max_ri_date_1) +GROUP BY ri.id_risk_indicator +order by 1 +; + diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardAlterTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardAlterTest.sql new file mode 100644 index 0000000..7677431 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardAlterTest.sql @@ -0,0 +1,74 @@ +-- +-- 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. +-- + +-- ALTER TABLE ADD FOREIGN KEY +ALTER TABLE cfe.ledger_acc_entry_manual + ADD FOREIGN KEY (id_manual_posting_batch) + REFERENCES manual_posting_batch (id_manual_posting_batch) +; + +-- ALTER TABLE DROP COLUMN +ALTER TABLE risk.collateral + DROP COLUMN id_status +; + +-- ORACLE DROP MULTIPLE COLUMNS +ALTER TABLE risk.collateral + DROP (id_status, city ) +; + +-- ORACLE DROP MANY MULTIPLE COLUMNS +ALTER TABLE risk.collateral + DROP ( id_status + , city + , column3 + , column4 ) +; + +-- ALTER TABLE ADD COLUMN +ALTER TABLE risk.collateral + ADD COLUMN id_status VARCHAR (1) NULL +; + +-- ALTER TABLE ALTER COLUMN +ALTER TABLE risk.collateral + ALTER COLUMN id_status VARCHAR (1) NOT NULL +; + +-- ORACLE ALTER TABLE ADD COLUMN +ALTER TABLE risk.collateral + ADD id_status VARCHAR (1) NULL +; + +-- ORACLE ALTER TABLE MODIFY +ALTER TABLE risk.collateral + MODIFY id_status VARCHAR (1) NOT NULL +; + +-- ORACLE ADD MULTIPLE COLUMNS +ALTER TABLE customers + ADD ( customer_name VARCHAR2 (45) + , city VARCHAR2 (40) DEFAULT 'SEATTLE') +; + +-- ORACLE MODIFY MULTIPLE COLUMNS +ALTER TABLE customers + MODIFY ( customer_name VARCHAR2 (100) NOT NULL + , city VARCHAR2 (75) DEFAULT 'SEATTLE' NOT NULL) +; + +-- RENAME +ALTER TABLE departments + RENAME COLUMN department_name TO dept_name +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCommentTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCommentTest.sql new file mode 100644 index 0000000..02ca57e --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCommentTest.sql @@ -0,0 +1,41 @@ +-- +-- 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. +-- + +-- UPDATE CALENDAR +UPDATE cfe.calendar +SET year_offset = ? /* year offset */ + , settlement_shift = ? /* settlement shift */ + , friday_is_holiday = ? /* friday is a holiday */ + , saturday_is_holiday = ? /* saturday is a holiday */ + , sunday_is_holiday = ? /* sunday is a holiday */ +WHERE id_calendar = ? +; + + +-- BOTH CLAUSES PRESENT 'with a string' AND "a field" +MERGE /*+ PARALLEL */ INTO test1 /*the target table*/ a + USING all_objects /*the source table*/ + ON ( /*joins in()!*/ a.object_id = b.object_id ) +-- INSERT CLAUSE +WHEN /*comments between keywords!*/ NOT MATCHED THEN + INSERT ( object_id /*ID Column*/ + , status /*Status Column*/ ) + VALUES ( b.object_id + , b.status ) +/* UPDATE CLAUSE +WITH A WHERE CONDITION */ +WHEN MATCHED THEN /* Lets rock */ + UPDATE SET a.status = '/*this is no comment!*/ and -- this ain''t either' + WHERE b."--status" != 'VALID' +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateIndexTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateIndexTest.sql new file mode 100644 index 0000000..67dcba0 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateIndexTest.sql @@ -0,0 +1,57 @@ +-- +-- 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. +-- + +-- SIMPLE +CREATE INDEX cfe.version_info_idx1 + ON cfe.version_info( major_version + , minor_version + , patch_level ) +; + +-- UNIQUE +CREATE UNIQUE INDEX cfe.interest_period_idx1 + ON cfe.interest_period( id_instrument, change_date ) +; + +-- MANY COLUMNS +CREATE UNIQUE INDEX cfe.version_info_idx2 + ON cfe.version_info( major_version + , minor_version + , patch_level + , major_version + , minor_version + , patch_level ) +; + +-- MANY COLUMNS WITH TAIL OPTIONS +CREATE UNIQUE INDEX cfe.version_info_idx2 + ON cfe.version_info( major_version + , minor_version + , patch_level + , major_version + , minor_version + , patch_level ) PARALLEL COMPRESS NOLOGGING +; + + +-- Z MANY COLUMNS WITH TAIL OPTIONS +-- @JSQLFormatter(indentWidth=2, keywordSpelling=LOWER, functionSpelling=KEEP, objectSpelling=UPPER, separation=AFTER) +create unique index CFE.VERSION_INFO_IDX2 + on CFE.VERSION_INFO( MAJOR_VERSION, + MINOR_VERSION, + PATCH_LEVEL, + MAJOR_VERSION, + MINOR_VERSION, + PATCH_LEVEL ) parallel compress nologging +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateTableTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateTableTest.sql new file mode 100644 index 0000000..b08a6d5 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateTableTest.sql @@ -0,0 +1,117 @@ +-- +-- 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. +-- + +-- CREATE TABLE CFE.INTEREST_PERIOD +CREATE TABLE cfe.interest_period ( + id_instrument VARCHAR (40) NOT NULL + , id_fixingmode NUMBER (5) DEFAULT 0 NOT NULL + , fixing_date DATE + , change_date DATE + , base_rate VARCHAR (12) + , base_margin_rate DECIMAL (12,9) + , par_rate VARCHAR (12) + , par_margin_rate DECIMAL (12,9) + , id_payment_convention VARCHAR (12) + , id_day_count_convention VARCHAR (12) + , id_day_incl_convention VARCHAR (12) + , fix_amount DECIMAL (23,5) + , id_currency_fix_amount VARCHAR (3) + , id_script VARCHAR (12) +) +; + +-- SIMPLE +CREATE TABLE employees ( + employee_number INT NOT NULL + , employee_name CHAR (50) NOT NULL + , department_id INT + , salary INT + , PRIMARY KEY ( employee_number ) + , UNIQUE ( employee_name ) + , FOREIGN KEY ( department_id ) + REFERENCES departments ( department_id ) +) PARALLEL COMPRESS NOLOGGING +; + +-- COMPLEX +CREATE TABLE employees ( + employee_number INT NOT NULL + , employee_name CHAR (50) NOT NULL + , department_id INT + , salary INT + , CONSTRAINT employees_pk + PRIMARY KEY ( employee_number ) + , CONSTRAINT fk_departments + FOREIGN KEY ( department_id ) + REFERENCES departments ( department_id ) +) PARALLEL COMPRESS NOLOGGING +; + +-- COMPLEX WITH MANY REFERENCES +CREATE TABLE employees ( + employee_number INT NOT NULL + , employee_name CHAR (50) NOT NULL + , department_id INT + , salary INT + , CONSTRAINT employees_pk + PRIMARY KEY ( employee_number + , employee_name + , department_id ) + , CONSTRAINT fk_departments + FOREIGN KEY ( employee_number + , employee_name + , department_id ) + REFERENCES departments ( employee_number + , employee_name + , department_id ) +) PARALLEL COMPRESS NOLOGGING +; + +-- CREATE TABLE CFE.RECONCILIATION_NOMINAL_HST 2 +CREATE TABLE cfe.reconciliation_nominal_hst PARALLEL COMPRESS NOLOGGING + AS ( SELECT /*+ PARALLEL */ + ( SELECT id_execution_ref + FROM cfe.execution_ref c + INNER JOIN cfe.execution_v d + ON c.value_date = d.value_date + AND c.posting_date = d.posting_date + AND d.flag = 'L' ) id_execution_ref + , b.id_instrument_ref + , a.value_date + , a.nominal_balance + FROM cfe.reconciliation_nominal a + INNER JOIN cfe.instrument_ref b + ON a.id_instrument = b.id_instrument ) +; + +-- Z COMPLEX WITH MANY REFERENCES +-- @JSQLFormatter(indentWidth=2, keywordSpelling=LOWER, functionSpelling=KEEP, objectSpelling=UPPER, separation=AFTER) +create table EMPLOYEES ( + EMPLOYEE_NUMBER int not null, + EMPLOYEE_NAME char (50) not null, + DEPARTMENT_ID int, + SALARY int, + constraint EMPLOYEES_PK + primary key ( EMPLOYEE_NUMBER, + EMPLOYEE_NAME, + DEPARTMENT_ID ), + constraint FK_DEPARTMENTS + foreign key ( EMPLOYEE_NUMBER, + EMPLOYEE_NAME, + DEPARTMENT_ID ) + references DEPARTMENTS ( EMPLOYEE_NUMBER, + EMPLOYEE_NAME, + DEPARTMENT_ID ) +) parallel compress nologging +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateViewTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateViewTest.sql new file mode 100644 index 0000000..bc69d2b --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardCreateViewTest.sql @@ -0,0 +1,100 @@ +-- +-- 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. +-- + +-- VIEW 1 +CREATE OR REPLACE VIEW cfe.interest_period_on_value_day + AS SELECT /*+ PARALLEL */ + a.value_date + , d.id_instrument + , d.id_fixingmode + , d.fixing_date + , Coalesce( d.change_date, b.end_date ) change_date + , d.base_rate + , d.base_margin_rate + , d.par_rate + , d.par_margin_rate + , d.id_payment_convention + , d.id_day_count_convention + , d.id_day_incl_convention + , d.fix_amount + , d.id_currency_fix_amount + , d.id_script + FROM ( SELECT value_date + , posting_date + FROM cfe.execution e + WHERE id_status = 'R' + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status = 'R' ) + AND posting_date = ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = e.value_date ) ) a + INNER JOIN cfe.instrument_hst b + ON a.value_date = b.value_date + AND a.posting_date = b.posting_date + INNER JOIN cfe.instrument_ref c + ON b.id_instrument_ref = c.id_instrument_ref + INNER JOIN cfe.interest_period d + ON d.id_instrument = c.id_instrument + AND a.value_date <= Coalesce( d.change_date, b.end_date ) + WHERE Coalesce( d.change_date, b.end_date ) = ( SELECT Min( Coalesce( change_date, b.end_date ) ) + FROM cfe.interest_period + WHERE id_instrument = d.id_instrument + AND a.value_date <= Coalesce( change_date, b.end_date ) ) + ORDER BY 2 + , 1 + , 4 +; + +-- VIEW 2 +CREATE OR REPLACE VIEW cfe.execution_v + AS SELECT /*+ PARALLEL */ + e.start_timestamp + , e.end_timestamp + , EXTRACT( hour FROM + e.end_timestamp + - e.start_timestamp ) || ':' + || Lpad( EXTRACT( minute FROM e.end_timestamp - e.start_timestamp ), 2, '0' ) duration + , e.value_date + , e.posting_date + , CASE + WHEN EXTRACT( year FROM e1.value_date ) > EXTRACT( year FROM e.value_date ) + THEN 'Y' + WHEN To_Char( e1.value_date, 'Q' ) > To_Char( e.value_date, 'Q' ) + THEN 'Q' + WHEN EXTRACT( month FROM e1.value_date ) > EXTRACT( month FROM e.value_date ) + THEN 'M' + WHEN To_Char( e1.value_date, 'IW' ) > To_Char( e.value_date, 'IW' ) + THEN 'W' + WHEN e1.value_date IS NULL + AND e.id_status = 'R' + THEN 'L' + END flag + , e.value_date_p + , e.value_date_pp + , e.id_status + FROM cfe.execution e + LEFT JOIN cfe.execution e1 + ON e.value_date < e1.value_date + AND e.id_status IN ( 'R', 'H' ) + AND e1.id_status IN ( 'R', 'H' ) + WHERE ( e1.value_date = ( SELECT Min( value_date ) + FROM cfe.execution + WHERE id_status IN ( 'R', 'H' ) + AND value_date > e.value_date ) + OR e1.value_date IS NULL ) + ORDER BY e.posting_date DESC + , e.value_date DESC +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardDeleteTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardDeleteTest.sql new file mode 100644 index 0000000..db36eb7 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardDeleteTest.sql @@ -0,0 +1,103 @@ +-- +-- 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. +-- + +-- DELETE LEDGER BRANCH BALANCE +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date ) = ( SELECT value_date + , posting_date + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; + +-- DELETE WITH MANY ITEMS +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date, something_else ) = ( SELECT value_date + , posting_date + , something_else + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; + +-- DELETE WITH MORE ITEMS +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date + , posting_date + , something_else + , value_date ) = ( SELECT value_date + , posting_date + , something_else + , value_date + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; + +-- DELETE WITH EVEN MORE ITEMS +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date, something_else + , value_date, posting_date, something_else ) = ( SELECT value_date + , posting_date + , something_else + , value_date + , posting_date + , something_else + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; + +-- DELETE INSTRUMENT HST AFTER VALUE_DATE_P +DELETE /*+ PARALLEL INDEX_FFS(A, INSTRUMENT_HST_IDX1) */ FROM cfe.instrument_hst a +WHERE ( value_date, posting_date ) IN ( SELECT value_date + , posting_date + FROM cfe.execution + WHERE posting_date > ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) + OR ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) IS NULL ) +; + +-- DELETE REDUNDANT INSTRUMENT COLLATERAL HST 2 +DELETE FROM cfe.instrument_collateral_hst t1 +WHERE EXISTS ( SELECT 1 + FROM cfe.instrument_collateral a + INNER JOIN cfe.collateral_ref b + ON a.id_collateral = b.id_collateral + INNER JOIN cfe.instrument_ref c + ON a.id_instrument = c.id_instrument + WHERE b.id_collateral_ref = t1.id_collateral_ref + AND c.id_instrument_ref = t1.id_instrument_ref + AND a.valid_date = t1.valid_date ) +; + +-- DELETE ACCOUNT ENTRIES AFTER VALUE_DATE_P +DELETE FROM cfe.ledger_account_entry a +WHERE posting_date IN ( SELECT posting_date + FROM cfe.execution + WHERE posting_date > ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) + OR ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) IS NULL ) + AND reversed = '0' +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardInsertTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardInsertTest.sql new file mode 100644 index 0000000..51f8a19 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardInsertTest.sql @@ -0,0 +1,58 @@ +-- +-- 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. +-- + +-- INSERT COUNTERPARTY COUNTERPARTY RELATIONSHIP +INSERT INTO risk.counterparty_counterparty +VALUES ( :id_counterparty_ref, :id_counterparty_beneficiary, :id_instrument_guarantee + , :priority, :type, :description + , :limit_amout, :id_currency, :end_date ) +; + +-- INSERT RATIO COLLECTION RATIOS +INSERT INTO risk.counterparty_ratio +VALUES ( ?, ?, ? ) +; + +-- INSERT TMP_CCF +INSERT INTO risk.tmp_ccf ( + "ID_INSTRUMENT" + , "TENOR" + , "STATUS" + , "OBSERVATION_DATE" + , "BALANCE" + , "LIMIT" + , "DR_BALANCE" + , "OPEN_LIMIT" ) +SELECT '1000042339' /* ID_INSTRUMENT */ + , 0 /* TENOR */ + , 'DEFAULT' /* STATUS */ + , {d '2020-02-27'} /* OBSERVATION_DATE */ + , - 142574953.65 /* BALANCE */ + , 300000000 /* LIMIT */ + , - 142574953.65 /* DR_BALANCE */ + , 157425046.35 /* OPEN_LIMIT */ +FROM dual +; + +-- APPEND ATTRIBUTE VALUE REF +INSERT INTO cfe.attribute_value_ref +SELECT cfe.id_attribute_value_ref.nextval + , attribute_value +FROM ( SELECT DISTINCT + a.attribute_value + FROM cfe.instrument_attribute a + LEFT JOIN cfe.attribute_value_ref b + ON a.attribute_value = b.attribute_value + WHERE b.attribute_value IS NULL ) a +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardMergeTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardMergeTest.sql new file mode 100644 index 0000000..eecb71f --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardMergeTest.sql @@ -0,0 +1,229 @@ +-- +-- 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. +-- + +-- MERGE 1 +MERGE INTO cfe.impairment imp + USING ( WITH x AS ( + SELECT a.id_instrument + , a.id_currency + , a.id_instrument_type + , b.id_portfolio + , c.attribute_value product_code + , t.valid_date + , t.ccf + FROM cfe.instrument a + INNER JOIN cfe.impairment b + ON a.id_instrument = b.id_instrument + LEFT JOIN cfe.instrument_attribute c + ON a.id_instrument = c.id_instrument + AND c.id_attribute = 'product' + INNER JOIN cfe.ext_ccf t + ON ( a.id_currency LIKE t.id_currency ) + AND ( a.id_instrument_type LIKE t.id_instrument_type ) + AND ( b.id_portfolio LIKE t.id_portfolio + OR ( b.id_portfolio IS NULL + AND t.id_portfolio = '%' ) ) + AND ( c.attribute_value LIKE t.product_code + OR ( c.attribute_value IS NULL + AND t.product_code = '%' ) ) ) +SELECT /*+ PARALLEL */ * + FROM x x1 + WHERE x1.valid_date = ( SELECT max + FROM x + WHERE id_instrument = x1.id_instrument ) ) s + ON ( imp.id_instrument = s.id_instrument ) +WHEN MATCHED THEN + UPDATE SET imp.ccf = s.ccf +; + +-- MERGE 2 +MERGE INTO cfe.instrument_import_measure imp + USING ( WITH x AS ( + SELECT a.id_instrument + , a.id_currency + , a.id_instrument_type + , b.id_portfolio + , c.attribute_value product_code + , t.valid_date + , t.yield + FROM cfe.instrument a + INNER JOIN cfe.impairment b + ON a.id_instrument = b.id_instrument + LEFT JOIN cfe.instrument_attribute c + ON a.id_instrument = c.id_instrument + AND c.id_attribute = 'product' + INNER JOIN cfe.ext_yield t + ON ( a.id_currency = t.id_currency ) + AND ( a.id_instrument_type LIKE t.id_instrument_type ) + AND ( b.id_portfolio LIKE t.id_portfolio + OR ( b.id_portfolio IS NULL + AND t.id_portfolio = '%' ) ) + AND ( c.attribute_value LIKE t.product_code + OR ( c.attribute_value IS NULL + AND t.product_code = '%' ) ) ) +SELECT /*+ PARALLEL */ * + FROM x x1 + WHERE x1.valid_date = ( SELECT max + FROM x + WHERE id_instrument = x1.id_instrument + AND valid_date <= to_date ) ) s + ON ( imp.id_instrument = s.id_instrument + AND imp.measure = 'YIELD' ) +WHEN MATCHED THEN + UPDATE SET imp.value = s.yield +; + +-- MERGE 3 +MERGE INTO cfe.instrument_import_measure imp + USING s + ON ( imp.id_instrument = s.id_instrument + AND imp.measure = 'YIELD_P' + AND imp.id_instrument = s.id_instrument + AND imp.measure = 'YIELD_P' ) +WHEN MATCHED THEN + UPDATE SET imp.value = s.yield +; + +-- MERGE 4 +MERGE INTO cfe.instrument_import_measure imp + USING ( WITH x AS ( + SELECT a.id_instrument + , a.id_currency + , a.id_instrument_type + , b.id_portfolio + , c.attribute_value product_code + , t.valid_date + , t.yield + FROM cfe.instrument a + INNER JOIN cfe.impairment b + ON a.id_instrument = b.id_instrument + LEFT JOIN cfe.instrument_attribute c + ON a.id_instrument = c.id_instrument + AND c.id_attribute = 'product' + INNER JOIN cfe.ext_yield t + ON ( a.id_currency = t.id_currency ) + AND ( a.id_instrument_type LIKE t.id_instrument_type ) + AND ( b.id_portfolio LIKE t.id_portfolio + OR ( b.id_portfolio IS NULL + AND t.id_portfolio = '%' ) ) + AND ( c.attribute_value LIKE t.product_code + OR ( c.attribute_value IS NULL + AND t.product_code = '%' ) ) ) +SELECT /*+ PARALLEL */ * + FROM x x1 + WHERE x1.valid_date = ( SELECT max + FROM x + WHERE id_instrument = x1.id_instrument + AND valid_date <= to_date ) ) s + ON ( imp.id_instrument = s.id_instrument + AND imp.measure = 'YIELD_PP' ) +WHEN MATCHED THEN + UPDATE SET imp.value = s.yield +; + +-- MERGE DELETE WHERE +MERGE INTO empl_current tar + USING ( SELECT empno + , ename + , CASE + WHEN leavedate <= sysdate + THEN 'Y' + ELSE 'N' + END AS delete_flag + FROM empl ) src + ON ( tar.empno = src.empno ) +WHEN NOT MATCHED THEN + INSERT ( empno + , ename ) + VALUES ( src.empno + , src.ename ) +WHEN MATCHED THEN + UPDATE SET tar.ename = src.ename + WHERE delete_flag = 'N' + DELETE WHERE delete_flag = 'Y' +; + +-- BOTH CLAUSES PRESENT +MERGE INTO test1 a + USING all_objects + ON ( a.object_id = b.object_id ) +WHEN NOT MATCHED THEN + INSERT ( object_id + , status ) + VALUES ( b.object_id + , b.status ) +WHEN MATCHED THEN + UPDATE SET a.status = b.status + WHERE b.status != 'VALID' +; + +-- BOTH CLAUSES PRESENT 2 +MERGE INTO test1 a + USING all_objects + ON ( a.object_id = b.object_id ) +WHEN NOT MATCHED THEN + INSERT ( object_id + , status ) + VALUES ( b.object_id + , b.status ) + WHERE b.status != 'VALID' +WHEN MATCHED THEN + UPDATE SET a.status = b.status + WHERE b.status != 'VALID' +; + +-- INSERT WITHOUT COLUMNS +MERGE /*+ PARALLEL */ INTO cfe.tmp_eab a + USING ( SELECT /*+ PARALLEL DRIVING_SITE(C) */ c.* + FROM tbaadm.eab@finnacle c + INNER JOIN ( SELECT acid + , eod_date + FROM cfe.tmp_eab e + WHERE end_eod_date = ( SELECT Max( eod_date ) + FROM cfe.tmp_eab + WHERE acid = e.acid ) + AND end_eod_date < '31-Dec-2099' ) d + ON c.acid = d.acid + AND c.eod_date >= d.eod_date ) b + ON ( a.acid = b.acid + AND a.eod_date = b.eod_date ) +WHEN MATCHED THEN + UPDATE SET a.tran_date_bal = b.tran_date_bal + , a.tran_date_tot_tran = b.tran_date_tot_tran + , a.value_date_bal = b.value_date_bal + , a.value_date_tot_tran = b.value_date_tot_tran + , a.end_eod_date = b.end_eod_date + , a.lchg_user_id = b.lchg_user_id + , a.lchg_time = b.lchg_time + , a.rcre_user_id = b.rcre_user_id + , a.rcre_time = b.rcre_time + , a.ts_cnt = b.ts_cnt + , a.eab_crncy_code = b.eab_crncy_code + , a.bank_id = b.bank_id +WHEN NOT MATCHED THEN + INSERT VALUES ( b.acid + , b.eod_date + , b.tran_date_bal + , b.tran_date_tot_tran + , b.value_date_bal + , b.value_date_tot_tran + , b.end_eod_date + , b.lchg_user_id + , b.lchg_time + , b.rcre_user_id + , b.rcre_time + , b.ts_cnt + , b.eab_crncy_code + , b.bank_id ) +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardOffsetLimitTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardOffsetLimitTest.sql new file mode 100644 index 0000000..41284e2 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardOffsetLimitTest.sql @@ -0,0 +1,44 @@ +-- +-- 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. +-- + +-- SIMPLE LIMIT +SELECT p.* +FROM product p + LEFT JOIN product_description pd + ON ( p.product_id = pd.product_id ) + LEFT JOIN product_type_google_category ptgc + ON ( p.product_type_id = ptgc.product_type_id ) + LEFT JOIN product_google_custom_label pgcl + ON ( p.product_id = pgcl.product_id ) +WHERE p.status = 1 + AND pd.language_id = 2 + AND p.product_id IN ( SELECT product_id + FROM cj_googleshopping_products ) +ORDER BY date_available DESC + , p.purchased DESC +LIMIT 200000 +; + +-- LIMIT OFFSET EXPRESSIONS +SELECT p.* +FROM product p +LIMIT '200000' +OFFSET '5' +; + +-- MYSQL LIMIT OFFSET EXPRESSIONS +SELECT p.* +FROM product p +LIMIT 5, 2000 +; \ No newline at end of file diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardSelectTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardSelectTest.sql new file mode 100644 index 0000000..e6056a5 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardSelectTest.sql @@ -0,0 +1,476 @@ +-- +-- 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. +-- + +-- INSERT NEW LEDGER ACCOUNTS +SELECT /*+ PARALLEL */ + cfe.id_account_seq.nextval + , "a"."code" + , a."id_currency" + , a.id_fee_type + , current_date + , NULL + , id_accounting_scope_code +FROM ( SELECT * + FROM ( SELECT DISTINCT + c.code code + , d.id_currency + , NULL id_fee_type + , c1.id_accounting_scope_code + FROM cfe.ledger_branch c + INNER JOIN cfe.accounting_scope c1 + ON c1.id_accounting_scope = c.id_accounting_scope + AND c1.id_status = 'C' + , common.ledger_currency d + MINUS + SELECT DISTINCT + c.code + , d.id_currency + , NULL id_fee_type + , c.id_accounting_scope_code + FROM cfe.ledger_account c + INNER JOIN common.ledger_currency d + ON c.id_currency = d.id_currency ) + UNION + SELECT * + FROM ( SELECT DISTINCT + c.code + , d.id_currency + , NULL id_fee_type + , c1.id_accounting_scope_code + FROM cfe.ledger_branch c + INNER JOIN cfe.accounting_scope c1 + ON c1.id_accounting_scope = c.id_accounting_scope + AND c1.id_status = 'C' + , common.ledger_currency d + MINUS + SELECT DISTINCT + c.code + , d.id_currency + , NULL id_fee_type + , c.id_accounting_scope_code + FROM cfe.ledger_account c + INNER JOIN common.ledger_currency d + ON c.id_currency = d.id_currency ) + UNION + SELECT * + FROM ( SELECT DISTINCT + c.code code + , d.id_currency + , e.id_fee_type + , c1.id_accounting_scope_code + FROM cfe.ledger_branch c + INNER JOIN cfe.accounting_scope c1 + ON c1.id_accounting_scope = c.id_accounting_scope + AND c1.id_status = 'C' + , common.ledger_currency d + , cfe.fee_type e + MINUS + SELECT DISTINCT + c.code + , d.id_currency + , e.id_fee_type + , c.id_accounting_scope_code + FROM cfe.ledger_account c + INNER JOIN common.ledger_currency d + ON c.id_currency = d.id_currency + INNER JOIN cfe.fee_type e + ON c.id_fee_type = e.id_fee_type ) ) a +; + +-- INSERT INTO LEDGER BRANCH BALANCE +WITH scope AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = :SCOPE ) + , ex AS ( + SELECT * + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND ( :VALUE_DATE IS NULL + OR value_date <= :VALUE_DATE ) ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + INNER JOIN ex + ON f.value_date <= ex.value_date + WHERE f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into + AND value_date <= ex.value_date ) + AND id_currency_into = :BOOK_CURRENCY + UNION ALL + SELECT :BOOK_CURRENCY + , 1 + FROM dual ) +SELECT /*+ PARALLEL */ + scope.id_accounting_scope + , ex.value_date + , ex.posting_date + , a.gl_level + , a.code + , b.description + , c.balance_bc +FROM ex + , scope + INNER JOIN cfe.ledger_branch_branch a + ON a.id_accounting_scope = scope.id_accounting_scope + AND a.code = a.code_inferior + INNER JOIN cfe.ledger_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + AND b.code = a.code + INNER JOIN ( SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) balance_bc + FROM scope + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope.id_accounting_scope_code + INNER JOIN ( SELECT id_account + , Sum( amount ) balance + FROM ( SELECT id_account_credit id_account + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) + GROUP BY id_account ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from + GROUP BY b.code ) c + ON c.code = a.code +; + +-- INSERT INTO LEDGER BRANCH BALANCE NEW +WITH scope AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = :SCOPE ) + , ex AS ( + SELECT * + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND ( :VALUE_DATE IS NULL + OR value_date <= :VALUE_DATE ) ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + INNER JOIN ex + ON f.value_date <= ex.value_date + WHERE f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into + AND value_date <= ex.value_date ) + AND id_currency_into = :BOOK_CURRENCY + UNION ALL + SELECT :BOOK_CURRENCY + , 1 + FROM dual ) +SELECT /*+ PARALLEL */ + scope.id_accounting_scope + , ex.value_date + , ex.posting_date + , a.gl_level + , a.code + , b.description + , c.balance_bc +FROM ex + , scope + INNER JOIN cfe.ledger_branch_branch a + ON a.id_accounting_scope = scope.id_accounting_scope + AND a.code = a.code_inferior + INNER JOIN cfe.ledger_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + AND b.code = a.code + INNER JOIN ( SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) + FROM scope + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope.id_accounting_scope_code + INNER JOIN ( SELECT id_account + , Sum( amount ) + FROM ( SELECT id_account_credit + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from ) c + ON c.code = a.code +; + +-- APPEND COLLATERAL REF +SELECT /*+ PARALLEL */ + cfe.id_collateral_ref.nextval + , id_collateral +FROM ( SELECT DISTINCT + a.id_collateral + FROM cfe.collateral a + LEFT JOIN cfe.collateral_ref b + ON a.id_collateral = b.id_collateral + WHERE b.id_collateral_ref IS NULL ) +; + +-- APPEND COUNTER PARTY REF +SELECT /*+ PARALLEL */ + cfe.id_counter_party_ref.nextval + , id_counter_party +FROM ( SELECT DISTINCT + a.id_counter_party + FROM cfe.collateral a + LEFT JOIN cfe.counter_party_ref b + ON a.id_counter_party = b.id_counter_party + WHERE a.id_counter_party IS NOT NULL + AND b.id_counter_party_ref IS NULL ) +; + +-- APPEND COLLATERAL HST +SELECT /*+ PARALLEL */ + b.id_collateral_ref + , c.id_counter_party_ref + , coalesce valid_date + , a.description + , d.id_collateral_type_ref + , a.fair_value + , a.forced_sale_value + , a.id_currency + , a.appraisal_date +FROM cfe.collateral a + INNER JOIN cfe.collateral_ref b + ON a.id_collateral = b.id_collateral + LEFT JOIN cfe.counter_party_ref c + ON a.id_counter_party = c.id_counter_party + INNER JOIN ( SELECT * + FROM common.collateral_type d1 + WHERE id_status IN ( 'C', 'H' ) + AND id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_status IN ( 'C', 'H' ) + AND id_collateral_type = d1.id_collateral_type ) ) d + ON a.id_collateral_type = d.id_collateral_type +; + +-- SELECT WITH COMPLEX ORDER +WITH ex AS ( + SELECT value_date + , posting_date + FROM cfe.execution x + WHERE id_status IN ( 'R', 'H' ) + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status IN ( 'R', 'H' ) ) + AND posting_date = ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status IN ( 'R', 'H' ) + AND value_date = x.value_date ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + WHERE f.value_date <= ( SELECT value_date + FROM ex ) + AND f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into ) + AND id_currency_into = 'NGN' + UNION ALL + SELECT 'NGN' + , 1 + FROM dual ) + , scope AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = 'INTERN' ) + , scope1 AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = 'NGAAP' ) + , c AS ( + SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) balance_bc + FROM scope + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope.id_accounting_scope_code + INNER JOIN ( SELECT id_account_credit id_account + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from + GROUP BY b.code ) + , c1 AS ( + SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) balance_bc + FROM scope1 + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope1.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope1.id_accounting_scope_code + INNER JOIN ( SELECT id_account_credit id_account + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from + GROUP BY b.code ) +SELECT /*+ PARALLEL */ + a.code code + , Lpad( ' ', 4 * ( a.gl_level - 1 ), ' ' ) + || a.code format_code + , b.description + , c.balance_bc + , c1.balance_bc +FROM scope + INNER JOIN cfe.ledger_branch_branch a + ON a.code = a.code_inferior + AND a.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_branch b + ON a.id_accounting_scope = b.id_accounting_scope + AND a.code = b.code + LEFT JOIN c + ON a.code = c.code + LEFT OUTER JOIN c1 + ON a.code = c1.code +WHERE gl_level <= 3 + AND NOT ( c.balance_bc IS NULL + AND c1.balance_bc IS NULL ) +ORDER BY ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 1 ) NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 2 ) ASC NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 3 ) DESC NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 4 ) DESC + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 5 ) ASC + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 6 ) NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 7 ) NULLS FIRST + , code +; + +-- ALL COLUMNS FROM TABLE +SELECT a.* +FROM cfe.instrument a +; + +-- NESTED WITH +WITH teststmt1 AS ( + WITH teststmt2 AS ( + SELECT * + FROM my_table2 ) + SELECT col1 + , col2 + FROM teststmt2 ) +SELECT * +FROM teststmt +; + +( + SELECT __time + FROM traffic_protocol_stat_log + LIMIT 1 ) +UNION ALL ( + SELECT __time + FROM traffic_protocol_stat_log + ORDER BY __time + LIMIT 1 ) +; + +-- GROUP BY +SELECT a + , b + , c + , Sum( d ) +FROM t +GROUP BY a + , b + , c +HAVING Sum( d ) > 0 + AND Count( * ) > 1 +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardTruncateTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardTruncateTest.sql new file mode 100644 index 0000000..f82a7aa --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardTruncateTest.sql @@ -0,0 +1,21 @@ +-- +-- 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. +-- + +-- TRUNCATE 1 +TRUNCATE TABLE cfe.execution +; + +-- TRUNCATE 2 +TRUNCATE TABLE cfe.execution CASCADE +; \ No newline at end of file diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardUpdateTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardUpdateTest.sql new file mode 100644 index 0000000..c9c65d2 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardUpdateTest.sql @@ -0,0 +1,130 @@ +-- +-- 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. +-- + +-- UPDATE COUNTERPARTY +UPDATE risk.counterparty +SET id_counterparty = :id_counterparty + , label = :label + , description = :description + , id_counterparty_group_type = :id_counterparty_group_type + , id_counterparty_type = :id_counterparty_type + , id_counterparty_sub_type = :id_counterparty_sub_type + , id_country_group = :id_country_group + , id_country = :id_country + , id_country_state = :id_country_state + , id_district = :id_district + , id_city = :id_city + , id_industrial_sector = :id_industrial_sector + , id_industrial_sub_sector = :id_industrial_sub_sector + , block_auto_update_flag = :block_auto_update_flag + , id_user_editor = :id_user_editor + , id_organization_unit = :id_organization_unit + , id_status = :id_status + , update_timestamp = current_timestamp +WHERE id_counterparty_ref = :id_counterparty_ref +; + +-- UPDATE COLLATERAL_TYPE +UPDATE common.collateral_type +SET hair_cut = least +WHERE id_collateral_type_ref IN ( SELECT id_collateral_type_ref + FROM common.collateral_type a + WHERE id_status IN ( 'C', 'H', 'C' + , 'H', 'C', 'H' + , 'C', 'H' ) + AND id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_status IN ( 'C', 'H' ) + AND id_collateral_type = a.id_collateral_type ) ) +; + +-- UPDATE COUNTERPARTY_INSTRUMENT +UPDATE risk.counterparty_instrument a1 +SET ( priority + , type + , description + , limit_amout + , id_currency + , end_date ) = ( SELECT a.priority + , a.type + , a.description + , a.limit_amout + , a.id_currency + , a.end_date + FROM risk.imp_counterparty_instrument a + INNER JOIN risk.counterparty b + ON a.id_counterparty = b.id_counterparty + AND b.id_status = 'C' + INNER JOIN risk.instrument c + ON a.id_instrument_beneficiary = c.id_instrument + AND c.id_status = 'C' + INNER JOIN risk.counterparty_instrument e + ON b.id_counterparty_ref = e.id_counterparty_ref + AND e.id_instrument_beneficiary = a.id_instrument_beneficiary + AND e.id_instrument_guarantee = a.id_instrument_guarantee + WHERE e.id_counterparty_ref = a1.id_counterparty_ref + AND e.id_instrument_beneficiary = a1.id_instrument_beneficiary + AND e.id_instrument_guarantee = a1.id_instrument_guarantee ) +WHERE EXISTS ( SELECT a.priority + , a.type + , a.description + , a.limit_amout + , a.id_currency + , a.end_date + FROM risk.imp_counterparty_instrument a + INNER JOIN risk.counterparty b + ON a.id_counterparty = b.id_counterparty + AND b.id_status = 'C' + INNER JOIN risk.instrument c + ON a.id_instrument_beneficiary = c.id_instrument + AND c.id_status = 'C' + INNER JOIN risk.counterparty_instrument e + ON b.id_counterparty_ref = e.id_counterparty_ref + AND e.id_instrument_beneficiary = a.id_instrument_beneficiary + AND e.id_instrument_guarantee = a.id_instrument_guarantee + WHERE e.id_counterparty_ref = a1.id_counterparty_ref + AND e.id_instrument_beneficiary = a1.id_instrument_beneficiary + AND e.id_instrument_guarantee = a1.id_instrument_guarantee ) +; + +-- UPDATE SETS ISSUE 1316 +UPDATE prpjpaymentbill b +SET ( b.packagecode + , b.packageremark + , b.agentcode ) = ( SELECT p.payrefreason + , p.classcode + , p.riskcode + FROM prpjcommbill p + WHERE p.policertiid = 'SDDH200937010330006366' ) /* this is supposed to be UpdateSet 1 */ + , b.payrefnotype = '05' /* this is supposed to be UpdateSet 2 */ + , b.packageunit = '4101170402' /* this is supposed to be UpdateSet 3 */ +WHERE b.payrefno = 'B370202091026000005' +; + +-- UPDATE START JOINS +UPDATE sc_borrower b + INNER JOIN sc_credit_apply a + ON a.borrower_id = b.id +SET b.name = '0.7505105896846266' + , a.credit_line = a.credit_line + 1 +WHERE b.id = 3 +; + +-- UPDATE JOINS +UPDATE table1 +SET columna = 5 +FROM table1 + LEFT JOIN table2 + ON col1 = col2 +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardValueStatementTest.sql b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardValueStatementTest.sql new file mode 100644 index 0000000..0f54004 --- /dev/null +++ b/parser/src/test/resources/com/manticore/jsqlformatter/standardIT/StandardValueStatementTest.sql @@ -0,0 +1,72 @@ +-- +-- 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. +-- + +-- PREPARE TABLE +CREATE TABLE sample_data ( + "DAY" INT + , "VALUE" INT +) +; + +-- SIMPLE EXPRESSION LIST WITH BRACKETS +WITH sample_data ( "DAY" ) + AS ( VALUES ( 0, 1, 2 ) ) +SELECT "DAY" +FROM sample_data +; + +-- MULTIPLE EXPRESSION LIST WITH BRACKETS +WITH sample_data ( "DAY", "VALUE" ) + AS ( VALUES ( ( 0, 13 ), ( 1, 12 ), ( 2, 15 ) + , ( 3, 4 ), ( 4, 8 ), ( 5, 16 ) ) ) +SELECT "DAY" + , "VALUE" +FROM sample_data +; + +-- SIMPLE EXPRESSION LIST WITHOUT BRACKETS +WITH sample_data ( "DAY" ) + AS ( VALUES 0, 1, 2 ) +SELECT "DAY" +FROM sample_data +; + +-- MULTIPLE EXPRESSION LIST WITHOUT BRACKETS +WITH sample_data ( "DAY", "VALUE" ) + AS ( VALUES ( 0, 13 ), ( 1, 12 ), ( 2, 15 ) + , ( 3, 4 ), ( 4, 8 ), ( 5, 16 ) ) +SELECT "DAY" + , "VALUE" +FROM sample_data +; + +-- VALUE LIST UNION SELECT +WITH split ( word + , str + , hascomma ) AS ( + VALUES ( '', 'Auto,A,1234444', 1 ) + UNION ALL + SELECT Substr( str, 0, CASE + WHEN Instr( str, ',' ) + THEN Instr( str, ',' ) + ELSE Length( str ) + 1 + END ) + , Ltrim( Substr( str, Instr( str, ',' ) ), ',' ) + , Instr( str, ',' ) + FROM split + WHERE hascomma ) +SELECT Trim( word ) +FROM split +WHERE word != '' +; \ No newline at end of file diff --git a/pom.xml b/pom.xml index f52bbe7..875c30a 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,6 @@ <url>https://github.com/prestodb/sql</url> <properties> - <air.main.basedir>${project.parent.basedir}</air.main.basedir> <dep.airlift.version>0.198</dep.airlift.version> <air.check.skip-pmd>false</air.check.skip-pmd> <air.check.skip-enforcer>false</air.check.skip-enforcer> diff --git a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java index 744b690..50c64b1 100644 --- a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java +++ b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java @@ -11,7 +11,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package com.facebook.coresql.rewriter; import com.facebook.coresql.parser.AstNode; @@ -52,7 +51,6 @@ public class TestOrderByRewriter "SELECT\n" + " CAST(MAP() AS map<bigint,array<boolean>>) AS \"bool_tensor_features\";", "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", "SELECT abs, 2 as abs;"}; - private static final ImmutableMap<String, String> STATEMENT_TO_REWRITTEN_STATEMENT = new ImmutableMap.Builder<String, String>() .put("CREATE TABLE blah AS SELECT * FROM T ORDER BY y;", "CREATE TABLE blah AS SELECT * FROM T;") .put("INSERT INTO blah SELECT * FROM T ORDER BY y;", "INSERT INTO blah SELECT * FROM T;") @@ -111,7 +109,6 @@ public void rewriteTest() for (Map.Entry<String, String> entry : STATEMENT_TO_REWRITTEN_STATEMENT.entrySet()) { assertStatementRewritten(entry.getKey(), entry.getValue()); } - for (String sql : STATEMENTS_THAT_DONT_NEED_REWRITE) { assertStatementUnchanged(sql); } From d5e81ae3b4d26c1eb8436b4ec2039aa965ead29d Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Tue, 3 Jan 2023 21:07:13 +0700 Subject: [PATCH 09/16] build: Gradle Build and Rail Road Diagrams Added Gradle Build support Updated Airlift/Base to io.airlift 219 Provide explicit Airlift Checkstyle config Move the JavaCC Grammar to a more appropriate place Generate RailRoad Diagrams for the Grammar Downgrade Maven JUnit5 as requested by Airlift Add an ASCII Tree for visualizing the AST --- build.gradle | 68 +++-- config/checkstyle/checkstyle.xml | 275 ++++++++++++++++++ config/checkstyle/suppressions.xml | 9 + gradle.properties | 5 + linter/pom.xml | 7 +- .../coresql/linter/lint/TestMixedAndOr.java | 29 +- .../linter/warning/TestWarningCollector.java | 4 +- parser/build.gradle | 47 +++ parser/grammar/javacc-options-java.txt | 3 + parser/grammar/prepare-javacc-grammar.sh | 2 +- parser/pom.xml | 27 +- .../sqllogictest/java/SqlLogicTest.java | 4 +- .../sqllogictest/java/SqlLogicTestConfig.java | 4 +- .../sqllogictest/java/SqlLogicTestModule.java | 2 +- .../manticore/jsqlformatter/TestUtils.java | 35 ++- .../expression/ParameterTest.java | 42 +++ pom.xml | 23 +- rewriter/pom.xml | 4 +- .../coresql/rewriter/TestOrderByRewriter.java | 4 +- sphinx/src/changelog.rst | 12 +- sphinx/src/index.rst | 5 +- sphinx/src/syntax.rst | 2 +- 22 files changed, 530 insertions(+), 83 deletions(-) create mode 100644 config/checkstyle/checkstyle.xml create mode 100644 config/checkstyle/suppressions.xml create mode 100644 gradle.properties create mode 100644 parser/build.gradle create mode 100644 parser/src/test/java/com/manticore/jsqlformatter/expression/ParameterTest.java diff --git a/build.gradle b/build.gradle index af1fa58..111dee1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,15 +1,11 @@ import se.bjurr.gitchangelog.plugin.gradle.GitChangelogTask - import java.nio.charset.Charset plugins { - //id 'java' - //id 'maven-publish' - //id "ca.coglinc2.javacc" version "latest.release" - //id 'jacoco' - //id "com.github.spotbugs" version "latest.release" - //id 'pmd' - //id 'checkstyle' + id 'java' + id "ca.coglinc2.javacc" version "latest.release" + id "com.github.spotbugs" version "latest.release" + id 'checkstyle' // download the RR tools which have no Maven Repository id "de.undercouch.download" version "latest.release" @@ -17,7 +13,15 @@ plugins { id "se.bjurr.gitchangelog.git-changelog-gradle-plugin" version "latest.release" } -group = 'com.facebook.presto' +allprojects { + repositories { + mavenLocal() + mavenCentral() + maven { + url 'https://oss.sonatype.org/content/repositories/snapshots' + } + } +} def getVersion = { boolean considerSnapshot -> def major = 0 @@ -53,17 +57,33 @@ def getVersion = { boolean considerSnapshot -> } return "${major}.${minor}${snapshot}" } +group = 'com.facebook.presto' version = getVersion(true) - description = 'Java SQL:2016 compliant Parser Suite' -repositories { - gradlePluginPortal() - mavenLocal() - mavenCentral() +java { + withSourcesJar() + withJavadocJar() +} + +test { + useJUnitPlatform() + // set heap size for the test JVM(s) + minHeapSize = "128m" + maxHeapSize = "1G" + jvmArgs << [ + '-Djunit.jupiter.execution.parallel.enabled=true', + '-Djunit.jupiter.execution.parallel.config.strategy=dynamic', + '-Djunit.jupiter.execution.parallel.mode.default=concurrent' + ] +} + +checkstyle { + sourceSets = [sourceSets.main, sourceSets.test] } task renderRR() { + dependsOn ':presto-coresql-parser:compileJavacc' doLast { // these WAR files have been provided as a courtesy by Gunther Rademacher // and belong to the RR - Railroad Diagram Generator Project @@ -73,37 +93,37 @@ task renderRR() { // Please do not use these files without Gunther's permission download.run { src 'http://manticore-projects.com/download/convert.war' - dest "target/rr/convert.war" + dest "$buildDir/rr/convert.war" overwrite false } download.run { src 'http://manticore-projects.com/download/rr.war' - dest "target/rr/rr.war" + dest "$buildDir/rr/rr.war" overwrite false } javaexec { - standardOutput = new FileOutputStream("target/rr/syntax.ebnf") + standardOutput = new FileOutputStream("$buildDir/rr/syntax.ebnf") main = "-jar" args = [ - "target/rr/convert.war", - "parser/target/generated-sources/javacc/parser_tmp.jjt" + "$buildDir/rr/convert.war", + "${project(':presto-coresql-parser').buildDir}/generated/jjtree/com/facebook/coresql/parser/parser.jj" ] } javaexec { main = "-jar" args = [ - "target/rr/rr.war", + "$buildDir/rr/rr.war", "-noepsilon", "-color:#4D88FF", "-offset:0", "-width:800", //"-png", //"-out:target/rr/JSqlParserCC.zip", - "-out:target/rr/syntax.xhtml", - "target/rr/syntax.ebnf" + "-out:$buildDir/site/sphinx/_static/syntax.xhtml", + "$buildDir/rr/syntax.ebnf" ] } } @@ -171,7 +191,7 @@ task sphinx(type: Exec) { , "-Drelease=${getVersion(false)}" , "-Drst_prolog=$PROLOG" , "sphinx/src" - , "target/site/sphinx" + , "$buildDir/site/sphinx" ] executable "sphinx-build" @@ -183,5 +203,7 @@ task sphinx(type: Exec) { ext.output = { return standardOutput.toString() } + + finalizedBy renderRR } diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000..e95b987 --- /dev/null +++ b/config/checkstyle/checkstyle.xml @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module PUBLIC + "-//Puppy Crawl//DTD Check Configuration 1.3//EN" + "http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd"> +<module name="Checker"> + <module name="SuppressionFilter"> + <property name="file" value="config/checkstyle/suppressions.xml"/> + </module> + <module name="FileTabCharacter" /> + <module name="NewlineAtEndOfFile"> + <property name="lineSeparator" value="lf" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="\r" /> + <property name="message" value="Line contains carriage return" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value=" \n" /> + <property name="message" value="Line has trailing whitespace" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="\n\n\n" /> + <property name="message" value="Multiple consecutive blank lines" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="\n\n\Z" /> + <property name="message" value="Blank line before end of file" /> + </module> + + <module name="RegexpMultiline"> + <property name="format" value="\{\n\n" /> + <property name="message" value="Blank line after opening brace" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="\n\n\s*\}" /> + <property name="message" value="Blank line before closing brace" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="[^;]\s\)+\s*[\{;,]?\s*\n" /> + <property name="message" value="Whitespace character before closing parenthesis" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="->\s*\{\s+\}" /> + <property name="message" value="Whitespace inside empty lambda body" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="->(\s*+(//.*+)?\n)++\s*+\{" /> + <property name="message" value="Lambda opening brace should be on the same line as ->" /> + </module> + + <module name="RegexpSingleline"> + <property name="format" value="^import static .*\.(of|copyOf|valueOf);$" /> + <property name="message" value="The following methods may not be statically imported: of, copyOf, valueOf" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^import static (?!java\.lang\.String\.format;).*\.format;" /> + <property name="message" value="Only 'format' from java.lang.String may be statically imported" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^import static java\.util\.Optional\." /> + <property name="message" value="Members of Optional may not be statically imported" /> + </module> + + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*Objects\.requireNonNull" /> + <property name="message" value="Objects.requireNonNull should only be used with static imports" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*Math\.toIntExact" /> + <property name="message" value="Math.toIntExact should only be used with static imports" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*ImmutableMap\.toImmutableMap" /> + <property name="message" value="ImmutableMap.toImmutableMap should only be used with static imports" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*ImmutableList\.toImmutableList" /> + <property name="message" value="ImmutableList.toImmutableList should only be used with static imports" /> + </module> + <module name="RegexpSingleline"> + <property name="format" value="^(?!import ).*ImmutableSet\.toImmutableSet" /> + <property name="message" value="ImmutableSet.toImmutableSet should only be used with static imports" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import org\.testng\.Assert;$" /> + <property name="message" value="org.testng.Assert should only be used with static imports" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import com\.google\.common\.base\.MoreObjects;$" /> + <property name="message" value="com.google.common.base.MoreObjects should only be used with static imports" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import com\.google\.common\.base\.Preconditions;$" /> + <property name="message" value="com.google.common.base.Preconditions should only be used with static imports" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import com\.google\.common\.base\.Verify;$" /> + <property name="message" value="com.google.common.base.Verify should only be used with static imports" /> + </module> + + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import org\.jetbrains\.annotations\.NotNull;$" /> + <property name="message" value="Not null is the default for the codebase and should not be annotated" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import org\.jetbrains\.annotations\.Nullable;$" /> + <property name="message" value="Use javax.annotation.Nullable instead of org.jetbrains.annotations.Nullable" /> + </module> + <module name="RegexpMultiline"> + <property name="format" value="^[ \t]*import static org\.testng\.AssertJUnit\." /> + <property name="message" value="Use org.testng.Assert instead of org.testng.AssertJUnit" /> + </module> + + <module name="SuppressWarningsFilter" /> + + <module name="TreeWalker"> + <module name="SuppressWarningsHolder" /> + + <module name="SuppressionXpathSingleFilter"> + <property name="checks" value="RedundantModifier"/> + <property name="query" value="//CLASS_DEF/OBJBLOCK/*/MODIFIERS/*"/> + </module> + <module name="RedundantModifier" /> + + <module name="EmptyBlock"> + <property name="option" value="text" /> + <property name="tokens" value=" + LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_IF, + LITERAL_FOR, LITERAL_TRY, LITERAL_WHILE, INSTANCE_INIT, STATIC_INIT" /> + </module> + <module name="EmptyStatement" /> + <module name="EmptyForInitializerPad" /> + <module name="EmptyForIteratorPad"> + <property name="option" value="space" /> + </module> + <module name="MethodParamPad"> + <property name="allowLineBreaks" value="true" /> + <property name="option" value="nospace" /> + </module> + <module name="ParenPad" /> + <module name="TypecastParenPad" /> + <module name="NeedBraces" /> + <module name="LeftCurly"> + <property name="option" value="nl" /> + <property name="tokens" value="CLASS_DEF, CTOR_DEF, INTERFACE_DEF, METHOD_DEF" /> + </module> + <module name="LeftCurly"> + <property name="option" value="eol" /> + <property name="tokens" value=" + LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, + LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE" /> + </module> + <module name="RightCurly"> + <property name="option" value="alone" /> + </module> + <module name="EmptyLineSeparator"> + <property name="allowNoEmptyLineBetweenFields" value="true" /> + <property name="tokens" value=" + IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF, + STATIC_INIT, INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF" /> + </module> + <module name="GenericWhitespace" /> + <module name="WhitespaceAfter" /> + <module name="NoWhitespaceAfter" /> + <module name="NoWhitespaceBefore" /> + <module name="SingleSpaceSeparator" /> + <module name="Indentation"> + <property name="throwsIndent" value="8" /> + <property name="lineWrappingIndentation" value="8" /> + </module> + + <module name="UpperEll" /> + <module name="DefaultComesLast" /> + <module name="ArrayTypeStyle" /> + <module name="MultipleVariableDeclarations" /> + <module name="ModifierOrder" /> + <module name="OneStatementPerLine" /> + <module name="StringLiteralEquality" /> + <module name="MutableException" /> + <module name="EqualsHashCode" /> + <module name="InnerAssignment" /> + <module name="InterfaceIsType" /> + <module name="HideUtilityClassConstructor" /> + <module name="ExplicitInitialization" /> + <module name="OneTopLevelClass" /> + + <module name="MemberName" /> + <module name="LocalVariableName" /> + <module name="LocalFinalVariableName" /> + <module name="TypeName" /> + <module name="PackageName"> + <property name="format" value="^[a-z][a-z0-9]*(\.[a-z][a-z0-9]*)*$" /> + </module> + <module name="PackageDeclaration" /> + <module name="ParameterName" /> + <module name="StaticVariableName" /> + <module name="ClassTypeParameterName"> + <property name="format" value="^[A-Z][A-Za-z0-9]*$" /> + </module> + <module name="MethodTypeParameterName"> + <property name="format" value="^[A-Z][A-Za-z0-9]*$" /> + </module> + + <module name="AnnotationUseStyle"> + <property name="trailingArrayComma" value="ignore" /> + </module> + + <module name="AvoidStarImport" /> + <module name="RedundantImport" /> + <module name="UnusedImports" /> + + <module name="ImportOrder"> + <property name="groups" value="*,javax,java" /> + <property name="separated" value="true" /> + <property name="option" value="bottom" /> + <property name="sortStaticImportsAlphabetically" value="true" /> + </module> + + <module name="WhitespaceAround"> + <property name="allowEmptyConstructors" value="true" /> + <property name="allowEmptyMethods" value="true" /> + <property name="allowEmptyLambdas" value="true" /> + <property name="allowEmptyTypes" value="true" /> + <property name="ignoreEnhancedForColon" value="false" /> + <property name="tokens" value=" + ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, + BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, DO_WHILE, EQUAL, GE, GT, + LAMBDA, LAND, LCURLY, LE, LITERAL_ASSERT, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, + LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SWITCH, + LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, + LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, + PLUS, PLUS_ASSIGN, QUESTION, SL, SLIST, SL_ASSIGN, SR, SR_ASSIGN, + STAR, STAR_ASSIGN, TYPE_EXTENSION_AND" /> + </module> + + <module name="WhitespaceAfter" /> + + <module name="NoWhitespaceAfter"> + <property name="tokens" value="DOT" /> + <property name="allowLineBreaks" value="false" /> + </module> + + <module name="IllegalToken"> + <property name="tokens" value="LITERAL_ASSERT" /> + </module> + + <module name="IllegalImport"> + <property name="illegalPkgs" value="org.weakref.jmx.internal" /> + <property name="illegalPkgs" value="jersey.repackaged" /> + <property name="illegalPkgs" value="jdk.nashorn.internal" /> + <property name="illegalPkgs" value="jdk.internal" /> + </module> + + <module name="IllegalImport"> + <property name="illegalPkgs" value=".*\.\$internal" /> + <!-- Shaded Guava --> + <property name="illegalPkgs" value=".*\.com\.google\.common" /> + <!-- Shaded okhttp3; match "shaded", since "com.example.okhttp3" could be OkHttp-specific code within com.example --> + <property name="illegalPkgs" value=".*\.shaded\.okhttp3" /> + <property name="regexp" value="true" /> + <!-- Shaded org.apache code --> + <property name="illegalPkgs" value=".*\.shaded\.org\.apache" /> + </module> + + <module name="MethodName"> + <property name="format" value="^[a-z][a-zA-Z0-9_]*$"/> + </module> + + <module name="RegexpSinglelineJava"> + <property name="format" value="(class|interface) ([a-zA-Z0-9_])+(<.*>)? (extends|implements)" /> + <property name="message" value="No new line before extends/implements" /> + <property name="ignoreComments" value="true" /> + </module> + </module> +</module> diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml new file mode 100644 index 0000000..e27e45a --- /dev/null +++ b/config/checkstyle/suppressions.xml @@ -0,0 +1,9 @@ +<?xml version="1.0"?> + <!DOCTYPE suppressions PUBLIC + "-//Checkstyle//DTD SuppressionFilter Configuration 1.0//EN" + "https://checkstyle.org/dtds/suppressions_1_0.dtd"> +<suppressions> + <suppress checks="" + files="com/facebook/coresql/parser/AstNode.java" + lines="0-9999"/> +</suppressions> \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..7325d74 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,5 @@ +org.gradle.jvmargs=-Xmx1G -XX:MaxPermSize=512m -Dfile.encoding=UTF-8 +org.gradle.caching=true +org.gradle.parallel=true +org.gradle.configureondemand=true + diff --git a/linter/pom.xml b/linter/pom.xml index e5cac12..b5d516c 100644 --- a/linter/pom.xml +++ b/linter/pom.xml @@ -21,13 +21,14 @@ <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> - <version>5.9.0</version> + <version>5.8.1</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.testng</groupId> - <artifactId>testng</artifactId> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-api</artifactId> + <version>5.8.1</version> <scope>test</scope> </dependency> diff --git a/linter/src/test/java/com/facebook/coresql/linter/lint/TestMixedAndOr.java b/linter/src/test/java/com/facebook/coresql/linter/lint/TestMixedAndOr.java index bf93ed9..2b638b7 100644 --- a/linter/src/test/java/com/facebook/coresql/linter/lint/TestMixedAndOr.java +++ b/linter/src/test/java/com/facebook/coresql/linter/lint/TestMixedAndOr.java @@ -16,23 +16,23 @@ import com.facebook.coresql.linter.warning.DefaultWarningCollector; import com.facebook.coresql.linter.warning.WarningCollectorConfig; import com.facebook.coresql.parser.AstNode; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.facebook.coresql.linter.warning.StandardWarningCode.MIXING_AND_OR_WITHOUT_PARENTHESES; import static com.facebook.coresql.parser.ParserHelper.parseStatement; -import static org.testng.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class TestMixedAndOr { - private static final LintingVisitor LINTING_VISITOR = new MixedAndOr(new DefaultWarningCollector(new WarningCollectorConfig().setMaxWarnings(1))); + private static final LintingVisitor LINTING_VISITOR = new MixedAndOr( + new DefaultWarningCollector(new WarningCollectorConfig().setMaxWarnings(1))); private static final String[] NON_WARNING_SQL_STRINGS = new String[] { "SELECT (true or false) and false;", "SELECT true or false or true;", "SELECT true and false and false;", "SELECT a FROM T WHERE a.id = 2 or (a.id = 3 and a.age = 73);", "SELECT a FROM T WHERE (a.id = 2 or a.id = 3) and (a.age = 73 or a.age = 100);", - "SELECT * from Evaluation e JOIN Value v ON e.CaseNum = v.CaseNum\n" + - " AND e.FileNum = v.FileNum AND e.ActivityNum = v.ActivityNum;", + "SELECT * from Evaluation e JOIN Value v ON e.CaseNum = v.CaseNum\n" + " AND e.FileNum = v.FileNum AND e.ActivityNum = v.ActivityNum;", "use a.b;", " SELECT 1;", "SELECT a FROM T;", @@ -46,27 +46,22 @@ public class TestMixedAndOr "CREATE TABLE T AS SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "INSERT INTO T SELECT TRANSFORM(ARRAY[x], x -> x + 2) AS arra FROM T;", "SELECT ROW_NUMBER() OVER(PARTITION BY x) FROM T;", - "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + - "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", - "SELECT\n" + - " CAST(MAP() AS map<bigint,array<boolean>>) AS \"bool_tensor_features\";", + "SELECT x, SUM(y) OVER (PARTITION BY y ORDER BY 1) AS min\n" + "FROM (values ('b',10), ('a', 10)) AS T(x, y)\n;", + "SELECT\n" + " CAST(MAP() AS map<bigint,array<boolean>>) AS \"bool_tensor_features\";", "SELECT f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f(f())))))))))))))))))))))))))))));", - "SELECT abs, 2 as abs;", - }; - + "SELECT abs, 2 as abs;"}; private static final String[] WARNING_SQL_STRINGS = new String[] { "SELECT true or false and false;", "SELECT a FROM T WHERE a.id = 2 or a.id = 3 and a.age = 73;", - "SELECT a FROM T WHERE (a.id = 2 or a.id = 3) and a.age = 73 or a.age = 100;" - }; + "SELECT a FROM T WHERE (a.id = 2 or a.id = 3) and a.age = 73 or a.age = 100;"}; private static void assertHasMixedAndOrWarnings(String statement, int expectedNumWarnings) { AstNode ast = parseStatement(statement); LINTING_VISITOR.lint(ast); - assertEquals(LINTING_VISITOR.getWarningCollector().getAllWarnings().size(), expectedNumWarnings); - LINTING_VISITOR.getWarningCollector().getAllWarnings().forEach(x -> - assertEquals(x.getWarningCode(), MIXING_AND_OR_WITHOUT_PARENTHESES.getWarningCode())); + assertEquals(LINTING_VISITOR.getWarningCollector().getAllWarnings().size(), expectedNumWarnings, statement); + LINTING_VISITOR.getWarningCollector().getAllWarnings() + .forEach(x -> assertEquals(x.getWarningCode(), MIXING_AND_OR_WITHOUT_PARENTHESES.getWarningCode())); } @Test diff --git a/linter/src/test/java/com/facebook/coresql/linter/warning/TestWarningCollector.java b/linter/src/test/java/com/facebook/coresql/linter/warning/TestWarningCollector.java index f729489..1fe3e3b 100644 --- a/linter/src/test/java/com/facebook/coresql/linter/warning/TestWarningCollector.java +++ b/linter/src/test/java/com/facebook/coresql/linter/warning/TestWarningCollector.java @@ -14,10 +14,10 @@ package com.facebook.coresql.linter.warning; import com.facebook.coresql.parser.AstNode; -import org.testng.annotations.Test; +import org.junit.jupiter.api.Test; import static com.facebook.coresql.parser.ParserHelper.parseStatement; -import static org.testng.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class TestWarningCollector { diff --git a/parser/build.gradle b/parser/build.gradle new file mode 100644 index 0000000..01add7b --- /dev/null +++ b/parser/build.gradle @@ -0,0 +1,47 @@ +plugins { + id 'java' + id "ca.coglinc2.javacc" version "latest.release" + +} + +dependencies { + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.+' + testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.+' + testImplementation 'org.junit.jupiter:junit-jupiter-params:5.9.+' + + // for the ASCII Trees + testImplementation 'hu.webarticum:tree-printer:+' + + // https://mvnrepository.com/artifact/com.google.inject/guice + testImplementation 'com.google.inject:guice:5.1.0' + + // https://mvnrepository.com/artifact/jakarta.validation/jakarta.validation-api + testImplementation 'jakarta.validation:jakarta.validation-api:3.0.2' + + // https://mvnrepository.com/artifact/io.airlift/log + testImplementation 'io.airlift:log:+' + + // https://mvnrepository.com/artifact/io.airlift/configuration + testImplementation 'io.airlift:configuration:+' + + // https://mvnrepository.com/artifact/io.airlift/bootstrap + testImplementation 'io.airlift:bootstrap:+' + + // https://mvnrepository.com/artifact/com.google.guava/guava + testImplementation 'com.google.guava:guava:31.1-jre' + + // enforce latest version of JavaCC + javacc 'net.java.dev.javacc:javacc:+' +} + +java { + withSourcesJar() + withJavadocJar() + + //spotbugs + //pmd +} + +compileJavacc { + arguments = [grammar_encoding: 'UTF-8', static: 'false' /*, java_template_type: 'modern'*/ ] +} diff --git a/parser/grammar/javacc-options-java.txt b/parser/grammar/javacc-options-java.txt index d598cd2..1aa6deb 100644 --- a/parser/grammar/javacc-options-java.txt +++ b/parser/grammar/javacc-options-java.txt @@ -12,6 +12,9 @@ options { VISITOR = true; VISITOR_RETURN_TYPE = "void"; VISITOR_DATA_TYPE = "Void"; + DEBUG_PARSER = false; + DEBUG_LOOKAHEAD = false; + DEBUG_TOKEN_MANAGER = false; } PARSER_BEGIN(SqlParser) diff --git a/parser/grammar/prepare-javacc-grammar.sh b/parser/grammar/prepare-javacc-grammar.sh index 4340990..5e34635 100755 --- a/parser/grammar/prepare-javacc-grammar.sh +++ b/parser/grammar/prepare-javacc-grammar.sh @@ -1,4 +1,4 @@ # Concatenate all the fragments into a .jj file. -gendir='../target/generated-sources/javacc' +gendir='../main/jjtree/com/facebook/coresql/parser/' mkdir -p $gendir cat javacc-options-java.txt nonreservedwords.txt reservedwords.txt sql-spec.txt presto-extensions.txt lexical-elements.txt > $gendir/parser_tmp.jjt diff --git a/parser/pom.xml b/parser/pom.xml index 030ee1d..4f0430e 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -21,52 +21,66 @@ <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> - <version>5.9.0</version> + <version>5.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> - <version>5.9.0</version> + <version>5.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-params</artifactId> - <version>5.9.0</version> + <version>5.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> + <scope>test</scope> </dependency> <dependency> - <groupId>com.facebook.airlift</groupId> + <groupId>io.airlift</groupId> <artifactId>configuration</artifactId> + <scope>test</scope> </dependency> <dependency> - <groupId>com.facebook.airlift</groupId> + <groupId>io.airlift</groupId> <artifactId>log</artifactId> + <scope>test</scope> </dependency> <dependency> - <groupId>com.facebook.airlift</groupId> + <groupId>io.airlift</groupId> <artifactId>bootstrap</artifactId> + <scope>test</scope> </dependency> <dependency> <groupId>com.google.inject</groupId> <artifactId>guice</artifactId> + <scope>test</scope> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> + <scope>test</scope> + </dependency> + + <!-- https://mvnrepository.com/artifact/hu.webarticum/tree-printer --> + <dependency> + <groupId>hu.webarticum</groupId> + <artifactId>tree-printer</artifactId> + <version>3.0.0</version> + <scope>test</scope> </dependency> </dependencies> @@ -104,7 +118,6 @@ <goal>jjtree-javacc</goal> </goals> <configuration> - <sourceDirectory>target/generated-sources/javacc</sourceDirectory> <outputLanguage>java</outputLanguage> </configuration> </execution> diff --git a/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTest.java b/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTest.java index c8cdfe9..434bebd 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTest.java +++ b/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTest.java @@ -14,11 +14,11 @@ package com.facebook.coresql.parser.sqllogictest.java; -import com.facebook.airlift.bootstrap.Bootstrap; -import com.facebook.airlift.log.Logger; import com.facebook.coresql.parser.AstNode; import com.google.inject.Inject; import com.google.inject.Injector; +import io.airlift.bootstrap.Bootstrap; +import io.airlift.log.Logger; import java.io.FileNotFoundException; import java.io.IOException; diff --git a/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTestConfig.java b/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTestConfig.java index a3b74ef..4fd323c 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTestConfig.java +++ b/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTestConfig.java @@ -14,9 +14,9 @@ package com.facebook.coresql.parser.sqllogictest.java; -import com.facebook.airlift.configuration.Config; -import com.facebook.airlift.configuration.ConfigDescription; import com.facebook.coresql.parser.sqllogictest.java.SqlLogicTest.DatabaseDialect; +import io.airlift.configuration.Config; +import io.airlift.configuration.ConfigDescription; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; diff --git a/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTestModule.java b/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTestModule.java index 682a896..0313240 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTestModule.java +++ b/parser/src/test/java/com/facebook/coresql/parser/sqllogictest/java/SqlLogicTestModule.java @@ -17,8 +17,8 @@ import com.google.inject.Binder; import com.google.inject.Module; -import static com.facebook.airlift.configuration.ConfigBinder.configBinder; import static com.google.inject.Scopes.SINGLETON; +import static io.airlift.configuration.ConfigBinder.configBinder; public class SqlLogicTestModule implements Module diff --git a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java b/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java index 3cb5ac8..56916a2 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java +++ b/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java @@ -19,6 +19,9 @@ import com.facebook.coresql.parser.SqlParser; import com.facebook.coresql.parser.SqlParserTokenManager; import com.facebook.coresql.parser.Unparser; +import hu.webarticum.treeprinter.SimpleTreeNode; +import hu.webarticum.treeprinter.TreeNode; +import hu.webarticum.treeprinter.printer.listing.ListingTreePrinter; import org.junit.jupiter.api.Assertions; import java.io.StringReader; @@ -62,22 +65,44 @@ public static AstNode parseStatement(String sql) throws ParseException return parser.getResult(); } - public static void assertParseAndUnparse(String sqlStr, boolean relaxed) + public static AstNode assertParseAndUnparse(String sqlStr, boolean relaxed) { String expectedSqlStr = buildSqlString(sqlStr, relaxed); AstNode ast = null; try { ast = parseStatement(sqlStr); + String actualSqlStr = buildSqlString(Unparser.unparse(ast), relaxed); + Assertions.assertEquals(expectedSqlStr, actualSqlStr, "Failed SQL:\n" + sqlStr); } catch (ParseException ex) { Assertions.fail(ex.getLocalizedMessage() + "\n" + sqlStr); } - String actualSqlStr = buildSqlString(Unparser.unparse(ast), relaxed); - Assertions.assertEquals(expectedSqlStr, actualSqlStr, "Failed SQL:\n" + sqlStr); + return ast; } - public static void assertParseAndUnparse(String sqlStr) throws ParseException + public static AstNode assertParseAndUnparse(String sqlStr) { - assertParseAndUnparse(sqlStr, true); + return assertParseAndUnparse(sqlStr, true); + } + + public static SimpleTreeNode translateNode(AstNode astNode) + { + String image = astNode.GetImage() == null || astNode.GetImage().isEmpty() + ? astNode.toString() + " [" + astNode.getLocation() + "]" + : astNode.toString() + ": " + astNode.GetImage() + " [" + astNode.getLocation() + "]"; + SimpleTreeNode simpleTreeNode = new SimpleTreeNode(image); + AstNode[] astNodeChildren = new AstNode[astNode.NumChildren()]; + for (int i = 0; i < astNode.NumChildren(); i++) { + simpleTreeNode.addChild(translateNode(astNode.GetChild(i))); + } + return simpleTreeNode; + } + + public static String formatToTree(AstNode astNode) throws Exception + { + TreeNode rootTreeNode = null; + SimpleTreeNode rootNode = new SimpleTreeNode("SQL Text"); + rootNode.addChild(translateNode(astNode)); + return new ListingTreePrinter().stringify(rootNode); } } diff --git a/parser/src/test/java/com/manticore/jsqlformatter/expression/ParameterTest.java b/parser/src/test/java/com/manticore/jsqlformatter/expression/ParameterTest.java new file mode 100644 index 0000000..7614c97 --- /dev/null +++ b/parser/src/test/java/com/manticore/jsqlformatter/expression/ParameterTest.java @@ -0,0 +1,42 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.manticore.jsqlformatter.expression; + +import com.facebook.coresql.parser.AstNode; +import com.facebook.coresql.parser.ParseException; +import com.facebook.coresql.parser.Unparser; +import com.manticore.jsqlformatter.TestUtils; +import org.junit.jupiter.api.Test; + +public class ParameterTest +{ + @Test + public void testParameter() throws ParseException + { + // String sqlStr = "SELECT Overlaps( overlaps ) AS overlaps\n" + "FROM overlaps.overlaps overlaps\n" + "WHERE + // overlaps = 'overlaps'\n" + " AND (CURRENT_TIME, INTERVAL '1' HOUR) OVERLAPS (CURRENT_TIME, INTERVAL -'1' + // HOUR)\n" + ";"; + String sqlStr = "SELECT /*+parallel*/ sqrt(40);"; + // String sqlStr = "SELECT :test;"; + // String sqlStr = "SELECT NEXT VALUE FOR a from b;"; + AstNode astNode = TestUtils.assertParseAndUnparse(sqlStr); + System.out.println(Unparser.unparse(astNode)); + try { + System.out.println(TestUtils.formatToTree(astNode)); + } + catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/pom.xml b/pom.xml index 875c30a..4019dde 100644 --- a/pom.xml +++ b/pom.xml @@ -3,9 +3,9 @@ <modelVersion>4.0.0</modelVersion> <parent> - <groupId>com.facebook.airlift</groupId> + <groupId>io.airlift</groupId> <artifactId>airbase</artifactId> - <version>100</version> + <version>130</version> </parent> <groupId>com.facebook.presto</groupId> @@ -18,7 +18,7 @@ <url>https://github.com/prestodb/sql</url> <properties> - <dep.airlift.version>0.198</dep.airlift.version> + <dep.airlift.version>219</dep.airlift.version> <air.check.skip-pmd>false</air.check.skip-pmd> <air.check.skip-enforcer>false</air.check.skip-enforcer> <air.check.skip-checkstyle>false</air.check.skip-checkstyle> @@ -35,19 +35,19 @@ <dependencyManagement> <dependencies> <dependency> - <groupId>com.facebook.airlift</groupId> + <groupId>io.airlift</groupId> <artifactId>configuration</artifactId> <version>${dep.airlift.version}</version> </dependency> <dependency> - <groupId>com.facebook.airlift</groupId> + <groupId>io.airlift</groupId> <artifactId>log</artifactId> <version>${dep.airlift.version}</version> </dependency> <dependency> - <groupId>com.facebook.airlift</groupId> + <groupId>io.airlift</groupId> <artifactId>bootstrap</artifactId> <version>${dep.airlift.version}</version> </dependency> @@ -123,7 +123,16 @@ </archive> </configuration> </plugin> - + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-checkstyle-plugin</artifactId> + <configuration> + <configLocation>config/checkstyle/checkstyle.xml</configLocation> + <suppressionsLocation>config/checkstyle/suppressions.xml</suppressionsLocation> + </configuration> + </plugin> + <plugin> <groupId>com.diffplug.spotless</groupId> <artifactId>spotless-maven-plugin</artifactId> diff --git a/rewriter/pom.xml b/rewriter/pom.xml index 7d962be..eb8e91f 100644 --- a/rewriter/pom.xml +++ b/rewriter/pom.xml @@ -21,14 +21,14 @@ <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> - <version>5.9.0</version> + <version>5.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> - <version>5.9.0</version> + <version>5.8.1</version> <scope>test</scope> </dependency> diff --git a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java index 50c64b1..943d9f2 100644 --- a/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java +++ b/rewriter/src/test/java/com/facebook/coresql/rewriter/TestOrderByRewriter.java @@ -92,8 +92,8 @@ private void assertStatementUnchanged(String originalStatement) private void assertStatementRewritten(String originalStatement, String expectedStatement) { Optional<RewriteResult> result = getRewriteResult(originalStatement); - Assertions.assertTrue(result.isPresent()); - Assertions.assertEquals(result.get().getRewrittenSql(), expectedStatement); + Assertions.assertTrue(result.isPresent(), originalStatement); + Assertions.assertEquals(result.get().getRewrittenSql(), expectedStatement, originalStatement); } private Optional<RewriteResult> getRewriteResult(String originalStatement) diff --git a/sphinx/src/changelog.rst b/sphinx/src/changelog.rst index edb2416..76af351 100644 --- a/sphinx/src/changelog.rst +++ b/sphinx/src/changelog.rst @@ -8,16 +8,16 @@ Latest Changes since |JSQLPARSER_VERSION| ============================================================= - * **fix: Try using native GIT** + * **test: Add many more Real Life SQL statements** - Andreas Reichel, 2022-12-26 - * **fix: Try using native GIT** + Andreas Reichel, 2022-12-27 + * **style: Tune the Eclipse Formatter Configuration** - Andreas Reichel, 2022-12-26 - * **fix: Gradle Wrapper is not needed** + Andreas Reichel, 2022-12-27 + * **doc: Update the readme** Andreas Reichel, 2022-12-26 - * **fix: Gradle Wrapper is needed** + * **fix: Try using native GIT** Andreas Reichel, 2022-12-26 * **fix: Git Branch is MAIN** diff --git a/sphinx/src/index.rst b/sphinx/src/index.rst index aed1377..ab95984 100644 --- a/sphinx/src/index.rst +++ b/sphinx/src/index.rst @@ -1,6 +1,6 @@ -########################### +############################ Java SQL:2016 Parser Library -########################### +############################ .. toctree:: :maxdepth: 2 @@ -8,6 +8,7 @@ Java SQL:2016 Parser Library usage contribution + syntax keywords changelog diff --git a/sphinx/src/syntax.rst b/sphinx/src/syntax.rst index d9b1960..cca03ad 100644 --- a/sphinx/src/syntax.rst +++ b/sphinx/src/syntax.rst @@ -7,5 +7,5 @@ Kindly provided by Gunther Rademacher. .. raw:: html - <iframe id="rrFrame" src="_static/JSqlParserCC.xhtml" height="640" width="100%"></iframe></div> + <iframe id="rrFrame" src="_static/syntax.xhtml" height="640" width="100%"></iframe> From fa5d5067559822337c8f1cf1ed26790efa9cc00b Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Tue, 3 Jan 2023 21:12:42 +0700 Subject: [PATCH 10/16] doc: changelog.rst Signed-off-by: Andreas Reichel <andreas@manticore-projects.com> --- .../com/facebook/coresql/parser/parser.jjt | 8322 +++++++++++++++++ sphinx/src/changelog.rst | 3 + 2 files changed, 8325 insertions(+) create mode 100644 parser/src/main/jjtree/com/facebook/coresql/parser/parser.jjt diff --git a/parser/src/main/jjtree/com/facebook/coresql/parser/parser.jjt b/parser/src/main/jjtree/com/facebook/coresql/parser/parser.jjt new file mode 100644 index 0000000..25e9db0 --- /dev/null +++ b/parser/src/main/jjtree/com/facebook/coresql/parser/parser.jjt @@ -0,0 +1,8322 @@ +options { + STATIC = false; + LOOKAHEAD=3; + IGNORE_CASE=true; + UNICODE_INPUT=true; + ERROR_REPORTING=false; + NODE_DEFAULT_VOID = true; + NODE_SCOPE_HOOK = true; + NODE_CLASS = "AstNode"; + NODE_PREFIX = ""; + MULTI = true; + VISITOR = true; + VISITOR_RETURN_TYPE = "void"; + VISITOR_DATA_TYPE = "Void"; + DEBUG_PARSER = false; + DEBUG_LOOKAHEAD = false; + DEBUG_TOKEN_MANAGER = false; +} + +PARSER_BEGIN(SqlParser) +package com.facebook.coresql.parser; + +public class SqlParser { + private boolean IsIdNonReservedWord() { + int kind = getToken(1).kind; + if (kind == regular_identifier || kind == delimited_identifier || kind == Unicode_delimited_identifier) return true; + + if (!(kind >= MIN_NON_RESERVED_WORD && kind <= MAX_NON_RESERVED_WORD)) return false; // Not a nonreserved word. + + // Some special cases. + switch (kind) { + // Some contextual keywords + case GROUP: + case ORDER: + case PARTITION: + return getToken(2).kind != BY; + + case LIMIT: + return getToken(2).kind != unsigned_integer; + + case ROWS: + return getToken(2).kind != BETWEEN; + + // Some builtin functions + case TRIM: + case POSITION: + case MOD: + case POWER: + case RANK: + case ROW_NUMBER: + case FLOOR: + case MIN: + case MAX: + case UPPER: + case LOWER: + case CARDINALITY: + case ABS: + return getToken(2).kind != lparen; + + default: + return true; + } + } + + private boolean SyncToSemicolon() { + while (getToken(1).kind != EOF && getToken(1).kind != SqlParserConstants.semicolon) getNextToken(); + + if (getToken(1).kind == semicolon) { + getNextToken(); + } + + return true; + } + + private boolean NotEof() { + return getToken(1).kind != EOF; + } + + public void PushNode(Node node) { jjtree.pushNode(node); } + public Node PopNode() { return jjtree.popNode(); } + + void jjtreeOpenNodeScope(Node node) { + ((AstNode)node).beginToken = getToken(1); + } + + void jjtreeCloseNodeScope(Node node) { + AstNode astNode = ((AstNode)node); + astNode.endToken = getToken(0); + Token t = astNode.beginToken; + + // For some nodes, the node is opened after some children are already created. Reset the begin for those to be + // the begin of the left-most child. + if (astNode.NumChildren() > 0) { + Token t0 = astNode.GetChild(0).beginToken; + if (t0.beginLine < t.beginLine || (t0.beginLine == t.beginLine && t0.beginColumn < t.beginColumn)) { + astNode.beginToken = t0; + } + } + + if (astNode.IsNegatableOperator()) { + Token t1 = astNode.GetChild(0).endToken; + + if (astNode.Kind() == JJTISNULL) { + // IsNull -- see if the penultimate token is NOT + while (t1 != null && t1.kind != IS) { + t1 = t1.next; + } + + if (t1.next.kind == NOT) { + astNode.SetNegated(true); + } + } + else if (astNode.NumChildren() > 1) { + Token t2 = astNode.GetChild(1).beginToken; + while (t1.next != null && t1.next != t2) { + if (t1.kind == NOT) { + astNode.SetNegated(true); + break; + } + t1 = t1.next; + } + } + } + else if (astNode.NumChildren() == 2 && astNode.IsOperator()) { + // Hack locate the token just before the first token of the second operator + Token t1 = astNode.GetChild(0).endToken; + Token t2 = astNode.GetChild(1).beginToken; + while (t1.next != null && t1.next != t2) { + t1 = t1.next; + } + astNode.SetOperator(t1.kind); + } + else if (astNode.NumChildren() == 1 && astNode.IsOperator()) { + astNode.SetOperator(astNode.beginToken.kind); + } + } + + public AstNode getResult() + { + return (AstNode) jjtree.popNode(); + } + } + +PARSER_END(SqlParser) + +TOKEN_MGR_DECLS: +{ + void setKindToIdentifier(Token t) { + t.kind = regular_identifier; + } + + void setUnicodeLiteralType(Token t) { + t.kind = unicode_literal; + } + + void StoreImage(Token matchedToken) { + matchedToken.image = image.toString(); + } +} + +// Temporary entry point +Node CompilationUnit() #CompilationUnit: +{} +{ + ( + LOOKAHEAD({ NotEof() }) + try { + direct_SQL_statement() + } catch(ParseException pe) { + System.err.println("Parse error: " + getToken(1).beginLine + ":" + getToken(1).beginColumn + " at token: " + getToken(1).image); + SyncToSemicolon(); + } + )* + + <EOF> + + { return jjtThis; } +} +// non_reserved words + +<UNREACHABLE>SKIP: +{ + // Dummy token to get a value range. Will never be mached. And it should be here positionally - before the first non reserved word + <MIN_NON_RESERVED_WORD: "MIN NON RESERVED WORD"> +} + +// This production should be here and moved out. See notes for details on handling non-reserved words. +void non_reserved_word(): +{} +{ + <A: "A"> + | <ABSOLUTE: "ABSOLUTE"> + | <ACTION: "ACTION"> + | <ADA: "ADA"> + | <ADD: "ADD"> + | <ADMIN: "ADMIN"> + | <AFTER: "AFTER"> + | <ALWAYS: "ALWAYS"> + | <ASC: "ASC"> + | <ASSERTION: "ASSERTION"> + | <ASSIGNMENT: "ASSIGNMENT"> + | <ATTRIBUTE: "ATTRIBUTE"> + | <ATTRIBUTES: "ATTRIBUTES"> + | <BEFORE: "BEFORE"> + | <BERNOULLI: "BERNOULLI"> + | <BREADTH: "BREADTH"> + | <C: "C"> + | <CASCADE: "CASCADE"> + | <CATALOG: "CATALOG"> + | <CATALOG_NAME: "CATALOG_NAME"> + | <CHAIN: "CHAIN"> + | <CHARACTER_SET_CATALOG: "CHARACTER_SET_CATALOG"> + | <CHARACTER_SET_NAME: "CHARACTER_SET_NAME"> + | <CHARACTER_SET_SCHEMA: "CHARACTER_SET_SCHEMA"> + | <CHARACTERISTICS: "CHARACTERISTICS"> + | <CHARACTERS: "CHARACTERS"> + | <CLASS_ORIGIN: "CLASS_ORIGIN"> + | <COBOL: "COBOL"> + | <COLLATION: "COLLATION"> + | <COLLATION_CATALOG: "COLLATION_CATALOG"> + | <COLLATION_NAME: "COLLATION_NAME"> + | <COLLATION_SCHEMA: "COLLATION_SCHEMA"> + | <COLUMN_NAME: "COLUMN_NAME"> + | <COMMAND_FUNCTION: "COMMAND_FUNCTION"> + | <COMMAND_FUNCTION_CODE: "COMMAND_FUNCTION_CODE"> + | <COMMITTED: "COMMITTED"> + | <CONDITION_NUMBER: "CONDITION_NUMBER"> + | <CONNECTION: "CONNECTION"> + | <CONNECTION_NAME: "CONNECTION_NAME"> + | <CONSTRAINT_CATALOG: "CONSTRAINT_CATALOG"> + | <CONSTRAINT_NAME: "CONSTRAINT_NAME"> + | <CONSTRAINT_SCHEMA: "CONSTRAINT_SCHEMA"> + | <CONSTRAINTS: "CONSTRAINTS"> + | <CONSTRUCTOR: "CONSTRUCTOR"> + | <CONTAINS: "CONTAINS"> + | <CONTINUE: "CONTINUE"> + | <CURSOR_NAME: "CURSOR_NAME"> + | <DATA: "DATA"> + | <DATETIME_INTERVAL_CODE: "DATETIME_INTERVAL_CODE"> + | <DATETIME_INTERVAL_PRECISION: "DATETIME_INTERVAL_PRECISION"> + | <DEFAULTS: "DEFAULTS"> + | <DEFERRABLE: "DEFERRABLE"> + | <DEFERRED: "DEFERRED"> + | <DEFINED: "DEFINED"> + | <DEFINER: "DEFINER"> + | <DEGREE: "DEGREE"> + | <DEPTH: "DEPTH"> + | <DERIVED: "DERIVED"> + | <DESC: "DESC"> + | <DESCRIPTOR: "DESCRIPTOR"> + | <DIAGNOSTICS: "DIAGNOSTICS"> + | <DISPATCH: "DISPATCH"> + | <DOMAIN: "DOMAIN"> + | <DYNAMIC_FUNCTION: "DYNAMIC_FUNCTION"> + | <DYNAMIC_FUNCTION_CODE: "DYNAMIC_FUNCTION_CODE"> + | <ENFORCED: "ENFORCED"> + | <EQUALS: "EQUALS"> + | <EXCLUDE: "EXCLUDE"> + | <EXCLUDING: "EXCLUDING"> + | <EXPRESSION: "EXPRESSION"> + | <FINAL: "FINAL"> + | <FIRST: "FIRST"> + | <FLAG: "FLAG"> + | <FOLLOWING: "FOLLOWING"> + | <FORTRAN: "FORTRAN"> + | <FOUND: "FOUND"> + | <G: "G"> + | <GENERAL: "GENERAL"> + | <GENERATED: "GENERATED"> + | <GO: "GO"> + | <GOTO: "GOTO"> + | <GRANTED: "GRANTED"> + | <HIERARCHY: "HIERARCHY"> + | <IF: "IF"> // Non-standard + | <IGNORE: "IGNORE"> + | <IMMEDIATE: "IMMEDIATE"> + | <IMPLEMENTATION: "IMPLEMENTATION"> + | <INCLUDING: "INCLUDING"> + | <INCREMENT: "INCREMENT"> + | <INITIALLY: "INITIALLY"> + | <INPUT: "INPUT"> + | <INSTANCE: "INSTANCE"> + | <INSTANTIABLE: "INSTANTIABLE"> + | <INSTEAD: "INSTEAD"> + | <INVOKER: "INVOKER"> + | <ISOLATION: "ISOLATION"> + | <K: "K"> + | <KEY: "KEY"> + | <KEY_MEMBER: "KEY_MEMBER"> + | <KEY_TYPE: "KEY_TYPE"> + | <LAST: "LAST"> + | <LENGTH: "LENGTH"> + | <LEVEL: "LEVEL"> + | <LOCATOR: "LOCATOR"> + | <M: "M"> + | <MAP: "MAP"> + | <MATCHED: "MATCHED"> + | <MAXVALUE: "MAXVALUE"> + | <MESSAGE_LENGTH: "MESSAGE_LENGTH"> + | <MESSAGE_OCTET_LENGTH: "MESSAGE_OCTET_LENGTH"> + | <MESSAGE_TEXT: "MESSAGE_TEXT"> + | <MINVALUE: "MINVALUE"> + | <MORE_: "MORE"> + | <MUMPS: "MUMPS"> + | <NAMES: "NAMES"> + | <NESTING: "NESTING"> + | <NEXT: "NEXT"> + | <NFC: "NFC"> + | <NFD: "NFD"> + | <NFKC: "NFKC"> + | <NFKD: "NFKD"> + | <NORMALIZED: "NORMALIZED"> + | <NULLABLE: "NULLABLE"> + | <NULLS: "NULLS"> + | <NUMBER: "NUMBER"> + | <OBJECT: "OBJECT"> + | <OCTETS: "OCTETS"> + | <OPTION: "OPTION"> + | <OPTIONS: "OPTIONS"> + | <ORDERING: "ORDERING"> + | <ORDINALITY: "ORDINALITY"> + | <OTHERS: "OTHERS"> + | <OUTPUT: "OUTPUT"> + | <OVERRIDING: "OVERRIDING"> + | <P: "P"> + | <PAD: "PAD"> + | <PARAMETER_MODE: "PARAMETER_MODE"> + | <PARAMETER_NAME: "PARAMETER_NAME"> + | <PARAMETER_ORDINAL_POSITION: "PARAMETER_ORDINAL_POSITION"> + | <PARAMETER_SPECIFIC_CATALOG: "PARAMETER_SPECIFIC_CATALOG"> + | <PARAMETER_SPECIFIC_NAME: "PARAMETER_SPECIFIC_NAME"> + | <PARAMETER_SPECIFIC_SCHEMA: "PARAMETER_SPECIFIC_SCHEMA"> + | <PARTIAL: "PARTIAL"> + | <PASCAL: "PASCAL"> + | <PATH: "PATH"> + | <PLACING: "PLACING"> + | <PLI: "PLI"> + | <PRECEDING: "PRECEDING"> + | <PRESERVE: "PRESERVE"> + | <PRIOR: "PRIOR"> + | <PRIVILEGES: "PRIVILEGES"> + | <PROPERTIES: "PROPERTIES"> // Non-standard + | <PUBLIC: "PUBLIC"> + | <READ: "READ"> + | <RELATIVE: "RELATIVE"> + | <REPEATABLE: "REPEATABLE"> + | <RESPECT: "RESPECT"> + | <RESTART: "RESTART"> + | <RESTRICT: "RESTRICT"> + | <RETURNED_CARDINALITY: "RETURNED_CARDINALITY"> + | <RETURNED_LENGTH: "RETURNED_LENGTH"> + | <RETURNED_OCTET_LENGTH: "RETURNED_OCTET_LENGTH"> + | <RETURNED_SQLSTATE: "RETURNED_SQLSTATE"> + | <ROLE: "ROLE"> + | <ROUTINE: "ROUTINE"> + | <ROUTINE_CATALOG: "ROUTINE_CATALOG"> + | <ROUTINE_NAME: "ROUTINE_NAME"> + | <ROUTINE_SCHEMA: "ROUTINE_SCHEMA"> + | <ROW_COUNT: "ROW_COUNT"> + | <SCALE: "SCALE"> + | <SCHEMA: "SCHEMA"> + | <SCHEMA_NAME: "SCHEMA_NAME"> + | <SCOPE_CATALOG: "SCOPE_CATALOG"> + | <SCOPE_NAME: "SCOPE_NAME"> + | <SCOPE_SCHEMA: "SCOPE_SCHEMA"> + | <SECTION: "SECTION"> + | <SECURITY: "SECURITY"> + | <SELF: "SELF"> + | <SEQUENCE: "SEQUENCE"> + | <SERIALIZABLE: "SERIALIZABLE"> + | <SERVER_NAME: "SERVER_NAME"> + | <SESSION: "SESSION"> + | <SETS: "SETS"> + | <SIMPLE: "SIMPLE"> + | <SIZE: "SIZE"> + | <SOURCE: "SOURCE"> + | <SPACE: "SPACE"> + | <SPECIFIC_NAME: "SPECIFIC_NAME"> + | <STATE: "STATE"> + | <STATEMENT: "STATEMENT"> + | <STRUCTURE: "STRUCTURE"> + | <STYLE: "STYLE"> + | <SUBCLASS_ORIGIN: "SUBCLASS_ORIGIN"> + | <T: "T"> + | <TABLE_NAME: "TABLE_NAME"> + | <TEMPORARY: "TEMPORARY"> + | <TIES: "TIES"> + | <TOP_LEVEL_COUNT: "TOP_LEVEL_COUNT"> + | <TRANSACTION: "TRANSACTION"> + | <TRANSACTION_ACTIVE: "TRANSACTION_ACTIVE"> + | <TRANSACTIONS_COMMITTED: "TRANSACTIONS_COMMITTED"> + | <TRANSACTIONS_ROLLED_BACK: "TRANSACTIONS_ROLLED_BACK"> + | <TRANSFORM: "TRANSFORM"> + | <TRANSFORMS: "TRANSFORMS"> + | <TRIGGER_CATALOG: "TRIGGER_CATALOG"> + | <TRIGGER_NAME: "TRIGGER_NAME"> + | <TRIGGER_SCHEMA: "TRIGGER_SCHEMA"> + | <TRY_CAST: "TRY_CAST"> // Non-standard + | <TYPE: "TYPE"> + | <UNBOUNDED: "UNBOUNDED"> + | <UNCOMMITTED: "UNCOMMITTED"> + | <UNDER: "UNDER"> + | <UNNAMED: "UNNAMED"> + | <USAGE: "USAGE"> + | <USER_DEFINED_TYPE_CATALOG: "USER_DEFINED_TYPE_CATALOG"> + | <USER_DEFINED_TYPE_CODE: "USER_DEFINED_TYPE_CODE"> + | <USER_DEFINED_TYPE_NAME: "USER_DEFINED_TYPE_NAME"> + | <USER_DEFINED_TYPE_SCHEMA: "USER_DEFINED_TYPE_SCHEMA"> + | <VIEW: "VIEW"> + | <WORK: "WORK"> + | <WRITE: "WRITE"> + | <ZONE: "ZONE"> + + + // Non-standard + // Changed the following reserved words into non-reserved one as lot of users use them as identifiers. + | <ABS: "ABS"> + | <ALL: "ALL"> + | <ARRAY_AGG: "ARRAY_AGG"> + | <AT: "AT"> + | <AVG: "AVG"> + | <BLOB: "BLOB"> + | <BOTH: "BOTH"> + | <CARDINALITY: "CARDINALITY"> + | <CLOSE: "CLOSE"> + | <COLUMN: "COLUMN"> + | <CONDITION: "CONDITION"> + | <COUNT: "COUNT"> + | <CUBE: "CUBE"> + | <CURRENT: "CURRENT"> + | <CURRENT_CATALOG: "CURRENT_CATALOG"> + | <CURRENT_DATE: "CURRENT_DATE"> + | <CURRENT_DEFAULT_TRANSFORM_GROUP: "CURRENT_DEFAULT_TRANSFORM_GROUP"> + | <CURRENT_PATH: "CURRENT_PATH"> + | <CURRENT_ROLE: "CURRENT_ROLE"> + | <CURRENT_SCHEMA: "CURRENT_SCHEMA"> + | <CURRENT_TIME: "CURRENT_TIME"> + | <CURRENT_TIMESTAMP: "CURRENT_TIMESTAMP"> + | <CURRENT_TRANSFORM_GROUP_FOR_TYPE: "CURRENT_TRANSFORM_GROUP_FOR_TYPE"> + | <CURRENT_USER: "CURRENT_USER"> + | <CURSOR: "CURSOR"> + | <CYCLE: "CYCLE"> + | <DATE: "DATE"> + | <DAY: "DAY"> + | <DAYS: "DAYS"> + | <DEC: "DEC"> + | <DYNAMIC: "DYNAMIC"> + | <EXP: "EXP"> + | <EXTERNAL: "EXTERNAL"> + | <FILTER: "FILTER"> + | <FLOOR: "FLOOR"> + | <FREE: "FREE"> + | <FUNCTION: "FUNCTION"> + | <GLOBAL: "GLOBAL"> + | <HOLD: "HOLD"> + | <HOUR: "HOUR"> + | <HOURS: "HOURS"> + | <IDENTITY: "IDENTITY"> + | <INDICATOR: "INDICATOR"> + | <INTERSECTION: "INTERSECTION"> + | <INTERVAL: "INTERVAL"> + | <LANGUAGE: "LANGUAGE"> + | <LEAD: "LEAD"> + | <LOCAL: "LOCAL"> + | <LOWER: "LOWER"> + | <MAX: "MAX"> + | <MERGE: "MERGE"> + | <METHOD: "METHOD"> + | <MIN: "MIN"> + | <MINUTE: "MINUTE"> + | <MINUTES: "MINUTES"> + | <MOD: "MOD"> + | <MODULE: "MODULE"> + | <MONTH: "MONTH"> + | <MONTHS: "MONTHS"> + | <NAME: "NAME"> + | <NEW: "NEW"> + | <NONE: "NONE"> + | <OCCURRENCE: "OCCURRENCE"> + | <OFFSET: "OFFSET"> + | <OLD: "OLD"> + | <OPEN: "OPEN"> + | <PARTITION: "PARTITION"> + | <POSITION: "POSITION"> + | <POWER: "POWER"> + | <PRECISION: "PRECISION"> + | <RANGE: "RANGE"> + | <RANK: "RANK"> + | <READS: "READS"> + | <REF: "REF"> + | <REFERENCES: "REFERENCES"> + | <RELEASE: "RELEASE"> + | <RESULT: "RESULT"> + | <RETURNS: "RETURNS"> + | <ROLLUP: "ROLLUP"> + | <ROW: "ROW"> + | <ROW_NUMBER: "ROW_NUMBER"> + | <ROWS: "ROWS"> + | <SAVEPOINT: "SAVEPOINT"> + | <SCOPE: "SCOPE"> + | <SEARCH: "SEARCH"> + | <SECOND: "SECOND"> + | <SECONDS: "SECONDS"> + | <SESSION_USER: "SESSION_USER"> + | <SQL: "SQL"> + | <START: "START"> + | <STATIC: "STATIC"> + | <SUM: "SUM"> + | <SYSTEM: "SYSTEM"> + | <TIME: "TIME"> + | <TIMESTAMP: "TIMESTAMP"> + | <TIMEZONE_HOUR: "TIMEZONE_HOUR"> + | <TIMEZONE_MINUTE: "TIMEZONE_MINUTE"> + | <TRIGGER: "TRIGGER"> + | <TRUNCATE: "TRUNCATE"> + | <UNKNOWN: "UNKNOWN"> + | <UPDATE: "UPDATE"> + | <UPPER: "UPPER"> + | <USER: "USER"> + | <VALUE: "VALUE"> + | <VALUES: "VALUES"> + | <VERSION: "VERSION"> + | <VERSIONS: "VERSIONS"> + | <WINDOW: "WINDOW"> + | <YEAR: "YEAR"> + | <YEARS: "YEARS"> + + // Presto tokens + | <COMMENT: "COMMENT"> + | <DEFAULT_: "DEFAULT"> + | <USE: "USE"> + | <LIMIT: "LIMIT"> + | "NUMERIC_HISTOGRAM" + | <REPLACE: "REPLACE"> + | "HISTOGRAM" + | "APPROEX_PERCENTILE" + | "MAP_AGG" + | "SET_AGG" + | "MAP_UNION" + | <COUNT_QUOTED: "\"COUNT\""> +} + +<UNREACHABLE>SKIP: +{ + // Dummy token to get a value range. Will never be mached: + <MAX_NON_RESERVED_WORD: "MAX NON RESERVED WORD"> +} +<UNREACHABLE>SKIP: +{ + // Dummy token to get a value range. Will never be mached. And it should be here positionally - before the first non reserved word + <MIN_RESERVED_WORD: "MIN RESERVED WORD"> +} + +// reserved words +TOKEN: +{ + <ALLOCATE: "ALLOCATE"> + | <ALTER: "ALTER"> + | <AND: "AND"> + | <ANY: "ANY"> + | <ARE: "ARE"> + | <ARRAY: "ARRAY"> + | <AS: "AS"> + | <ASENSITIVE: "ASENSITIVE"> + | <ASYMMETRIC: "ASYMMETRIC"> + | <ATOMIC: "ATOMIC"> + | <AUTHORIZATION: "AUTHORIZATION"> + | <BEGIN: "BEGIN"> + | <BETWEEN: "BETWEEN"> + | <BIGINT: "BIGINT"> + | <BINARY: "BINARY"> + | <BOOLEAN: "BOOLEAN"> + | <BY: "BY"> + | <CALL: "CALL"> + | <CALLED: "CALLED"> + | <CASCADED: "CASCADED"> + | <CASE: "CASE"> + | <CAST: "CAST"> + | <CEIL: "CEIL"> + | <CEILING: "CEILING"> + | <CHAR: "CHAR"> + | <CHAR_LENGTH: "CHAR_LENGTH"> + | <CHARACTER: "CHARACTER"> + | <CHARACTER_LENGTH: "CHARACTER_LENGTH"> + | <CHECK: "CHECK"> + | <CLOB: "CLOB"> + | <COALESCE: "COALESCE"> + | <COLLATE: "COLLATE"> + | <COLLECT: "COLLECT"> + | <COMMIT: "COMMIT"> + | <CONNECT: "CONNECT"> + | <CONSTRAINT: "CONSTRAINT"> + | <CONVERT: "CONVERT"> + | <CORR: "CORR"> + | <CORRESPONDING: "CORRESPONDING"> + | <COVAR_POP: "COVAR_POP"> + | <COVAR_SAMP: "COVAR_SAMP"> + | <CREATE: "CREATE"> + | <CROSS: "CROSS"> + | <CUME_DIST: "CUME_DIST"> + | <DEALLOCATE: "DEALLOCATE"> + | <DECIMAL: "DECIMAL"> + | <DECLARE: "DECLARE"> + | <DELETE: "DELETE"> + | <DENSE_RANK: "DENSE_RANK"> + | <DEREF: "DEREF"> + | <DESCRIBE: "DESCRIBE"> + | <DETERMINISTIC: "DETERMINISTIC"> + | <DISCONNECT: "DISCONNECT"> + | <DISTINCT: "DISTINCT"> + | <DOUBLE: "DOUBLE"> + | <DROP: "DROP"> + | <EACH: "EACH"> + | <ELEMENT: "ELEMENT"> + | <ELSE: "ELSE"> + | <END: "END"> + | <END_EXEC: "END-EXEC"> + | <ESCAPE: "ESCAPE"> + | <EVERY: "EVERY"> + | <EXCEPT: "EXCEPT"> + | <EXEC: "EXEC"> + | <EXECUTE: "EXECUTE"> + | <EXISTS: "EXISTS"> + | <EXTRACT: "EXTRACT"> + | <FALSE: "FALSE"> + | <FETCH: "FETCH"> + | <FIRST_VALUE: "FIRST_VALUE"> + | <FLOAT: "FLOAT"> + | <FOR: "FOR"> + | <FOREIGN: "FOREIGN"> + | <FOREVER: "FOREVER"> + | <FROM: "FROM"> + | <FULL: "FULL"> + | <FUSION: "FUSION"> + | <GET: "GET"> + | <GRANT: "GRANT"> + | <GROUP: "GROUP"> + | <GROUPING: "GROUPING"> + | <HAVING: "HAVING"> + | <IN: "IN"> + | <INNER: "INNER"> + | <INOUT: "INOUT"> + | <INSENSITIVE: "INSENSITIVE"> + | <INSERT: "INSERT"> + | <INT: "INT"> + | <INTEGER: "INTEGER"> + | <INTERSECT: "INTERSECT"> + | <INTO: "INTO"> + | <IS: "IS"> + | <JOIN: "JOIN"> + | <KEEP: "KEEP"> + | <LAG: "LAG"> + | <LARGE: "LARGE"> + | <LAST_VALUE: "LAST_VALUE"> + | <LATERAL: "LATERAL"> + | <LEADING: "LEADING"> + | <LEFT: "LEFT"> + | <LIKE: "LIKE"> + | <LIKE_REGEX: "LIKE_REGEX"> + | <LN: "LN"> + | <LOCALTIME: "LOCALTIME"> + | <LOCALTIMESTAMP: "LOCALTIMESTAMP"> + | <MATCH: "MATCH"> + | <MAX_CARDINALITY: "MAX_CARDINALITY"> + | <MEMBER: "MEMBER"> + | <MODIFIES: "MODIFIES"> + | <MULTISET: "MULTISET"> + | <NATIONAL: "NATIONAL"> + | <NATURAL: "NATURAL"> + | <NCHAR: "NCHAR"> + | <NCLOB: "NCLOB"> + | <NO: "NO"> + | <NORMALIZE: "NORMALIZE"> + | <NOT: "NOT"> + | <NTH_VALUE: "NTH_VALUE"> + | <NTILE: "NTILE"> + | <NULL_: "NULL"> + | <NULLIF: "NULLIF"> + | <NUMERIC: "NUMERIC"> + | <OCTET_LENGTH: "OCTET_LENGTH"> + | <OCCURRENCES_REGEX: "OCCURRENCES_REGEX"> + | <OF: "OF"> + | <ON: "ON"> + | <ONLY: "ONLY"> + | <OR: "OR"> + | <ORDER: "ORDER"> + | <OUT: "OUT"> + | <OUTER: "OUTER"> + | <OVER: "OVER"> + | <OVERLAPS: "OVERLAPS"> + | <OVERLAY: "OVERLAY"> + | <PARAMETER: "PARAMETER"> + | <PERCENT_RANK: "PERCENT_RANK"> + | <PERCENTILE_CONT: "PERCENTILE_CONT"> + | <PERCENTILE_DISC: "PERCENTILE_DISC"> + | <POSITION_REGEX: "POSITION_REGEX"> + | <PREPARE: "PREPARE"> + | <PRIMARY: "PRIMARY"> + | <PROCEDURE: "PROCEDURE"> + | <REAL: "REAL"> + | <RECURSIVE: "RECURSIVE"> + | <REFERENCING: "REFERENCING"> + | <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"> + | <RETURN: "RETURN"> + | <REVOKE: "REVOKE"> + | <RIGHT: "RIGHT"> + | <ROLLBACK: "ROLLBACK"> + | <SCROLL: "SCROLL"> + | <SELECT: "SELECT"> + | <SENSITIVE: "SENSITIVE"> + | <SET: "SET"> + | <SIMILAR: "SIMILAR"> + | <SMALLINT: "SMALLINT"> + | <SOME: "SOME"> + | <SPECIFIC: "SPECIFIC"> + | <SPECIFICTYPE: "SPECIFICTYPE"> + | <SQLEXCEPTION: "SQLEXCEPTION"> + | <SQLSTATE: "SQLSTATE"> + | <SQLWARNING: "SQLWARNING"> + | <SQRT: "SQRT"> + | <STDDEV_POP: "STDDEV_POP"> + | <STDDEV_SAMP: "STDDEV_SAMP"> + | <SUBMULTISET: "SUBMULTISET"> + | <SUBSTRING: "SUBSTRING"> + | <SUBSTRING_REGEX: "SUBSTRING_REGEX"> + | <SYMMETRIC: "SYMMETRIC"> + | <SYSTEM_USER: "SYSTEM_USER"> + | <TABLE: "TABLE"> + | <TABLESAMPLE: "TABLESAMPLE"> + | <THEN: "THEN"> + | <TO: "TO"> + | <TRAILING: "TRAILING"> + | <TRANSLATE: "TRANSLATE"> + | <TRANSLATE_REGEX: "TRANSLATE_REGEX"> + | <TRANSLATION: "TRANSLATION"> + | <TREAT: "TREAT"> + | <TRIM: "TRIM"> + | <TRIM_ARRAY: "TRIM_ARRAY"> + | <TRUE: "TRUE"> + | <UESCAPE: "UESCAPE"> + | <UNION: "UNION"> + | <UNIQUE: "UNIQUE"> + | <UNNEST: "UNNEST"> + | <USING: "USING"> + | <VAR_POP: "VAR_POP"> + | <VAR_SAMP: "VAR_SAMP"> + | <VARBINARY: "VARBINARY"> + | <VARCHAR: "VARCHAR"> + | <VARYING: "VARYING"> + | <VERSIONING: "VERSIONING"> + | <WHEN: "WHEN"> + | <WHENEVER: "WHENEVER"> + | <WHERE: "WHERE"> + | <WIDTH_BUCKET: "WIDTH_BUCKET"> + | <WITH: "WITH"> + | <WITHIN: "WITHIN"> + | <WITHOUT: "WITHOUT"> +} + +<UNREACHABLE>SKIP: +{ + // Dummy token to get a value range. Will never be mached: + <MAX_RESERVED_WORD: "MAX RESERVED WORD"> +} + +//TODO(kaikalur): create a separate section for all special chars +TOKEN: +{ + <semicolon: ";"> + | <lparen: "("> + | <rparen: ")"> + | <underscore: "_"> +} +void left_bracket_or_trigraph(): +{} +{ + "[" + | "??(" +} + +void right_bracket_or_trigraph(): +{} +{ + "]" + | "??)" +} + +void literal(): +{} +{ + signed_numeric_literal() + | general_literal() +} + +void signed_numeric_literal(): +{} +{ + unsigned_numeric_literal() + | ( ( "+" | "-" ) unsigned_numeric_literal() ) #UnaryExpression(1) +} + +void unsigned_literal(): +{} +{ + unsigned_numeric_literal() + | general_literal() +} + +void unsigned_numeric_literal() #UnsignedNumericLiteral: +{} +{ + exact_numeric_literal() + | <approximate_numeric_literal> +} + +void exact_numeric_literal(): +{} +{ + <unsigned_integer> + | <float_literal> +} + +void general_literal(): +{} +{ + character_string_literal() + | <national_character_string_literal> + | Unicode_character_string_literal() + | <binary_string_literal> + | datetime_literal() + | interval_literal() + | boolean_literal() +} + + +void character_string_literal() #CharStringLiteral: +{} +{ +/* + ( "_" character_set_specification() )? "'" ( <character_representation> )* "'" + ( //TODO(kaikalur) - fixit <separator> + "'" ( <character_representation> )* "'" + )* +*/ + ( "_" character_set_specification() )? ( <quoted_string> )+ +} + +void Unicode_character_string_literal() #CharStringLiteral: +{} +{ + ( "_" character_set_specification() )? <unicode_literal> +} + +void datetime_literal(): +{} +{ + date_literal() + | time_literal() + | timestamp_literal() +} + +void date_literal() #DateLiteral: +{} +{ + "DATE" character_string_literal() // TODO(kaikalur): fix it <date_string> +} + +void time_literal() #TimeLiteral: +{} +{ + "TIME" character_string_literal() // TOD(sreeni): fixit <time_string> +} + +void timestamp_literal() #TimestampLiteral: +{} +{ + "TIMESTAMP" character_string_literal() // TOD(sreeni): fixit <timestamp_string> +} + +void interval_literal() #IntervalLiteral: +{} +{ + "INTERVAL" [ "+" | "-" ] + character_string_literal() // TOD(sreeni): fixit interval_string() + interval_qualifier() +} + +void boolean_literal(): +{} +{ + ( + "TRUE" + | "FALSE" + ) #BooleanLiteral + | "UNKNOWN" #Unsupported +} + +void identifier() #Identifier: +{} +{ + ( + actual_identifier() + | weird_identifiers() // Presto allow _ and "" as an identifier names - yikes! + ) + + [ identifier_suffix_chain() ] +} + +void actual_identifier(): +{} +{ + <regular_identifier> + | <delimited_identifier> + | <Unicode_delimited_identifier> + | LOOKAHEAD(1, { IsIdNonReservedWord() }) non_reserved_word() +} + +void table_name() #TableName: +{} +{ + //TODO(kaikalur): For parsing convenience: local_or_schema_qualified_name() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void schema_name() #SchemaName: +{} +{ + //TODO(kaikalur): For parsing convenience: [ LOOKAHEAD(2) catalog_name() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void catalog_name() #CatalogName: +{} +{ + identifier() +} + +void schema_qualified_name() #SchemaQualifiedName: +{} +{ + //TODO(kaikalur): For parsing convenience: [ LOOKAHEAD(2) schema_name() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void local_or_schema_qualified_name(): +{} +{ + //TODO(kaikalur): For parsing convenience: [ LOOKAHEAD(2) local_or_schema_qualifier() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void local_or_schema_qualifier(): +{} +{ + local_qualifier() + | schema_name() +} + +void cursor_name(): +{} +{ + // TODO(kaikalur): fixit --[ local_qualifier() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void local_qualifier(): +{} +{ + "MODULE" +} + +void host_parameter_name(): +{} +{ + ":" identifier() +} + +void external_routine_name(): +{} +{ + identifier() + | ( character_string_literal() )#Unsupported +} + +void character_set_name() #Unsupported: +{} +{ + [ schema_name() "." ] <SQL_language_identifier> +} + +void schema_resolved_user_defined_type_name(): +{} +{ + user_defined_type_name() +} + +void user_defined_type_name(): +{} +{ + // TODO(kaikalur): fixit -- [ schema_name() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void SQL_identifier(): +{} +{ + identifier() + | extended_identifier() +} + +void extended_identifier(): +{} +{ + [ scope_option() ] simple_value_specification() +} + +void dynamic_cursor_name(): +{} +{ + cursor_name() + | extended_cursor_name() +} + +void extended_cursor_name(): +{} +{ + [ scope_option() ] simple_value_specification() +} + +void descriptor_name(): +{} +{ + identifier() + | extended_descriptor_name() +} + +void extended_descriptor_name(): +{} +{ + [ scope_option() ] simple_value_specification() +} + +void scope_option() #Unsupported: +{} +{ + "GLOBAL" + | "LOCAL" +} + +void data_type(): +{} +{ + ( + predefined_type() + | row_type() + | reference_type() + | presto_generic_type() + | path_resolved_user_defined_type_name() + ) + + [ collection_type() ] +} + +void predefined_type() #PredefinedType: +{} +{ + character_string_type() [ "CHARACTER" "SET" character_set_specification() ] + [ collate_clause() ] + | national_character_string_type() [ collate_clause() ] + | binary_string_type() + | numeric_type() + | boolean_type() + | datetime_type() + | interval_type() +} + +void character_string_type(): +{} +{ + "CHARACTER" [ "(" character_length() ")" ] + | "CHAR" [ "(" character_length() ")" ] + | "CHARACTER" "VARYING" "(" character_length() ")" + | "CHAR" "VARYING" "(" character_length() ")" + | "VARCHAR" [ "(" character_length() ")" ] // Non-standard length optional + | character_large_object_type() +} + +void character_large_object_type(): +{} +{ + "CHARACTER" "LARGE" "OBJECT" [ "(" character_large_object_length() ")" ] + | "CHAR" "LARGE" "OBJECT" [ "(" character_large_object_length() ")" ] + | "CLOB" [ "(" character_large_object_length() ")" ] +} + +void national_character_string_type(): +{} +{ + "NATIONAL" "CHARACTER" [ "(" character_length() ")" ] + | "NATIONAL" "CHAR" [ "(" character_length() ")" ] + | "NCHAR" [ "(" character_length() ")" ] + | "NATIONAL" "CHARACTER" "VARYING" "(" character_length() ")" + | "NATIONAL" "CHAR" "VARYING" "(" character_length() ")" + | "NCHAR" "VARYING" "(" character_length() ")" + | national_character_large_object_type() +} + +void national_character_large_object_type(): +{} +{ + "NATIONAL" "CHARACTER" "LARGE" "OBJECT" [ "(" character_large_object_length() ")" ] + | "NCHAR" "LARGE" "OBJECT" [ "(" character_large_object_length() ")" ] + | "NCLOB" [ "(" character_large_object_length() ")" ] +} + +void binary_string_type(): +{} +{ + "BINARY" [ "(" <unsigned_integer> ")" ] + | "BINARY" "VARYING" "(" <unsigned_integer> ")" + | "VARBINARY" "(" <unsigned_integer> ")" + | varbinary() + | binary_large_object_string_type() +} + +void binary_large_object_string_type(): +{} +{ + "BINARY" "LARGE" "OBJECT" [ "(" large_object_length() ")" ] + | "BLOB" [ "(" large_object_length() ")" ] +} + +void numeric_type(): +{} +{ + exact_numeric_type() + | approximate_numeric_type() +} + +void exact_numeric_type(): +{} +{ + "NUMERIC" [ "(" <unsigned_integer> [ "," <unsigned_integer> ] ")" ] + | "DECIMAL" [ "(" <unsigned_integer> [ "," <unsigned_integer> ] ")" ] + | "DEC" [ "(" <unsigned_integer> [ "," <unsigned_integer> ] ")" ] + | "SMALLINT" + | "INTEGER" + | "INT" + | "BIGINT" +} + +void approximate_numeric_type(): +{} +{ + "FLOAT" [ "(" <unsigned_integer> ")" ] + | "REAL" + | "DOUBLE" + [ "PRECISION" ] // Non-standard +} + +void character_length(): +{} +{ + <unsigned_integer> [ char_length_units() ] +} + +void large_object_length(): +{} +{ + <unsigned_integer> [ <multiplier> ] + | <large_object_length_token> +} + +void character_large_object_length(): +{} +{ + large_object_length() [ char_length_units() ] +} + +void char_length_units(): +{} +{ + "CHARACTERS" + | "OCTETS" +} + +void boolean_type(): +{} +{ + "BOOLEAN" +} + +void datetime_type(): +{} +{ + "DATE" + | "TIME" [ "(" <unsigned_integer> ")" ] [ with_or_without_time_zone() ] + | "TIMESTAMP" [ "(" <unsigned_integer> ")" ] + [ with_or_without_time_zone() ] +} + +void with_or_without_time_zone(): +{} +{ + "WITH" "TIME" "ZONE" + | "WITHOUT" "TIME" "ZONE" +} + +void interval_type() #Unsupported: +{} +{ + "INTERVAL" interval_qualifier() +} + +void row_type() #RowType: +{} +{ + "ROW" row_type_body() +} + +void row_type_body(): +{} +{ + "(" field_definition() ( "," field_definition() )* ")" +} + +void reference_type() #Unsupported: +{} +{ + "REF" "(" referenced_type() ")" [ scope_clause() ] +} + +void scope_clause(): +{} +{ + "SCOPE" table_name() +} + +void referenced_type(): +{} +{ + path_resolved_user_defined_type_name() +} + +void path_resolved_user_defined_type_name(): +{} +{ + user_defined_type_name() +} + +void collection_type(): +{} +{ + array_type() + | multiset_type() +} + +void array_type() #ArrayType(): +{} +{ + { PushNode(PopNode()); } + "ARRAY" + [ left_bracket_or_trigraph() <unsigned_integer> right_bracket_or_trigraph() ] +} + +void multiset_type() #Unsupported(): +{} +{ + { PushNode(PopNode()); } + "MULTISET" +} + +void field_definition() #FieldDefinition: +{} +{ + identifier() data_type() +} + +void value_expression_primary(): +{} +{ + parenthesized_value_expression() + | nonparenthesized_value_expression_primary() +} + +void parenthesized_value_expression(): +{} +{ + ( "(" value_expression() + ( "," value_expression() )* // for row_value + ")" + ) #ParenthesizedExpression() + + ( primary_suffix() )* +} + +void nonparenthesized_value_expression_primary(): +{} +{ + contextually_typed_value_specification() + | ( + set_function_specification() + | subquery() + | case_expression() + | cast_specification() + | subtype_treatment() + | new_specification() + | reference_resolution() + | collection_value_constructor() + | multiset_element_reference() + | next_value_expression() + // | routine_invocation() -- handled by method invocation below + | window_function_type() + | "(" column_name_list() ")" // Non-standard + | unsigned_value_specification() + | column_reference() + ) + + ( primary_suffix() )* +} + +void primary_suffix(): +{} +{ + { PushNode(PopNode()); } + ( + field_reference() + | attribute_or_method_reference() + | method_invocation() + | window_function() + | array_element_reference() + | static_method_invocation() + ) +} + +void collection_value_constructor(): +{} +{ + array_value_constructor() + | multiset_value_constructor() +} + +void value_specification(): +{} +{ + literal() + | general_value_specification() +} + +void unsigned_value_specification(): +{} +{ + unsigned_literal() + | general_value_specification() +} + +void general_value_specification(): +{} +{ + identifier_chain() + | + ( + "CURRENT_USER" + | "USER" + ) #BuiltinValue + + | + ( + "?" + | host_parameter_name() + | current_collation_specification() + | "SESSION_USER" + | "SYSTEM_USER" + | "CURRENT_CATALOG" + | "CURRENT_PATH" + | "CURRENT_ROLE" + | "CURRENT_SCHEMA" + | "VALUE" + | "CURRENT_DEFAULT_TRANSFORM_GROUP" + | "CURRENT_TRANSFORM_GROUP_FOR_TYPE" path_resolved_user_defined_type_name() + ) #Unsupported + + //TODO(kaikalur): fixit + //| embedded_variable_specification() + // +} + +void simple_value_specification(): +{} +{ + literal() + | identifier_chain() + + // TODO(kaikalur): fix the next two + | host_parameter_name() + //| embedded_variable_name() +} + +void target_specification() #Unsupported: +{} +{ + ( + identifier_chain() + | column_reference() + ) + + [ + target_array_element_specification() + | "?" + ] + + // TODO(kaikalur): fix the next two lines + //| embedded_variable_specification() + //| host_parameter_specification() +} + +void simple_target_specification() #Unsupported: +{} +{ + identifier_chain() + | column_reference() + + //TODO(kaikalur): fix the next two + //| embedded_variable_name() + //| host_parameter_name() +} + +void target_array_element_specification() #Unsupported: +{} +{ + left_bracket_or_trigraph() simple_value_specification() right_bracket_or_trigraph() +} + +void current_collation_specification() #Unsupported: +{} +{ + "COLLATION" "FOR" "(" string_value_expression() ")" +} + +void contextually_typed_value_specification(): +{} +{ + implicitly_typed_value_specification() + | ( "DEFAULT" )#Unsupported +} + +void implicitly_typed_value_specification(): +{} +{ + ( "NULL" )#NullLiteral + | empty_specification() +} + +void empty_specification(): +{} +{ + ( "ARRAY" left_bracket_or_trigraph() right_bracket_or_trigraph() )#ArrayLiteral + | ( "MULTISET" left_bracket_or_trigraph() right_bracket_or_trigraph() )#Unsupported +} + +void identifier_chain() #QualifiedName(>1): +{} +{ + identifier() ( "." identifier() )* +} + +void column_reference(): +{} +{ + identifier_chain() + | ( "MODULE" "." identifier() "." identifier() )#Unsupported +} + +void set_function_specification(): +{} +{ + aggregate_function() + | grouping_operation() +} + +void grouping_operation() #GroupingOperation: +{} +{ + "GROUPING" "(" column_reference() ( "," column_reference() )* ")" +} + +void window_function() #WindowFunction(2): +{} +{ + // TODO(kaikalur): fixit -- window_function_type() "OVER" window_name_or_specification() + "OVER" window_name_or_specification() +} + +void window_function_type() : +{} +{ + rank_function_type() "(" ")" + | ( "ROW_NUMBER" "(" ")" )#RowNumber + | aggregate_function() + | ntile_function() + | lead_or_lag_function() + | first_or_last_value_function() + | nth_value_function() +} + +void rank_function_type() #RankFunction: +{} +{ + "RANK" + | "DENSE_RANK" + | "PERCENT_RANK" + | "CUME_DIST" +} + +void ntile_function() #NtileFunction: +{} +{ + "NTILE" "(" number_of_tiles() ")" +} + +void number_of_tiles(): +{} +{ + // TODO(kaikalur) - generalize simple_value_specification() + value_expression() + | ( "?" )#Unsupported() +} + +void lead_or_lag_function() #LeadOrLag: +{} +{ + lead_or_lag() + "(" value_expression() + // Generalized below [ "," exact_numeric_literal() [ "," value_expression() ] ] + [ "," value_expression() [ "," value_expression() ] ] // Non-standard + ")" + [ null_treatment() ] +} + +void lead_or_lag(): +{} +{ + "LEAD" | "LAG" +} + +void null_treatment() #NullTreatment: +{} +{ + "RESPECT" "NULLS" | "IGNORE" "NULLS" +} + +void first_or_last_value_function() #FirstOrLastValueFunction: +{} +{ + first_or_last_value() "(" value_expression() ")" [ null_treatment() ] +} + +void first_or_last_value(): +{} +{ + "FIRST_VALUE" | "LAST_VALUE" +} + +void nth_value_function() #Unsupported: +{} +{ + "NTH_VALUE" "(" value_expression() "," nth_row() ")" [ from_first_or_last() ] [ null_treatment() ] +} + +void nth_row(): +{} +{ + simple_value_specification() + | ( "?" )#Unsupported +} + +void from_first_or_last(): +{} +{ + "FROM" "FIRST" + | "FROM" "LAST" +} + +void window_name_or_specification(): +{} +{ + in_line_window_specification() + | identifier() +} + +void in_line_window_specification(): +{} +{ + window_specification() +} + +void case_expression(): +{} +{ + case_abbreviation() + | case_specification() +} + +void case_abbreviation(): +{} +{ + ( "NULLIF" "(" value_expression() "," value_expression() ")" )#NullIf + | ( "COALESCE" "(" value_expression() ( "," value_expression() )+ ")" )#Coalesce +} + +void case_specification(): +{} +{ + simple_case() + | searched_case() +} + +void simple_case() #CaseExpression: +{} +{ + "CASE" case_operand() ( simple_when_clause() )+ [ else_clause() ] "END" +} + +void searched_case() #CaseExpression: +{} +{ + "CASE" ( searched_when_clause() )+ [ else_clause() ] "END" +} + +void simple_when_clause() #WhenClause: +{} +{ + "WHEN" when_operand_list() "THEN" result() +} + +void searched_when_clause() #WhenClause: +{} +{ + "WHEN" search_condition() "THEN" result() +} + +void else_clause() #ElseClause: +{} +{ + "ELSE" result() +} + +void case_operand(): +{} +{ + row_value_predicand() + | overlaps_predicate_part_1() +} + +void when_operand_list(): +{} +{ + when_operand() ( "," when_operand() )* +} + +void when_operand() #WhenOperand: +{} +{ + // We push a dummy operand so the binary expressions are built properly + ( { } )#SearchedCaseOperand(true) + ( + row_value_predicand() + | comparison_predicate_part_2() + | between_predicate_part_2() + | in_predicate_part_2() + | character_like_predicate_part_2() + | octet_like_predicate_part_2() + | similar_predicate_part_2() + | regex_like_predicate_part_2() + | null_predicate_part_2() + | quantified_comparison_predicate_part_2() + | normalized_predicate_part_2() + | match_predicate_part_2() + | overlaps_predicate_part_2() + | distinct_predicate_part_2() + | member_predicate_part_2() + | submultiset_predicate_part_2() + | set_predicate_part_2() + | type_predicate_part_2() + ) +} + +void result(): +{} +{ + value_expression() + | ( "NULL" )#NullLiteral +} + +void cast_specification() #CastExpression: +{} +{ + "CAST" "(" cast_operand() "AS" cast_target() ")" + | try_cast() +} + +void cast_operand(): +{} +{ + value_expression() + | implicitly_typed_value_specification() +} + +void cast_target(): +{} +{ + data_type() + | schema_qualified_name() +} + +void next_value_expression() #NextValueFor: +{} +{ + "NEXT" "VALUE" "FOR" schema_qualified_name() +} + +void field_reference() #FieldReference(2): +{} +{ + // TODO(kaikalur): fixit -- value_expression_primary() "." identifier() + "." identifier() +} + +void subtype_treatment() #Unsupported: +{} +{ + "TREAT" "(" value_expression() "AS" target_subtype() ")" +} + +void target_subtype(): +{} +{ + path_resolved_user_defined_type_name() + | reference_type() +} + +void method_invocation(): +{} +{ + ( ( direct_invocation() #FunctionCall(2) ) [ { PushNode(PopNode()); } udaf_filter() #AggregationFunction(2) ] ) + //| direct_invocation() #FunctionCall(2) + | generalized_invocation() +} + +void direct_invocation(): +{} +{ + // TODO(kaikalur): fixit -- value_expression_primary() "." identifier() [ SQL_argument_list() ] + SQL_argument_list() +} + +void generalized_invocation() #FunctionCall(2): +{} +{ + // "(" value_expression_primary() "AS" data_type() ")" + ( "." identifier() )#QualifiedName(2) [ SQL_argument_list() ] +} + + +void static_method_invocation() #Unsupported: +{} +{ + // TODO(kaikalur): fixit - path_resolved_user_defined_type_name() "::" identifier() + "::" identifier() + [ SQL_argument_list() ] +} + +void new_specification() #Unsupported: +{} +{ + "NEW" path_resolved_user_defined_type_name() SQL_argument_list() +} + +void new_invocation() #Unused: +{} +{ + method_invocation() + | routine_invocation() +} + +void attribute_or_method_reference(): +{} +{ + // TODO(kaikalur): fixit -- value_expression_primary() "->" identifier() + // We treat everything as lambda for now. + // ( "->" identifier() [ SQL_argument_list() ] )#Lambda(>1) + ( lambda_body() )#Lambda(2) +} + +void dereference_operation() #Unsupported: +{} +{ + reference_value_expression() "->" identifier() +} + +void reference_resolution() #Unsupported: +{} +{ + "DEREF" "(" reference_value_expression() ")" +} + +void array_element_reference() #ArrayElement(2): +{} +{ + // TODO(kaikalur): fixit -- array_value_expression() + left_bracket_or_trigraph() value_expression() right_bracket_or_trigraph() +} + +void multiset_element_reference() #Unsupported: +{} +{ + "ELEMENT" "(" multiset_value_expression() ")" +} + +void value_expression(): +{} +{ + boolean_value_expression() + | common_value_expression() + | row_value_expression() +} + +void common_value_expression(): +{} +{ + numeric_value_expression() + | string_value_expression() + | datetime_value_expression() + | interval_value_expression() + | user_defined_type_value_expression() + | reference_value_expression() + | collection_value_expression() +} + +void user_defined_type_value_expression(): +{} +{ + value_expression_primary() +} + +void reference_value_expression(): +{} +{ + value_expression_primary() +} + +void collection_value_expression(): +{} +{ + array_value_expression() + | multiset_value_expression() +} + +void numeric_value_expression(): +{} +{ + term() + ( + { PushNode(PopNode()); } <PLUS: "+"> term() #AdditiveExpression(2) + | { PushNode(PopNode()); } <MINUS: "-"> term() #AdditiveExpression(2) + )* +} + +void term(): +{} +{ + factor() + ( + { PushNode(PopNode()); } <STAR: "*"> factor() #MultiplicativeExpression(2) + | { PushNode(PopNode()); } <DIV: "/"> factor() #MultiplicativeExpression(2) + | { PushNode(PopNode()); } percent_operator() factor() #MultiplicativeExpression(2) + )* +} + +void factor(): +{} +{ + ( ( "+" | "-" ) numeric_primary() )#UnaryExpression(1) + | numeric_primary() +} + +void numeric_primary(): +{} +{ + numeric_value_function() + | character_value_expression() +} + +void numeric_value_function() #BuiltinFunctionCall: +{} +{ + // Builtin function calls are weird in that the name is a keyword and then a ( expressions ) so we open a new scope and just make an ArgumentList + // so that it will be just like a FunctionCall + ( + position_expression() + | regex_occurrences_function() + | regex_position_expression() + | extract_expression() + | length_expression() + | cardinality_expression() + | max_cardinality_expression() + | absolute_value_expression() + | modulus_expression() + | natural_logarithm() + | exponential_function() + | power_function() + | square_root() + | floor_function() + | ceiling_function() + | width_bucket_function() + ) #ArgumentList(>0) +} + +void position_expression(): +{} +{ + character_position_expression() + | binary_position_expression() +} + +void regex_occurrences_function() #Unsupported: +{} +{ + "OCCURRENCES_REGEX" "(" + character_value_expression() [ "FLAG" character_value_expression() ] + "IN" character_value_expression() + [ "FROM" numeric_value_expression() ] + [ "USING" char_length_units() ] + ")" +} + +void regex_position_expression() #Unsupported: +{} +{ + "POSITION_REGEX" "(" + [ regex_position_start_or_after() ] + character_value_expression() [ "FLAG" character_value_expression() ] + "IN" character_value_expression() + [ "FROM" numeric_value_expression() ] + [ "USING" char_length_units() ] + [ "OCCURRENCE" numeric_value_expression() ] + [ "GROUP" numeric_value_expression() ] + ")" +} + +void regex_position_start_or_after(): +{} +{ + "START" + | "AFTER" +} + +void character_position_expression(): +{} +{ + "POSITION" "(" character_value_expression() "IN" character_value_expression() + [ ( "USING" char_length_units() ) #Unsupported ] ")" +} + +void binary_position_expression(): +{} +{ + "POSITION" "(" binary_value_expression() "IN" binary_value_expression() ")" +} + +void length_expression(): +{} +{ + char_length_expression() + | octet_length_expression() +} + +void char_length_expression(): +{} +{ + ( "CHAR_LENGTH" | "CHARACTER_LENGTH" ) "(" character_value_expression() + [ ( "USING" char_length_units() ) #Unsupported ] ")" +} + +void octet_length_expression() #Unsupported: +{} +{ + "OCTET_LENGTH" "(" string_value_expression() ")" +} + +void extract_expression(): +{} +{ + "EXTRACT" "(" extract_field() "FROM" extract_source() ")" +} + +void extract_field(): +{} +{ + primary_datetime_field() + | time_zone_field() +} + +void time_zone_field() #TimeZoneField: +{} +{ + "TIMEZONE_HOUR" + | "TIMEZONE_MINUTE" +} + +void extract_source(): +{} +{ + datetime_value_expression() + | interval_value_expression() +} + +void cardinality_expression(): +{} +{ + "CARDINALITY" "(" collection_value_expression() ")" +} + +void max_cardinality_expression() #Unsupported: +{} +{ + "MAX_CARDINALITY" "(" array_value_expression() ")" +} + +void absolute_value_expression(): +{} +{ + "ABS" "(" numeric_value_expression() ")" +} + +void modulus_expression(): +{} +{ + "MOD" "(" numeric_value_expression() "," numeric_value_expression() ")" +} + +void natural_logarithm(): +{} +{ + "LN" "(" numeric_value_expression() ")" +} + +void exponential_function(): +{} +{ + "EXP" "(" numeric_value_expression() ")" +} + +void power_function(): +{} +{ + "POWER" "(" numeric_value_expression() "," numeric_value_expression() ")" +} + +void square_root(): +{} +{ + "SQRT" "(" numeric_value_expression() ")" +} + +void floor_function(): +{} +{ + "FLOOR" "(" numeric_value_expression() ")" +} + +void ceiling_function(): +{} +{ + ( "CEIL" | "CEILING" ) "(" numeric_value_expression() ")" +} + +void width_bucket_function(): +{} +{ + "WIDTH_BUCKET" "(" numeric_value_expression() "," numeric_value_expression() + [ "," numeric_value_expression() "," numeric_value_expression() ] // Non-standard optional + ")" +} + +void string_value_expression(): +{} +{ + character_value_expression() + | binary_value_expression() +} + +void character_value_expression() #Concatenation(>1): +{} +{ + character_factor() ( concatenation() )* +} + +void concatenation(): +{} +{ + // TODO(kaikalur): fixit -- character_value_expression() "||" character_factor() + "||" character_factor() +} + +void character_factor(): +{} +{ + character_primary() [ ( collate_clause() )#Unsupported ] +} + +void character_primary(): +{} +{ + string_value_function() + | binary_value_expression() +} + +void binary_value_expression() #Concatenation(>1): +{} +{ + binary_primary() ( binary_concatenation() )* +} + +void binary_primary(): +{} +{ + string_value_function() + | datetime_value_expression() +} + +void binary_concatenation(): +{} +{ + // TODO(kaikalur): fixit -- binary_value_expression() "||" binary_primary() + "||" binary_primary() +} + +void string_value_function(): +{} +{ + character_value_function() + | binary_value_function() +} + +void character_value_function() #BuiltinFunctionCall: +{} +{ + ( + character_substring_function() + | regular_expression_substring_function() + | regex_substring_function() + | fold() + | transcoding() + | character_transliteration() + | regex_transliteration() + | trim_function() + | character_overlay_function() + | normalize_function() + | specific_type_method() + ) #ArgumentList(>0) +} + +void character_substring_function(): +{} +{ + "SUBSTRING" "(" character_value_expression() "FROM" numeric_value_expression() + [ "FOR" numeric_value_expression() ] + [ ( "USING" char_length_units() )#Unsupported ] + ")" +} + +void regular_expression_substring_function() #Unsupported: +{} +{ + "SUBSTRING" "(" character_value_expression() "SIMILAR" character_value_expression() + "ESCAPE" character_value_expression() ")" +} + +void regex_substring_function() #Unsupported: +{} +{ + "SUBSTRING_REGEX" "(" + character_value_expression() [ "FLAG" character_value_expression() ] + "IN" character_value_expression() + [ "FROM" numeric_value_expression() ] + [ "USING" char_length_units() ] + [ "OCCURRENCE" numeric_value_expression() ] + [ "GROUP" numeric_value_expression() ] + ")" +} + +void fold(): +{} +{ + ( "UPPER" | "LOWER" ) "(" character_value_expression() ")" +} + +void transcoding() #Unsupported: +{} +{ + "CONVERT" "(" character_value_expression() "USING" schema_qualified_name() ")" +} + +void character_transliteration() #Unsupported: +{} +{ + "TRANSLATE" "(" character_value_expression() "USING" schema_qualified_name() ")" +} + +void regex_transliteration() #Unsupported: +{} +{ + "TRANSLATE_REGEX" "(" + character_value_expression() [ "FLAG" character_value_expression() ] + "IN" character_value_expression() + [ "WITH" character_value_expression() ] + [ "FROM" numeric_value_expression() ] + [ "USING" char_length_units() ] + [ "OCCURRENCE" regex_transliteration_occurrence() ] + ")" +} + +void regex_transliteration_occurrence(): +{} +{ + "ALL" + | numeric_value_expression() +} + +void trim_function(): +{} +{ + "TRIM" "(" trim_operands() ")" +} + +void trim_operands(): +{} +{ + [ trim_specification() ] + character_value_expression() + [ + ("," | ( "FROM" )#Unsupported ) // Non-standard + character_value_expression() + ] +} + +void trim_specification() #Unsupported: +{} +{ + "LEADING" + | "TRAILING" + | "BOTH" +} + +void character_overlay_function() #Unsupported: +{} +{ + "OVERLAY" "(" character_value_expression() "PLACING" character_value_expression() + "FROM" numeric_value_expression() [ "FOR" numeric_value_expression() ] + [ "USING" char_length_units() ] ")" +} + +void normalize_function() #Unsupported: +{} +{ + "NORMALIZE" "(" character_value_expression() + [ "," normal_form() [ "," normalize_function_result_length() ] ] ")" +} + +void normal_form(): +{} +{ + "NFC" + | "NFD" + | "NFKC" + | "NFKD" +} + +void normalize_function_result_length(): +{} +{ + character_length() + | character_large_object_length() +} + +void specific_type_method() #Unsupported: +{} +{ + //user_defined_type_value_expression() "." "SPECIFICTYPE" + "." "SPECIFICTYPE" [ "(" ")" ] +} + +void binary_value_function(): +{} +{ + binary_substring_function() + | binary_trim_function() + | binary_overlay_function() +} + +void binary_substring_function() #Unsupported: +{} +{ + "SUBSTRING" "(" binary_value_expression() "FROM" numeric_value_expression() + [ "FOR" numeric_value_expression() ] ")" +} + +void binary_trim_function(): +{} +{ + "TRIM" "(" binary_trim_operands() ")" +} + +void binary_trim_operands(): +{} +{ + [ trim_specification() ] + binary_value_expression() + [ + ("," | ( "FROM" )#Unsupported ) // Non-standard + binary_value_expression() + ] +} + +void binary_overlay_function() #Unsupported: +{} +{ + "OVERLAY" "(" binary_value_expression() "PLACING" binary_value_expression() + "FROM" numeric_value_expression() [ "FOR" numeric_value_expression() ] ")" +} + +void datetime_value_expression(): +{} +{ + ( datetime_term() ) // [ ( "+" | "-" ) interval_term() ] )#AdditiveExpression(>1) + | ( interval_value_expression() ) //[ "+" datetime_term() ] )#AdditiveExpression(>1) +} + +void datetime_term(): +{} +{ + datetime_factor() +} + +void datetime_factor() : +{} +{ + datetime_primary() [ time_zone() ] +} + +void datetime_primary(): +{} +{ + datetime_value_function() + | interval_value_expression() +} + +void time_zone() #Unsupported: +{} +{ + "AT" time_zone_specifier() +} + +void time_zone_specifier(): +{} +{ + "LOCAL" + | "TIME" "ZONE" interval_primary() +} + +void datetime_value_function() #BuiltinFunctionCall: +{} +{ + ( + current_date_value_function() + | current_time_value_function() + | current_timestamp_value_function() + | current_local_time_value_function() + | current_local_timestamp_value_function() + ) #ArgumentList(>0) +} + +void current_date_value_function(): +{} +{ + "CURRENT_DATE" +} + +void current_time_value_function(): +{} +{ + "CURRENT_TIME" [ ( "(" <unsigned_integer> ")" )#Unsupported ] +} + +void current_local_time_value_function(): +{} +{ + "LOCALTIME" [ ( "(" <unsigned_integer> ")" )#Unsupported ] +} + +void current_timestamp_value_function(): +{} +{ + "CURRENT_TIMESTAMP" [ ( "(" <unsigned_integer> ")" )#Unsupported ] +} + +void current_local_timestamp_value_function() #Unsupported: +{} +{ + "LOCALTIMESTAMP" [ ( "(" <unsigned_integer> ")" )#Unsupported ] +} + +void interval_value_expression(): +{} +{ + ( interval_term() ) //[ ( "+" | "-" ) interval_term() ] ) #AdditiveExpression(>1) + | LOOKAHEAD("(" datetime_value_expression() "-" datetime_term() ")" ) + ( "(" datetime_value_expression() "-" datetime_term() ")" )#AdditiveExpression + interval_qualifier() +} + +void interval_term() #MultiplicativeExpression(>1): +{} +{ + interval_factor() [ ( "*" | "/" ) factor() ] + //TODO(kaikalur) - fixit | term() [ "*" interval_factor() ] +} + +void interval_factor(): +{} +{ + ( ( "+" | "-" ) interval_primary() )#UnaryExpression(1) + | interval_primary() +} + +void interval_primary(): +{} +{ + interval_value_function() +|( + array_value_expression() +) [ ( interval_qualifier() )#Unsupported ] +} + + +void interval_value_function() #BuiltinFunctionCall: +{} +{ + ( interval_absolute_value_function() ) #ArgumentList(>0) +} + +void interval_absolute_value_function(): +{} +{ + "ABS" "(" interval_value_expression() ")" +} + +void boolean_value_expression() #OrExpression(>1): +{} +{ + boolean_term() ( "OR" boolean_term() )* +} + +void boolean_term() #AndExpression(>1): +{} +{ + boolean_factor() ( "AND" boolean_factor() )* +} + +void boolean_factor(): +{} +{ + ( "NOT" boolean_test() )#NotExpression + | boolean_test() +} + +void boolean_test() #IsExpression(>1): +{} +{ + boolean_primary() + [ "IS" [ "NOT" ] truth_value() ] +} + +void truth_value(): +{} +{ + "TRUE" + | "FALSE" + | ( "UNKNOWN" )#Unsupported +} + +void boolean_primary(): +{} +{ + predicate() + | boolean_predicand() +} + +void boolean_predicand(): +{} +{ + parenthesized_boolean_value_expression() + | numeric_value_expression() +} + +void parenthesized_boolean_value_expression() #ParenthesizedExpression: +{} +{ + "(" boolean_value_expression() ")" +} + +void array_value_expression() #Concatenation(>1): +{} +{ + array_primary() ( "||" array_primary() )* +} + +void array_value_expression_1(): +{} +{ + array_value_expression() +} + +void array_primary(): +{} +{ + array_value_function() + | multiset_value_expression() +} + +void array_value_function() #Unsupported: +{} +{ + trim_array_function() +} + +void trim_array_function(): +{} +{ + "TRIM_ARRAY" "(" array_value_expression() "," numeric_value_expression() ")" +} + +void array_value_constructor(): +{} +{ + array_value_constructor_by_enumeration() + | array_value_constructor_by_query() +} + +void array_value_constructor_by_enumeration() #ArrayLiteral: +{} +{ + "ARRAY" left_bracket_or_trigraph() + [ array_element_list() ] // For parsing ease. + right_bracket_or_trigraph() +} + +void array_element_list(): +{} +{ + array_element() ( "," array_element() )* +} + +void array_element(): +{} +{ + value_expression() +} + +void array_value_constructor_by_query() #Unsupported: +{} +{ + "ARRAY" subquery() +} + +void multiset_value_expression() : +{} +{ + multiset_term() [ ( "MULTISET" "UNION" [ "ALL" | "DISTINCT" ] | "MULTISET" "EXCEPT" [ "ALL" | "DISTINCT" ] ) multiset_term() #Unsupported(2) ] +} + +void multiset_term() : +{} +{ + multiset_primary() [ "MULTISET" "INTERSECT" [ "ALL" | "DISTINCT" ] multiset_primary() #Unsupported(2)] +} + +void multiset_primary(): +{} +{ + multiset_set_function() + | value_expression_primary() +} + +void multiset_set_function() #Unsupported: +{} +{ + "SET" "(" multiset_value_expression() ")" +} + +void multiset_value_constructor() #Unsupported: +{} +{ + multiset_value_constructor_by_enumeration() + | multiset_value_constructor_by_query() + | table_value_constructor_by_query() +} + +void multiset_value_constructor_by_enumeration(): +{} +{ + "MULTISET" left_bracket_or_trigraph() multiset_element_list() right_bracket_or_trigraph() +} + +void multiset_element_list(): +{} +{ + multiset_element() ( "," multiset_element() )* +} + +void multiset_element(): +{} +{ + value_expression() +} + +void multiset_value_constructor_by_query(): +{} +{ + "MULTISET" subquery() +} + +void table_value_constructor_by_query(): +{} +{ + "TABLE" subquery() +} + +void row_value_constructor(): +{} +{ + explicit_row_value_constructor() + | common_value_expression() + | boolean_value_expression() +} + +void explicit_row_value_constructor(): +{} +{ + ( "ROW" "(" row_value_constructor_element_list() ")" )#RowExpression + | subquery() + | ( "(" row_value_constructor_element() [ "," row_value_constructor_element_list() ] ")" )#RowExpression +} + +void row_value_constructor_element_list(): +{} +{ + row_value_constructor_element() ( "," row_value_constructor_element() )* +} + +void row_value_constructor_element(): +{} +{ + value_expression() +} + +void contextually_typed_row_value_constructor(): +{} +{ + common_value_expression() + | boolean_value_expression() + | contextually_typed_value_specification() + | ( "(" contextually_typed_value_specification() ")" )#ParenthesizedExpression + | ("(" contextually_typed_row_value_constructor_element() "," + contextually_typed_row_value_constructor_element_list() ")" )#ParenthesizedExpression + | ( "ROW" "(" contextually_typed_row_value_constructor_element_list() ")" )#RowExression +} + +void contextually_typed_row_value_constructor_element_list(): +{} +{ + contextually_typed_row_value_constructor_element() + ( "," contextually_typed_row_value_constructor_element() )* +} + +void contextually_typed_row_value_constructor_element(): +{} +{ + contextually_typed_value_specification() + //| value_expression() +} + +void row_value_constructor_predicand(): +{} +{ + common_value_expression() + | explicit_row_value_constructor() + //| boolean_predicand() +} + +void row_value_expression(): +{} +{ + explicit_row_value_constructor() + | row_value_special_case() +} + +void table_row_value_expression(): +{} +{ + row_value_constructor() + | row_value_special_case() +} + +void contextually_typed_row_value_expression(): +{} +{ + contextually_typed_row_value_constructor() + | row_value_special_case() +} + +void row_value_predicand(): +{} +{ + row_value_constructor_predicand() + | row_value_special_case() +} + +void row_value_special_case(): +{} +{ + common_value_expression() + | nonparenthesized_value_expression_primary() +} + +void table_value_constructor() #Values: +{} +{ + "VALUES" row_value_expression_list() +} + +void row_value_expression_list(): +{} +{ + table_row_value_expression() ( "," table_row_value_expression() )* +} + +void contextually_typed_table_value_constructor() #Values: +{} +{ + "VALUES" contextually_typed_row_value_expression_list() +} + +void contextually_typed_row_value_expression_list(): +{} +{ + contextually_typed_row_value_expression() + ( "," contextually_typed_row_value_expression() )* +} + +void table_expression() #TableExpression: +{} +{ + from_clause() + [ where_clause() ] + [ group_by_clause() ] + [ having_clause() ] + [ window_clause() ] +} + +void from_clause() #FromClause: +{} +{ + "FROM" table_reference_list() +} + +void table_reference_list() #CommaJoin(>1): +{} +{ + table_reference() ( "," table_reference() )* +} + +void table_reference() #Join(>1): +{} +{ + table_factor() ( joined_table() )* +} + +void table_factor() #TableSample(>1): +{} +{ + table_primary() [ sample_clause() ] + + [ ( partitioned_join_table() ) #Unsupported ] // For removing left recursion +} + +void sample_clause(): +{} +{ + "TABLESAMPLE" sample_method() "(" sample_percentage() ")" + [ repeatable_clause() ] +} + +void sample_method(): +{} +{ + "BERNOULLI" + | "SYSTEM" +} + +void repeatable_clause() #Unsupported: +{} +{ + "REPEATABLE" "(" repeat_argument() ")" +} + +void sample_percentage(): +{} +{ + numeric_value_expression() +} + +void repeat_argument(): +{} +{ + numeric_value_expression() +} + +void table_primary() #AliasedTable(>1): +{} +{ + ( + table_or_query_name() + | LOOKAHEAD("(" ("WITH"|"SELECT"|"VALUES"|"TABLE")) derived_table() + | parenthesized_joined_table() + | lateral_derived_table() + | collection_derived_table() + | table_function_derived_table() + | only_spec() + | data_change_delta_table() + ) + + [ alias() ] +} + +void alias() #Alias: +{} +{ + [ "AS" ] + identifier() + [ identifier_suffix_chain() ] + [ "(" column_name_list() ")" ] +} + +void system_version_specification() #Unsupported: +{} +{ + "AS" "OF" "SYSTEM" "TIME" datetime_value_expression() + | "VERSIONS" "BEFORE" "SYSTEM" "TIME" datetime_value_expression() + | "VERSIONS" "AFTER" "SYSTEM" "TIME" datetime_value_expression() + | "VERSIONS" "BETWEEN" [ "ASYMMETRIC" | "SYMMETRIC" ] + "SYSTEM" "TIME" datetime_value_expression() "AND" datetime_value_expression() +} + +void only_spec() #Unsupported: +{} +{ + "ONLY" "(" table_or_query_name() ")" +} + +// TODO(kaikalur) - check Presto and Spark for lateral +void lateral_derived_table() #Unsupported: +{} +{ + "LATERAL" subquery() +} + +void collection_derived_table() #Unnest: +{} +{ + "UNNEST" "(" collection_value_expression() + ( "," collection_value_expression() )* ")" + [ "WITH" "ORDINALITY" ] +} + +void table_function_derived_table() #Unsupported: +{} +{ + "TABLE" "(" collection_value_expression() ")" +} + +void derived_table(): +{} +{ + LOOKAHEAD("(" ("SELECT"|"VALUES"|"TABLE")) query_expression() + | subquery() +} + +void table_or_query_name(): +{} +{ + table_name() + | identifier() +} + +void column_name_list() #ColumnNames: +{} +{ + identifier() ( "," identifier() )* +} + +void data_change_delta_table() #Unsupported: +{} +{ + result_option() "TABLE" "(" data_change_statement() ")" +} + +void data_change_statement(): +{} +{ + delete_statement_searched() + | insert_statement() + | merge_statement() + | update_statement_searched() +} + +void result_option(): +{} +{ + "FINAL" + | "NEW" + | "OLD" +} + +void parenthesized_joined_table() #Join(>1): +{} +{ + // TODO(kaikalur) -- double check the following + //"(" parenthesized_joined_table() ")" + //| "(" joined_table() ")" + + "(" + ( + LOOKAHEAD("(" ("WITH"|"SELECT"|"VALUES"|"TABLE")) table_primary() + | table_reference() + ) + + ( joined_table() )* + ")" +} + +void joined_table(): +{} +{ + cross_join() + | qualified_join() + | natural_join() +} + +void cross_join(): +{} +{ + //TODO(kaikalur): fixit --table_reference() "CROSS" "JOIN" table_factor() + "CROSS" "JOIN" table_factor() +} + +void qualified_join(): +{} +{ + //TODO(kaikalur) -- check partitioned ( table_reference() | partitioned_join_table() ) + [ join_type() ] "JOIN" + ( table_reference() | partitioned_join_table() ) + join_specification() +} + +void partitioned_join_table() #Unsupported: +{} +{ + "PARTITION" "BY" partitioned_join_column_reference_list() +} + +void partitioned_join_column_reference_list(): +{} +{ + "(" partitioned_join_column_reference() + ( "," partitioned_join_column_reference() )* + ")" +} + +void partitioned_join_column_reference(): +{} +{ + column_reference() +} + +void natural_join() #Unsupported: +{} +{ + //TODO(kaikalur) -- check ( table_reference() | partitioned_join_table() ) + "NATURAL" [ join_type() ] "JOIN" + ( table_factor() | partitioned_join_table() ) +} + +void join_specification(): +{} +{ + join_condition() + | named_columns_join() +} + +void join_condition() #OnClause: +{} +{ + "ON" search_condition() +} + +void named_columns_join() #UsingClause: +{} +{ + "USING" "(" join_column_list() ")" +} + +void join_type(): +{} +{ + "INNER" + | outer_join_type() [ "OUTER" ] +} + +void outer_join_type(): +{} +{ + "LEFT" + | "RIGHT" + | "FULL" +} + +void join_column_list(): +{} +{ + column_name_list() +} + +void where_clause() #WhereClause: +{} +{ + "WHERE" search_condition() +} + +void group_by_clause() #GroupbyClause: +{} +{ + "GROUP" "BY" + [ ( set_quantifier() )#Unsupported ] + grouping_element_list() +} + +void grouping_element_list(): +{} +{ + grouping_element() ( "," grouping_element() )* +} + +void grouping_element(): +{} +{ + rollup_list() + | cube_list() + | grouping_sets_specification() + | empty_grouping_set() + | ordinary_grouping_set() +} + +void ordinary_grouping_set(): +{} +{ + grouping_column_reference() + | "(" grouping_column_reference_list() ")" +} + +void grouping_column_reference(): +{} +{ + ( + grouping_expression() + | column_reference() + ) + + [ ( collate_clause() )#Unsupported ] +} + +void grouping_column_reference_list(): +{} +{ + grouping_column_reference() ( "," grouping_column_reference() )* +} + +void rollup_list() #Rollup: +{} +{ + "ROLLUP" "(" ordinary_grouping_set_list() ")" +} + +void ordinary_grouping_set_list(): +{} +{ + ordinary_grouping_set() ( "," ordinary_grouping_set() )* +} + +void cube_list() #Cube: +{} +{ + "CUBE" "(" ordinary_grouping_set_list() ")" +} + +void grouping_sets_specification() #GroupingSets: +{} +{ + "GROUPING" "SETS" "(" grouping_set_list() ")" +} + +void grouping_set_list(): +{} +{ + grouping_set() ( "," grouping_set() )* +} + +void grouping_set(): +{} +{ + rollup_list() + | cube_list() + | grouping_sets_specification() + | empty_grouping_set() + | ordinary_grouping_set() +} + +void empty_grouping_set(): +{} +{ + "(" ")" +} + +void having_clause() #HavingClause: +{} +{ + "HAVING" search_condition() +} + +void window_clause() #Unsupported: +{} +{ + "WINDOW" window_definition_list() +} + +void window_definition_list(): +{} +{ + window_definition() ( "," window_definition() )* +} + +void window_definition(): +{} +{ + identifier() "AS" window_specification() +} + +void window_specification() #WindowSpecification: +{} +{ + "(" [ window_specification_details() ] ")" +} + +void window_specification_details(): +{} +{ + // TODO(kaikalur): checkout this rule + ( + window_partition_clause() + | window_order_clause() + | window_frame_clause() + | existing_identifier() + )+ +} + +void existing_identifier(): +{} +{ + identifier() +} + +void window_partition_clause() #PartitionByClause: +{} +{ + "PARTITION" "BY" window_partition_column_reference_list() +} + +void window_partition_column_reference_list(): +{} +{ + window_partition_column_reference() + ( "," window_partition_column_reference() )* +} + +void window_partition_column_reference(): +{} +{ + ( + value_expression() // Non-standard + | column_reference() + ) + [ collate_clause() ] +} + +void window_order_clause() #OrderByClause: +{} +{ + "ORDER" "BY" sort_specification_list() +} + +void window_frame_clause(): +{} +{ + window_frame_units() window_frame_extent() + [ window_frame_exclusion() ] +} + +void window_frame_units() #WindowFrameUnits: +{} +{ + "ROWS" + | "RANGE" +} + +void window_frame_extent() #WindowFrameExtent: +{} +{ + window_frame_start() + | window_frame_between() +} + +void window_frame_start(): +{} +{ + ( "UNBOUNDED" "PRECEDING" )#UnboundedPreceding + | ( "CURRENT" "ROW" )#CurrentRow + | window_frame_preceding() +} + +void window_frame_preceding() #WindowFramePreceding: +{} +{ + //TODO(kaikalur) - genralized unsigned_value_specification() "PRECEDING" + value_expression() "PRECEDING" +} + +void window_frame_between() #WindowFrameBetween: +{} +{ + "BETWEEN" window_frame_bound() "AND" window_frame_bound() +} + +void window_frame_bound(): +{} +{ + window_frame_start() + | ( "UNBOUNDED" "FOLLOWING" )#UnboundedFollowing + | window_frame_following() +} + +void window_frame_following() #WindowFrameFollowing: +{} +{ + //TODO(kaikalur) - genralized unsigned_value_specification() "FOLLOWING" + value_expression() "FOLLOWING" +} + +void window_frame_exclusion() #Unsupported: +{} +{ + "EXCLUDE" "CURRENT" "ROW" + | "EXCLUDE" "GROUP" + | "EXCLUDE" "TIES" + | "EXCLUDE" "NO" "OTHERS" +} + +void query_specification() #Select: +{} +{ + "SELECT" [ set_quantifier() ] select_list() + [ table_expression() ] // Non-standard +} + +void select_list() #SelectList: +{} +{ + star() + ( "," select_sublist() )* // Non-standard + | select_sublist() ( "," select_sublist() )* + [ "," star() ] // Non-standard + ( "," select_sublist() )* // Non-standard +} + +void star() #SelectItem: +{} +{ + ( "*" ) #Star +} + +void select_sublist() #SelectItem: +{} +{ + //derived_column() + //| qualified_asterisk() + + // For ease of parsing + derived_column() + [ + "." ( "*" )#Star() + [ ( "AS" "(" all_fields_column_name_list() ")" )#Unsupported ] + | as_clause() + ] +} + +void qualified_asterisk(): +{} +{ + ( asterisked_identifier_chain() "." "*" )#Star + | all_fields_reference() +} + +void asterisked_identifier_chain() #QualifiedName(>1): +{} +{ + identifier() ( "." identifier() )* +} + +void derived_column(): +{} +{ + value_expression() [ as_clause() ] +} + +void as_clause() #Alias: +{} +{ + [ "AS" ] identifier() +} + +void all_fields_reference(): +{} +{ + value_expression_primary() "." "*" + [ ( "AS" "(" all_fields_column_name_list() ")" )#Unsupported ] +} + +void all_fields_column_name_list(): +{} +{ + column_name_list() +} + +void query_expression() #QuerySpecification(>1): +{} +{ + [ with_clause() ] query_expression_body() + [ order_by_clause() ] + // TODO(kaikalur): validate + [ limit_clause() | result_offset_clause() [ fetch_first_clause() ] | fetch_first_clause() ] +} + +void with_clause() #WithClause: +{} +{ + "WITH" [ "RECURSIVE" ] with_list() +} + +void with_list(): +{} +{ + with_list_element() ( "," with_list_element() )* +} + +void with_list_element() #Cte: +{} +{ + identifier() [ "(" column_name_list() ")" ] + "AS" subquery() [ search_or_cycle_clause() ] +} + +void query_expression_body() #SetOperation(>1): +{} +{ + query_term() + ( "UNION" [ "ALL" | "DISTINCT" ] + [ corresponding_spec() ] query_term() + | "EXCEPT" [ "ALL" | "DISTINCT" ] + [ corresponding_spec() ] query_term() + )* +} + +void query_term() #SetOperation(>1): +{} +{ + query_primary() ( "INTERSECT" [ "ALL" | "DISTINCT" ] [ corresponding_spec() ] query_primary() )* +} + +void query_primary(): +{} +{ + ( "(" query_expression_body() + [ order_by_clause() ] + ( [ limit_clause() ] | [ result_offset_clause() ] [ fetch_first_clause() ] ) + ")" + )#Subquery + | simple_table() +} + +void simple_table(): +{} +{ + table_value_constructor() + | explicit_table() + | query_specification() +} + +void explicit_table(): +{} +{ + "TABLE" table_or_query_name() +} + +void corresponding_spec() #Unsupported: +{} +{ + "CORRESPONDING" [ "BY" "(" column_name_list() ")" ] +} + +void order_by_clause() #OrderByClause: +{} +{ + "ORDER" "BY" sort_specification_list() +} + +void result_offset_clause() #Unsupported: +{} +{ + "OFFSET" simple_value_specification() ( "ROW" | "ROWS" ) +} + +void fetch_first_clause() #Unsupported: +{} +{ + "FETCH" ( "FIRST" | "NEXT" ) [ simple_value_specification() ] ( "ROW" | "ROWS" ) "ONLY" +} + +void search_or_cycle_clause() #Unsupported: +{} +{ + search_clause() + | cycle_clause() + | search_clause() cycle_clause() +} + +void search_clause(): +{} +{ + "SEARCH" recursive_search_order() "SET" identifier() +} + +void recursive_search_order(): +{} +{ + "DEPTH" "FIRST" "BY" column_name_list() + | "BREADTH" "FIRST" "BY" column_name_list() +} + +void cycle_clause(): +{} +{ + "CYCLE" cycle_column_list() "SET" identifier() "TO" value_expression() + "DEFAULT" value_expression() "USING" identifier() +} + +void cycle_column_list(): +{} +{ + identifier() ( "," identifier() )* +} + +void subquery() #Subquery: +{} +{ + "(" query_expression() ")" +} + +void predicate(): +{} +{ + exists_predicate() + | unique_predicate() + | row_value_predicand() + + [ + { PushNode(PopNode()); } + ( + comparison_predicate() + | between_predicate() + | in_predicate() + | like_predicate() + | similar_predicate() + | regex_like_predicate() + | null_predicate() + | quantified_comparison_predicate() + | normalized_predicate() + | match_predicate() + | overlaps_predicate() + | distinct_predicate() + | member_predicate() + | submultiset_predicate() + | set_predicate() + | type_predicate() + ) + ] +} + +void comparison_predicate(): +{} +{ + comparison_predicate_part_2() +} + +void comparison_predicate_part_2() #Comparison(2): +{} +{ + comp_op() row_value_predicand() +} + +void comp_op(): +{} +{ + <EQUAL: "="> + | <NOT_EQUAL: "<>"> + | <LESS_THAN: "<"> + | <GREATER_THAN: ">"> + | <LESS_THAN_OR_EQUAL: "<="> + | <GREATER_THAN_OR_EQUAL: ">="> + | <NOT_EQUAL_2: "!="> // Non-standard +} + +void between_predicate(): +{} +{ + between_predicate_part_2() +} + +void between_predicate_part_2() #Between(3): +{} +{ + [ "NOT" ] "BETWEEN" [ "ASYMMETRIC" | "SYMMETRIC" ] + row_value_predicand() "AND" row_value_predicand() +} + +void in_predicate(): +{} +{ + in_predicate_part_2() +} + +void in_predicate_part_2() #InPredicate: +{} +{ + [ "NOT" ] "IN" in_predicate_value() +} + +void in_predicate_value(): +{} +{ + ( "(" in_value_list() ")" )#InvalueList + | subquery() +} + +void in_value_list(): +{} +{ + row_value_expression() ( "," row_value_expression() )* +} + +void like_predicate(): +{} +{ + character_like_predicate() + | octet_like_predicate() +} + +void character_like_predicate(): +{} +{ + character_like_predicate_part_2() +} + +void character_like_predicate_part_2() #Like(2): +{} +{ + [ "NOT" ] "LIKE" character_value_expression() [ "ESCAPE" character_value_expression() ] +} + +void octet_like_predicate(): +{} +{ + octet_like_predicate_part_2() +} + +void octet_like_predicate_part_2() #Like(2): +{} +{ + [ "NOT" ] "LIKE" binary_value_expression() [ "ESCAPE" binary_value_expression() ] +} + +void similar_predicate(): +{} +{ + similar_predicate_part_2() +} + +void similar_predicate_part_2() #Unsupported: +{} +{ + [ "NOT" ] "SIMILAR" "TO" character_value_expression() [ "ESCAPE" character_value_expression() ] +} + +void regex_like_predicate(): +{} +{ + regex_like_predicate_part_2() +} + +void regex_like_predicate_part_2() #Unsupported: +{} +{ + [ "NOT" ] "LIKE_REGEX" character_value_expression() [ "FLAG" character_value_expression() ] +} + +void null_predicate(): +{} +{ + null_predicate_part_2() +} + +void null_predicate_part_2() #IsNull(1): +{} +{ + "IS" [ "NOT" ] "NULL" +} + +void quantified_comparison_predicate(): +{} +{ + quantified_comparison_predicate_part_2() +} + +void quantified_comparison_predicate_part_2() #QuantifiedComparison(2): +{} +{ + comp_op() ( "ALL" | "SOME" | "ANY" ) subquery() +} + +void exists_predicate() #Exists(1): +{} +{ + "EXISTS" subquery() +} + +void unique_predicate() #Unsupported: +{} +{ + "UNIQUE" subquery() +} + +void normalized_predicate(): +{} +{ + normalized_predicate_part_2() +} + +void normalized_predicate_part_2() #Unsupported: +{} +{ + "IS" [ "NOT" ] [ normal_form() ] "NORMALIZED" +} + +void match_predicate(): +{} +{ + match_predicate_part_2() +} + +void match_predicate_part_2() #Unsupported: +{} +{ + "MATCH" [ "UNIQUE" ] [ "SIMPLE" | "PARTIAL" | "FULL" ] subquery() +} + +void overlaps_predicate(): +{} +{ + overlaps_predicate_part_2() +} + +void overlaps_predicate_part_1(): +{} +{ + row_value_predicand_1() +} + +void overlaps_predicate_part_2() #Unsupported: +{} +{ + "OVERLAPS" row_value_predicand_2() +} + +void row_value_predicand_1(): +{} +{ + row_value_predicand() +} + +void row_value_predicand_2(): +{} +{ + row_value_predicand() +} + +void distinct_predicate(): +{} +{ + distinct_predicate_part_2() +} + +void distinct_predicate_part_2() #IsDistinct(2): +{} +{ + "IS" [ "NOT" ] "DISTINCT" "FROM" row_value_predicand_4() +} + +void row_value_predicand_3(): +{} +{ + row_value_predicand() +} + +void row_value_predicand_4(): +{} +{ + row_value_predicand() +} + +void member_predicate(): +{} +{ + member_predicate_part_2() +} + +void member_predicate_part_2() #Unsupported: +{} +{ + [ "NOT" ] "MEMBER" [ "OF" ] multiset_value_expression() +} + +void submultiset_predicate(): +{} +{ + submultiset_predicate_part_2() +} + +void submultiset_predicate_part_2() #Unsupported: +{} +{ + [ "NOT" ] "SUBMULTISET" [ "OF" ] multiset_value_expression() +} + +void set_predicate(): +{} +{ + set_predicate_part_2() +} + +void set_predicate_part_2() #Unsupported: +{} +{ + "IS" [ "NOT" ] "A" "SET" +} + +void type_predicate(): +{} +{ + type_predicate_part_2() +} + +void type_predicate_part_2() #Unsupported: +{} +{ + "IS" [ "NOT" ] "OF" "(" type_list() ")" +} + +void type_list(): +{} +{ + user_defined_type_specification() + ( "," user_defined_type_specification() )* +} + +void user_defined_type_specification(): +{} +{ + exclusive_user_defined_type_specification() + | inclusive_user_defined_type_specification() +} + +void inclusive_user_defined_type_specification(): +{} +{ + path_resolved_user_defined_type_name() +} + +void exclusive_user_defined_type_specification(): +{} +{ + "ONLY" path_resolved_user_defined_type_name() +} + +void search_condition(): +{} +{ + boolean_value_expression() +} + +void interval_qualifier() #InvervalQualifier: +{} +{ + start_field() "TO" end_field() + | single_datetime_field() +} + +void start_field() #NonSecondField: +{} +{ + non_second_primary_datetime_field() + [ "(" interval_leading_field_precision() ")" ] +} + +void end_field(): +{} +{ + non_second_primary_datetime_field() + | ( "SECOND" [ "(" interval_fractional_seconds_precision() ")" ] )#SecondField +} + +//TODO(kaikalur): Need to check the matching rules. +void single_datetime_field(): +{} +{ + //non_second_primary_datetime_field() + //[ "(" interval_leading_field_precision() ")" ] + start_field() + | ( "SECOND" [ "(" interval_leading_field_precision() + [ "," interval_fractional_seconds_precision() ] ")" ] )#SecondField +} + +void primary_datetime_field(): +{} +{ + non_second_primary_datetime_field() + | "SECOND" +} + +void non_second_primary_datetime_field() #NonSecondDateTimeField: +{} +{ + "YEAR" + | "MONTH" + | "DAY" + | "HOUR" + | "MINUTE" +} + +void interval_fractional_seconds_precision(): +{} +{ + <unsigned_integer> +} + +void interval_leading_field_precision(): +{} +{ + <unsigned_integer> +} + +void language_clause() #LanguageClause: +{} +{ + "LANGUAGE" language_name() +} + +void language_name(): +{} +{ + "ADA" + | "C" + | "COBOL" + | "FORTRAN" + | "M" | "MUMPS" + | "PASCAL" + | "PLI" + | "SQL" +} + +void path_specification(): +{} +{ + "PATH" schema_name_list() +} + +void schema_name_list(): +{} +{ + schema_name() ( "," schema_name() )* +} + +void routine_invocation(): +{} +{ + routine_name() SQL_argument_list() +} + +void routine_name(): +{} +{ + [ schema_name() "." ] identifier() +} + +void SQL_argument_list() #ArgumentList: +{} +{ + "(" [ SQL_argument() ( "," SQL_argument() )* ] ")" +} + +void SQL_argument(): +{} +{ + LOOKAHEAD(lambda_params() "->") lambda() + | value_expression() [ generalized_expression() ] + | named_argument_specification() + | contextually_typed_value_specification() + | target_specification() +} + +void generalized_expression() #Unsupported: +{} +{ + "AS" path_resolved_user_defined_type_name() +} + +void named_argument_specification() #NamedArgument: +{} +{ + identifier() "=>" + named_argument_SQL_argument() +} + +void named_argument_SQL_argument(): +{} +{ + value_expression() + | contextually_typed_value_specification() + | target_specification() +} + +void character_set_specification() #Unsupported: +{} +{ + standard_character_set_name() + | implementation_defined_character_set_name() + | user_defined_character_set_name() +} + +void standard_character_set_name(): +{} +{ + character_set_name() +} + +void implementation_defined_character_set_name(): +{} +{ + character_set_name() +} + +void user_defined_character_set_name(): +{} +{ + character_set_name() +} + +void specific_routine_designator() #Unsupported: +{} +{ + "SPECIFIC" routine_type() schema_qualified_name() + | routine_type() member_name() [ "FOR" schema_resolved_user_defined_type_name() ] +} + +void routine_type(): +{} +{ + "ROUTINE" + | "FUNCTION" + | "PROCEDURE" + | [ "INSTANCE" | "STATIC" | "CONSTRUCTOR" ] "METHOD" +} + +void member_name(): +{} +{ + member_name_alternatives() [ data_type_list() ] +} + +void member_name_alternatives(): +{} +{ + schema_qualified_name() + | identifier() +} + +void data_type_list(): +{} +{ + "(" [ data_type() ( "," data_type() )* ] ")" +} + +void collate_clause() #Unsupported: +{} +{ + "COLLATE" schema_qualified_name() +} + +void constraint_name_definition() #Unsupported: +{} +{ + "CONSTRAINT" schema_qualified_name() +} + +void constraint_characteristics(): +{} +{ + constraint_check_time() [ [ "NOT" ] "DEFERRABLE" ] [ constraint_enforcement() ] + | [ "NOT" ] "DEFERRABLE" [ constraint_check_time() ] [ constraint_enforcement() ] + | constraint_enforcement() +} + +void constraint_check_time(): +{} +{ + "INITIALLY" "DEFERRED" + | "INITIALLY" "IMMEDIATE" +} + +void constraint_enforcement(): +{} +{ + [ "NOT" ] "ENFORCED" +} + +void aggregate_function() #AggregationFunction: +{} +{ + ( + "COUNT" "(" "*" ")" + | count() + | general_set_function() + | binary_set_function() + | ordered_set_function() + | array_aggregate_function() + | presto_aggregations() + ) + + [ filter_clause() ] +} + +void general_set_function(): +{} +{ + set_function_type() "(" [ set_quantifier() ] value_expression() + [ extra_args_to_agg() ] + ")" +} + +void set_function_type(): +{} +{ + computational_operation() +} + +void computational_operation(): +{} +{ + "AVG" + | "MAX" + | "MIN" + | "SUM" + | "EVERY" + | "ANY" + | "SOME" + | "COUNT" + | "STDDEV_POP" + | "STDDEV_SAMP" + | "VAR_SAMP" + | "VAR_POP" + | "COLLECT" + | "FUSION" + | "INTERSECTION" +} + +void set_quantifier() #SetQuantifier: +{} +{ + "DISTINCT" + | "ALL" +} + +void filter_clause() #FilterClause: +{} +{ + "FILTER" "(" "WHERE" search_condition() ")" +} + +void binary_set_function(): +{} +{ + binary_set_function_type() "(" dependent_variable_expression() "," + independent_variable_expression() ")" +} + +void binary_set_function_type(): +{} +{ + "COVAR_POP" + | "COVAR_SAMP" + | "CORR" + | "REGR_SLOPE" + | "REGR_INTERCEPT" + | "REGR_COUNT" + | "REGR_R2" + | "REGR_AVGX" + | "REGR_AVGY" + | "REGR_SXX" + | "REGR_SYY" + | "REGR_SXY" +} + +void dependent_variable_expression(): +{} +{ + numeric_value_expression() +} + +void independent_variable_expression(): +{} +{ + numeric_value_expression() +} + +void ordered_set_function(): +{} +{ + hypothetical_set_function() + | inverse_distribution_function() +} + +void hypothetical_set_function(): +{} +{ + rank_function_type() "(" + hypothetical_set_function_value_expression_list() ")" + within_group_specification() +} + +void within_group_specification() #Unsupported: +{} +{ + "WITHIN" "GROUP" "(" "ORDER" "BY" sort_specification_list() ")" +} + +void hypothetical_set_function_value_expression_list(): +{} +{ + value_expression() ( "," value_expression() )* +} + +void inverse_distribution_function(): +{} +{ + inverse_distribution_function_type() "(" + inverse_distribution_function_argument() ")" + within_group_specification() +} + +void inverse_distribution_function_argument(): +{} +{ + numeric_value_expression() +} + +void inverse_distribution_function_type(): +{} +{ + "PERCENTILE_CONT" + | "PERCENTILE_DISC" +} + +void array_aggregate_function(): +{} +{ + "ARRAY_AGG" + "(" + [ distinct() ] // Non-standard + value_expression() [ "ORDER" "BY" sort_specification_list() ] + ")" +} + +void sort_specification_list() #SortSpecificationList: +{} +{ + sort_specification() ( "," sort_specification() )* +} + +void sort_specification() #SortSpecification: +{} +{ + sort_key() [ ordering_specification() ] [ null_ordering() ] +} + +void sort_key(): +{} +{ + value_expression() +} + +void ordering_specification() #OrderingDirection: +{} +{ + "ASC" + | "DESC" +} + +void null_ordering() #NullOrdering: +{} +{ + "NULLS" "FIRST" + | "NULLS" "LAST" +} + +void schema_definition() #CreateSchema: +{} +{ + "CREATE" "SCHEMA" + + [ if_not_exists() ] + + schema_name_clause() + [ schema_character_set_or_path() ] + ( schema_element() )* +} + +void schema_character_set_or_path() #Unsupported: +{} +{ + schema_character_set_specification() + | schema_path_specification() + | schema_character_set_specification() schema_path_specification() + | schema_path_specification() schema_character_set_specification() +} + +void schema_name_clause(): +{} +{ + schema_name() + | ( "AUTHORIZATION" identifier() )#Unsuppoerted + | ( schema_name() "AUTHORIZATION" identifier() )#Unsuppoerted +} + +void schema_character_set_specification(): +{} +{ + "DEFAULT" "CHARACTER" "SET" character_set_specification() +} + +void schema_path_specification(): +{} +{ + path_specification() +} + +void schema_element() #Unsupported: +{} +{ + table_definition() + | LOOKAHEAD(4) view_definition() + | domain_definition() + | character_set_definition() + | collation_definition() + | transliteration_definition() + | assertion_definition() + | trigger_definition() + | user_defined_type_definition() + | user_defined_cast_definition() + | user_defined_ordering_definition() + | transform_definition() + | schema_routine() + | sequence_generator_definition() + | grant_statement() + | role_definition() +} + +void drop_schema_statement(): +{} +{ + "DROP" "SCHEMA" schema_name() drop_behavior() +} + +void drop_behavior(): +{} +{ + "CASCADE" + | "RESTRICT" +} + +void table_definition() #TableDefinition: +{} +{ + "CREATE" [ table_scope() ] "TABLE" + + [ if_not_exists() ] + + table_name() + + [ table_description() ] + + ( // Non-standard + LOOKAHEAD ("WITH") + [ "WITH" + ( system_versioning_clause() + | table_attributes() // Non-standard + ) + ] + table_contents_source() + | + table_contents_source() + [ table_description() ] + [ "WITH" + ( system_versioning_clause() + | table_attributes() // Non-standard + ) + ] + ) + [ "ON" "COMMIT" table_commit_action() "ROWS" ] +} + +void table_contents_source(): +{} +{ + typed_table_clause() + | as_subquery_clause() + | table_element_list() +} + +void table_scope(): +{} +{ + global_or_local() "TEMPORARY" +} + +void global_or_local(): +{} +{ + "GLOBAL" + | "LOCAL" +} + +void system_versioning_clause(): +{} +{ + "SYSTEM" "VERSIONING" [ retention_period_specification() ] +} + +void retention_period_specification(): +{} +{ + "KEEP" "VERSIONS" "FOREVER" + | "KEEP" "VERSIONS" "FOR" length_of_time() time_unit() +} + +void length_of_time(): +{} +{ + <unsigned_integer> +} + +void time_unit(): +{} +{ + "SECOND" |"SECONDS" |"MINUTE" |"MINUTES" |"HOUR" |"HOURS" |"DAY" |"DAYS" |"MONTH" |"MONTHS" |"YEAR" |"YEARS" +} + +void table_commit_action(): +{} +{ + "PRESERVE" + | "DELETE" +} + +void table_element_list(): +{} +{ + "(" table_element() ( "," table_element() )* ")" +} + +void table_element(): +{} +{ + column_definition() + | table_constraint_definition() + | like_clause() +} + +void typed_table_clause(): +{} +{ + "OF" path_resolved_user_defined_type_name() [ subtable_clause() ] + [ typed_table_element_list() ] +} + +void typed_table_element_list(): +{} +{ + "(" typed_table_element() + ( "," typed_table_element() )* ")" +} + +void typed_table_element(): +{} +{ + column_options() + | table_constraint_definition() + | self_referencing_column_specification() +} + +void self_referencing_column_specification(): +{} +{ + "REF" "IS" identifier() [ reference_generation() ] +} + +void reference_generation(): +{} +{ + "SYSTEM" "GENERATED" + | "USER" "GENERATED" + | "DERIVED" +} + +void column_options(): +{} +{ + identifier() "WITH" "OPTIONS" column_option_list() +} + +void column_option_list(): +{} +{ + [ scope_clause() ] [ default_clause() ] ( column_constraint_definition() )* +} + +void subtable_clause(): +{} +{ + "UNDER" supertable_clause() +} + +void supertable_clause(): +{} +{ + supertable_name() +} + +void supertable_name(): +{} +{ + table_name() +} + +void like_clause(): +{} +{ + "LIKE" table_name() [ like_options() ] +} + +void like_options(): +{} +{ + ( like_option() )+ +} + +void like_option(): +{} +{ + identity_option() + | column_default_option() + | generation_option() + | "INCLUDING" "PROPERTIES" // Non-standard +} + +void identity_option(): +{} +{ + "INCLUDING" "IDENTITY" + | "EXCLUDING" "IDENTITY" +} + +void column_default_option(): +{} +{ + "INCLUDING" "DEFAULTS" + | "EXCLUDING" "DEFAULTS" +} + +void generation_option(): +{} +{ + "INCLUDING" "GENERATED" + | "EXCLUDING" "GENERATED" +} + +void as_subquery_clause(): +{} +{ + [ "(" column_name_list() ")" ] + + [ "WITH" table_attributes() ] // Non-standard + + "AS" + + ( + subquery() + | query_expression() // Non-standard + ) + + [ with_or_without_data() ] +} + +void with_or_without_data(): +{} +{ + "WITH" "NO" "DATA" + | "WITH" "DATA" +} + +void column_definition(): +{} +{ + identifier() + [ data_type_or_schema_qualified_name() ] + [ default_clause() | identity_column_specification() | generation_clause() + | system_version_start_column_specification() | system_version_end_column_specification() + ] + ( column_constraint_definition() )* + [ collate_clause() ] + + [ column_description() ] +} + +void data_type_or_schema_qualified_name(): +{} +{ + data_type() + | schema_qualified_name() +} + +void system_version_start_column_specification(): +{} +{ + timestamp_generation_rule() "AS" "SYSTEM" "VERSION" "START" +} + +void system_version_end_column_specification(): +{} +{ + timestamp_generation_rule() "AS" "SYSTEM" "VERSION" "END" +} + +void timestamp_generation_rule(): +{} +{ + "GENERATED" "ALWAYS" +} + +void column_constraint_definition(): +{} +{ + [ constraint_name_definition() ] column_constraint() [ constraint_characteristics() ] +} + +void column_constraint(): +{} +{ + "NOT" "NULL" + | unique_specification() + | references_specification() + | check_constraint_definition() +} + +void identity_column_specification(): +{} +{ + "GENERATED" ( "ALWAYS" | "BY" "DEFAULT" ) "AS" "IDENTITY" + [ "(" common_sequence_generator_options() ")" ] +} + +void generation_clause(): +{} +{ + generation_rule() "AS" generation_expression() +} + +void generation_rule(): +{} +{ + "GENERATED" "ALWAYS" +} + +void generation_expression(): +{} +{ + "(" value_expression() ")" +} + +void default_clause(): +{} +{ + "DEFAULT" default_option() +} + +void default_option(): +{} +{ + literal() + | datetime_value_function() + | "USER" + | "CURRENT_USER" + | "CURRENT_ROLE" + | "SESSION_USER" + | "SYSTEM_USER" + | "CURRENT_CATALOG" + | "CURRENT_SCHEMA" + | "CURRENT_PATH" + | implicitly_typed_value_specification() +} + +void table_constraint_definition(): +{} +{ + [ constraint_name_definition() ] table_constraint() + [ constraint_characteristics() ] +} + +void table_constraint(): +{} +{ + unique_constraint_definition() + | referential_constraint_definition() + | check_constraint_definition() +} + +void unique_constraint_definition(): +{} +{ + unique_specification() "(" unique_column_list() ")" + | "UNIQUE" ( "VALUE" ) +} + +void unique_specification(): +{} +{ + "UNIQUE" + | "PRIMARY" "KEY" +} + +void unique_column_list(): +{} +{ + column_name_list() +} + +void referential_constraint_definition(): +{} +{ + "FOREIGN" "KEY" "(" referencing_columns() ")" + references_specification() +} + +void references_specification(): +{} +{ + "REFERENCES" referenced_table_and_columns() + [ "MATCH" match_type() ] [ referential_triggered_action() ] +} + +void match_type(): +{} +{ + "FULL" + | "PARTIAL" + | "SIMPLE" +} + +void referencing_columns(): +{} +{ + reference_column_list() +} + +void referenced_table_and_columns(): +{} +{ + table_name() [ "(" reference_column_list() ")" ] +} + +void reference_column_list(): +{} +{ + column_name_list() +} + +void referential_triggered_action(): +{} +{ + update_rule() [ delete_rule() ] + | delete_rule() [ update_rule() ] +} + +void update_rule(): +{} +{ + "ON" "UPDATE" referential_action() +} + +void delete_rule(): +{} +{ + "ON" "DELETE" referential_action() +} + +void referential_action(): +{} +{ + "CASCADE" + | "SET" "NULL" + | "SET" "DEFAULT" + | "RESTRICT" + | "NO" "ACTION" +} + +void check_constraint_definition(): +{} +{ + "CHECK" "(" search_condition() ")" +} + +void alter_table_statement(): +{} +{ + "ALTER" "TABLE" table_name() alter_table_action() +} + +void alter_table_action(): +{} +{ + add_column_definition() + | alter_column_definition() + | drop_column_definition() + | add_table_constraint_definition() + | alter_table_constraint_definition() + | drop_table_constraint_definition() + | add_system_versioning_clause() + | alter_system_versioning_clause() + | drop_system_versioning_clause() +} + +void add_column_definition(): +{} +{ + "ADD" [ "COLUMN" ] column_definition() +} + +void alter_column_definition(): +{} +{ + "ALTER" [ "COLUMN" ] identifier() alter_column_action() +} + +void alter_column_action(): +{} +{ + set_column_default_clause() + | drop_column_default_clause() + | set_column_not_null_clause() + | drop_column_not_null_clause() + | add_column_scope_clause() + | drop_column_scope_clause() + | alter_column_data_type_clause() + | alter_identity_column_specification() + | drop_identity_property_clause() + | drop_column_generation_expression_clause() +} + +void set_column_default_clause(): +{} +{ + "SET" default_clause() +} + +void drop_column_default_clause(): +{} +{ + "DROP" "DEFAULT" +} + +void set_column_not_null_clause(): +{} +{ + "SET" "NOT" "NULL" +} + +void drop_column_not_null_clause(): +{} +{ + "DROP" "NOT" "NULL" +} + +void add_column_scope_clause(): +{} +{ + "ADD" scope_clause() +} + +void drop_column_scope_clause(): +{} +{ + "DROP" "SCOPE" drop_behavior() +} + +void alter_column_data_type_clause(): +{} +{ + "SET" "DATA" "TYPE" data_type() +} + +void alter_identity_column_specification(): +{} +{ + set_identity_column_generation_clause() ( alter_identity_column_option() )* + | ( alter_identity_column_option() )+ +} + +void set_identity_column_generation_clause(): +{} +{ + "SET" "GENERATED" ( "ALWAYS" | "BY" "DEFAULT" ) +} + +void alter_identity_column_option(): +{} +{ + alter_sequence_generator_restart_option() + | "SET" basic_sequence_generator_option() +} + +void drop_identity_property_clause(): +{} +{ + "DROP" "IDENTITY" +} + +void drop_column_generation_expression_clause(): +{} +{ + "DROP" "EXPRESSION" +} + +void drop_column_definition(): +{} +{ + "DROP" [ "COLUMN" ] identifier() drop_behavior() +} + +void add_table_constraint_definition(): +{} +{ + "ADD" table_constraint_definition() +} + +void alter_table_constraint_definition(): +{} +{ + "ALTER" "CONSTRAINT" schema_qualified_name() constraint_enforcement() +} + +void drop_table_constraint_definition(): +{} +{ + "DROP" "CONSTRAINT" schema_qualified_name() drop_behavior() +} + +void add_system_versioning_clause(): +{} +{ + "ADD" system_versioning_clause() add_system_version_column_list() +} + +void add_system_version_column_list(): +{} +{ + "ADD" [ "COLUMN" ] column_definition_1() "ADD" [ "COLUMN" ] column_definition_2() +} + +void column_definition_1(): +{} +{ + column_definition() +} + +void column_definition_2(): +{} +{ + column_definition() +} + +void alter_system_versioning_clause(): +{} +{ + "ALTER" "SYSTEM" "VERSIONING" retention_period_specification() +} + +void drop_system_versioning_clause(): +{} +{ + "DROP" "SYSTEM" "VERSIONING" drop_behavior() +} + +void drop_table_statement(): +{} +{ + "DROP" "TABLE" + [ "IF" "EXISTS" ] // Non-standard + table_name() + [ drop_behavior() ] // Non-standard +} + +void view_definition(): +{} +{ + "CREATE" + [ or_replace() ] + [ "RECURSIVE" ] "VIEW" table_name() view_specification() + "AS" query_expression() [ "WITH" [ levels_clause() ] "CHECK" "OPTION" ] +} + +void view_specification(): +{} +{ + regular_view_specification() + | referenceable_view_specification() +} + +void regular_view_specification(): +{} +{ + [ "(" view_column_list() ")" ] +} + +void referenceable_view_specification(): +{} +{ + "OF" path_resolved_user_defined_type_name() [ subview_clause() ] + [ view_element_list() ] +} + +void subview_clause(): +{} +{ + "UNDER" table_name() +} + +void view_element_list(): +{} +{ + "(" view_element() ( "," view_element() )* ")" +} + +void view_element(): +{} +{ + self_referencing_column_specification() + | view_column_option() +} + +void view_column_option(): +{} +{ + identifier() "WITH" "OPTIONS" scope_clause() +} + +void levels_clause() #Unsupported: +{} +{ + "CASCADED" + | "LOCAL" +} + +void view_column_list(): +{} +{ + column_name_list() +} + +void drop_view_statement(): +{} +{ + "DROP" "VIEW" table_name() drop_behavior() +} + +void domain_definition(): +{} +{ + "CREATE" "DOMAIN" schema_qualified_name() [ "AS" ] predefined_type() + [ default_clause() ] + ( domain_constraint() )* + [ collate_clause() ] +} + +void domain_constraint(): +{} +{ + [ constraint_name_definition() ] check_constraint_definition() [ + constraint_characteristics() ] +} + +void alter_domain_statement(): +{} +{ + "ALTER" "DOMAIN" schema_qualified_name() alter_domain_action() +} + +void alter_domain_action(): +{} +{ + set_domain_default_clause() + | drop_domain_default_clause() + | add_domain_constraint_definition() + | drop_domain_constraint_definition() +} + +void set_domain_default_clause(): +{} +{ + "SET" default_clause() +} + +void drop_domain_default_clause(): +{} +{ + "DROP" "DEFAULT" +} + +void add_domain_constraint_definition(): +{} +{ + "ADD" domain_constraint() +} + +void drop_domain_constraint_definition(): +{} +{ + "DROP" "CONSTRAINT" schema_qualified_name() +} + +void drop_domain_statement(): +{} +{ + "DROP" "DOMAIN" schema_qualified_name() drop_behavior() +} + +void character_set_definition(): +{} +{ + "CREATE" "CHARACTER" "SET" character_set_name() [ "AS" ] + character_set_source() [ collate_clause() ] +} + +void character_set_source(): +{} +{ + "GET" character_set_specification() +} + +void drop_character_set_statement(): +{} +{ + "DROP" "CHARACTER" "SET" character_set_name() +} + +void collation_definition(): +{} +{ + "CREATE" "COLLATION" schema_qualified_name() "FOR" character_set_specification() + "FROM" schema_qualified_name() [ pad_characteristic() ] +} + +void pad_characteristic(): +{} +{ + "NO" "PAD" + | "PAD" "SPACE" +} + +void drop_collation_statement(): +{} +{ + "DROP" "COLLATION" schema_qualified_name() drop_behavior() +} + +void transliteration_definition(): +{} +{ + "CREATE" "TRANSLATION" schema_qualified_name() "FOR" source_character_set_specification() + "TO" target_character_set_specification() "FROM" transliteration_source() +} + +void source_character_set_specification(): +{} +{ + character_set_specification() +} + +void target_character_set_specification(): +{} +{ + character_set_specification() +} + +void transliteration_source(): +{} +{ + schema_qualified_name() + | transliteration_routine() +} + + +void transliteration_routine(): +{} +{ + specific_routine_designator() +} + +void drop_transliteration_statement(): +{} +{ + "DROP" "TRANSLATION" schema_qualified_name() +} + +void assertion_definition(): +{} +{ + "CREATE" "ASSERTION" schema_qualified_name() + "CHECK" "(" search_condition() ")" + [ constraint_characteristics() ] +} + +void drop_assertion_statement(): +{} +{ + "DROP" "ASSERTION" schema_qualified_name() [ drop_behavior() ] +} + +void trigger_definition(): +{} +{ + "CREATE" "TRIGGER" schema_qualified_name() trigger_action_time() trigger_event() + "ON" table_name() [ "REFERENCING" transition_table_or_variable_list() ] + triggered_action() +} + +void trigger_action_time(): +{} +{ + "BEFORE" + | "AFTER" + | "INSTEAD" "OF" +} + +void trigger_event(): +{} +{ + "INSERT" + | "DELETE" + | "UPDATE" [ "OF" trigger_column_list() ] +} + +void trigger_column_list(): +{} +{ + column_name_list() +} + +void triggered_action(): +{} +{ + [ "FOR" "EACH" ( "ROW" | "STATEMENT" ) ] + [ triggered_when_clause() ] + triggered_SQL_statement() +} + +void triggered_when_clause(): +{} +{ + "WHEN" "(" search_condition() ")" +} + +void triggered_SQL_statement(): +{} +{ + SQL_procedure_statement() + | "BEGIN" "ATOMIC" ( SQL_procedure_statement() ";" )+ "END" +} + +void transition_table_or_variable_list(): +{} +{ + ( transition_table_or_variable() )+ +} + +void transition_table_or_variable(): +{} +{ + "OLD" [ "ROW" ] [ "AS" ] identifier() + | "NEW" [ "ROW" ] [ "AS" ] identifier() + | "OLD" "TABLE" [ "AS" ] identifier() + | "NEW" "TABLE" [ "AS" ] identifier() +} + +void drop_trigger_statement(): +{} +{ + "DROP" "TRIGGER" schema_qualified_name() +} + +void user_defined_type_definition(): +{} +{ + "CREATE" "TYPE" user_defined_type_body() +} + +void user_defined_type_body(): +{} +{ + schema_resolved_user_defined_type_name() + [ subtype_clause() ] + [ "AS" representation() ] + [ user_defined_type_option_list() ] + [ method_specification_list() ] +} + +void user_defined_type_option_list(): +{} +{ + user_defined_type_option() ( user_defined_type_option() )* +} + +void user_defined_type_option(): +{} +{ + instantiable_clause() + | finality() + | reference_type_specification() + | cast_to_ref() + | cast_to_type() + | cast_to_distinct() + | cast_to_source() +} + +void subtype_clause(): +{} +{ + "UNDER" supertype_name() +} + +void supertype_name(): +{} +{ + path_resolved_user_defined_type_name() +} + +void representation(): +{} +{ + predefined_type() + | data_type() // TODO(kaikalur): fixit --collection_type() + | member_list() +} + +void member_list(): +{} +{ + "(" member() ( "," member() )* ")" +} + +void member(): +{} +{ + attribute_definition() +} + +void instantiable_clause(): +{} +{ + "INSTANTIABLE" + | "NOT" "INSTANTIABLE" +} + +void finality(): +{} +{ + "FINAL" + | "NOT" "FINAL" +} + +void reference_type_specification(): +{} +{ + user_defined_representation() + | derived_representation() + | system_generated_representation() +} + +void user_defined_representation(): +{} +{ + "REF" "USING" predefined_type() +} + +void derived_representation(): +{} +{ + "REF" "FROM" list_of_attributes() +} + +void system_generated_representation(): +{} +{ + "REF" "IS" "SYSTEM" "GENERATED" +} + +void cast_to_ref(): +{} +{ + "CAST" "(" "SOURCE" "AS" "REF" ")" "WITH" identifier() +} + +void cast_to_type(): +{} +{ + "CAST" "(" "REF" "AS" "SOURCE" ")" "WITH" identifier() +} + +void list_of_attributes(): +{} +{ + "(" identifier() ( "," identifier() )* ")" +} + +void cast_to_distinct(): +{} +{ + "CAST" "(" "SOURCE" "AS" "DISTINCT" ")" + "WITH" identifier() +} + +void cast_to_source(): +{} +{ + "CAST" "(" "DISTINCT" "AS" "SOURCE" ")" + "WITH" identifier() +} + +void method_specification_list(): +{} +{ + method_specification() ( "," method_specification() )* +} + +void method_specification(): +{} +{ + original_method_specification() + | overriding_method_specification() +} + +void original_method_specification(): +{} +{ + partial_method_specification() [ "SELF" "AS" "RESULT" ] [ "SELF" "AS" "LOCATOR" ] + [ method_characteristics() ] +} + +void overriding_method_specification(): +{} +{ + "OVERRIDING" partial_method_specification() +} + +void partial_method_specification(): +{} +{ + [ "INSTANCE" | "STATIC" | "CONSTRUCTOR" ] + "METHOD" identifier() SQL_parameter_declaration_list() + returns_clause() + [ "SPECIFIC" specific_identifier() ] +} + +void specific_identifier(): +{} +{ + [ schema_name() "." ]identifier() +} + +void method_characteristics(): +{} +{ + ( method_characteristic() )+ +} + +void method_characteristic(): +{} +{ + language_clause() + | parameter_style_clause() + | deterministic_characteristic() + | SQL_data_access_indication() + | null_call_clause() +} + +void attribute_definition(): +{} +{ + identifier() data_type() + [ attribute_default() ] + [ collate_clause() ] +} + +void attribute_default(): +{} +{ + default_clause() +} + +void alter_type_statement(): +{} +{ + "ALTER" "TYPE" schema_resolved_user_defined_type_name() alter_type_action() +} + +void alter_type_action(): +{} +{ + add_attribute_definition() + | drop_attribute_definition() + | add_original_method_specification() + | add_overriding_method_specification() + | drop_method_specification() +} + +void add_attribute_definition(): +{} +{ + "ADD" "ATTRIBUTE" attribute_definition() +} + +void drop_attribute_definition(): +{} +{ + "DROP" "ATTRIBUTE" identifier() "RESTRICT" +} + +void add_original_method_specification(): +{} +{ + "ADD" original_method_specification() +} + +void add_overriding_method_specification(): +{} +{ + "ADD" overriding_method_specification() +} + +void drop_method_specification(): +{} +{ + "DROP" specific_method_specification_designator() "RESTRICT" +} + +void specific_method_specification_designator(): +{} +{ + [ "INSTANCE" | "STATIC" | "CONSTRUCTOR" ] + "METHOD" identifier() data_type_list() +} + +void drop_data_type_statement(): +{} +{ + "DROP" "TYPE" schema_resolved_user_defined_type_name() drop_behavior() +} + +void SQL_invoked_routine(): +{} +{ + schema_routine() +} + +void schema_routine(): +{} +{ + schema_procedure() + | schema_function() +} + +void schema_procedure(): +{} +{ + "CREATE" SQL_invoked_procedure() +} + +void schema_function(): +{} +{ + "CREATE" + [ or_replace() ] + SQL_invoked_function() +} + +void SQL_invoked_procedure(): +{} +{ + "PROCEDURE" schema_qualified_name() SQL_parameter_declaration_list() + routine_characteristics() + routine_body() +} + +void SQL_invoked_function(): +{} +{ + ( function_specification() | method_specification_designator() ) routine_body() +} + +void SQL_parameter_declaration_list(): +{} +{ + "(" [ SQL_parameter_declaration() + ( "," SQL_parameter_declaration() )* ] ")" +} + +void SQL_parameter_declaration(): +{} +{ + [ parameter_mode() ] + [ identifier() ] + parameter_type() [ "RESULT" ] + [ "DEFAULT" parameter_default() ] +} + +void parameter_default(): +{} +{ + value_expression() + | contextually_typed_value_specification() +} + +void parameter_mode(): +{} +{ + "IN" + | "OUT" + | "INOUT" +} + +void parameter_type(): +{} +{ + data_type() [ locator_indication() ] +} + +void locator_indication(): +{} +{ + "AS" "LOCATOR" +} + +void function_specification(): +{} +{ + "FUNCTION" schema_qualified_name() SQL_parameter_declaration_list() + returns_clause() + [ routine_description() ] + routine_characteristics() + [ dispatch_clause() ] +} + +void method_specification_designator(): +{} +{ + "SPECIFIC" "METHOD" specific_identifier() + | [ "INSTANCE" | "STATIC" | "CONSTRUCTOR" ] + "METHOD" identifier() SQL_parameter_declaration_list() + [ returns_clause() ] + "FOR" schema_resolved_user_defined_type_name() +} + +void routine_characteristics(): +{} +{ + ( routine_characteristic() )* +} + +void routine_characteristic(): +{} +{ + language_clause() + | parameter_style_clause() + | "SPECIFIC" schema_qualified_name() + | deterministic_characteristic() + | SQL_data_access_indication() + | null_call_clause() + | returned_result_sets_characteristic() + | savepoint_level_indication() +} + +void savepoint_level_indication(): +{} +{ + "NEW" "SAVEPOINT" "LEVEL" + | "OLD" "SAVEPOINT" "LEVEL" +} + +void returned_result_sets_characteristic(): +{} +{ + "DYNAMIC" "RESULT" "SETS" maximum_returned_result_sets() +} + +void parameter_style_clause(): +{} +{ + "PARAMETER" "STYLE" parameter_style() +} + +void dispatch_clause(): +{} +{ + "STATIC" "DISPATCH" +} + +void returns_clause(): +{} +{ + "RETURNS" returns_type() +} + +void returns_type(): +{} +{ + returns_data_type() [ result_cast() ] + | returns_table_type() +} + +void returns_table_type(): +{} +{ + "TABLE" table_function_column_list() +} + +void table_function_column_list(): +{} +{ + "(" table_function_column_list_element() + ( "," table_function_column_list_element() )* ")" +} + +void table_function_column_list_element(): +{} +{ + identifier() data_type() +} + +void result_cast(): +{} +{ + "CAST" "FROM" result_cast_from_type() +} + +void result_cast_from_type(): +{} +{ + data_type() [ locator_indication() ] +} + +void returns_data_type(): +{} +{ + data_type() [ locator_indication() ] +} + +void routine_body(): +{} +{ + SQL_routine_spec() + | external_body_reference() +} + +void SQL_routine_spec(): +{} +{ + [ rights_clause() ] SQL_routine_body() +} + +void rights_clause(): +{} +{ + "SQL" "SECURITY" "INVOKER" + | "SQL" "SECURITY" "DEFINER" +} + +void SQL_routine_body(): +{} +{ + SQL_procedure_statement() +} + +void external_body_reference(): +{} +{ + "EXTERNAL" [ "NAME" external_routine_name() ] + [ parameter_style_clause() ] + [ transform_group_specification() ] + [ external_security_clause() ] +} + +void external_security_clause(): +{} +{ + "EXTERNAL" "SECURITY" "DEFINER" + | "EXTERNAL" "SECURITY" "INVOKER" + | "EXTERNAL" "SECURITY" "IMPLEMENTATION" "DEFINED" +} + +void parameter_style(): +{} +{ + "SQL" + | "GENERAL" +} + +void deterministic_characteristic(): +{} +{ + "DETERMINISTIC" + | "NOT" "DETERMINISTIC" +} + +void SQL_data_access_indication(): +{} +{ + "NO" "SQL" + | "CONTAINS" "SQL" + | "READS" "SQL" "DATA" + | "MODIFIES" "SQL" "DATA" +} + +void null_call_clause(): +{} +{ + "RETURNS" "NULL" "ON" "NULL" "INPUT" + | "CALLED" "ON" "NULL" "INPUT" +} + +void maximum_returned_result_sets(): +{} +{ + <unsigned_integer> +} + +void transform_group_specification(): +{} +{ + "TRANSFORM" "GROUP" ( single_group_specification() | multiple_group_specification() ) +} + +void single_group_specification(): +{} +{ + identifier() +} + +void multiple_group_specification(): +{} +{ + group_specification() ( "," group_specification() )* +} + +void group_specification(): +{} +{ + identifier() "FOR" "TYPE" path_resolved_user_defined_type_name() +} + +void alter_routine_statement(): +{} +{ + "ALTER" specific_routine_designator() + alter_routine_characteristics() alter_routine_behavior() +} + +void alter_routine_characteristics(): +{} +{ + ( alter_routine_characteristic() )+ +} + +void alter_routine_characteristic(): +{} +{ + language_clause() + | parameter_style_clause() + | SQL_data_access_indication() + | null_call_clause() + | returned_result_sets_characteristic() + | "NAME" external_routine_name() +} + +void alter_routine_behavior(): +{} +{ + "RESTRICT" +} + +void drop_routine_statement(): +{} +{ + "DROP" specific_routine_designator() drop_behavior() +} + +void user_defined_cast_definition(): +{} +{ + "CREATE" "CAST" "(" source_data_type() "AS" target_data_type() ")" + "WITH" cast_function() + [ "AS" "ASSIGNMENT" ] +} + +void cast_function(): +{} +{ + specific_routine_designator() +} + +void source_data_type(): +{} +{ + data_type() +} + +void target_data_type(): +{} +{ + data_type() +} + +void drop_user_defined_cast_statement(): +{} +{ + "DROP" "CAST" "(" source_data_type() "AS" target_data_type() ")" + drop_behavior() +} + +void user_defined_ordering_definition(): +{} +{ + "CREATE" "ORDERING" "FOR" schema_resolved_user_defined_type_name() ordering_form() +} + +void ordering_form(): +{} +{ + equals_ordering_form() + | full_ordering_form() +} + +void equals_ordering_form(): +{} +{ + "EQUALS" "ONLY" "BY" ordering_category() +} + +void full_ordering_form(): +{} +{ + "ORDER" "FULL" "BY" ordering_category() +} + +void ordering_category(): +{} +{ + relative_category() + | map_category() + | state_category() +} + +void relative_category(): +{} +{ + "RELATIVE" "WITH" relative_function_specification() +} + +void map_category(): +{} +{ + "MAP" "WITH" map_function_specification() +} + +void state_category(): +{} +{ + "STATE" [ schema_qualified_name() ] +} + +void relative_function_specification(): +{} +{ + specific_routine_designator() +} + +void map_function_specification(): +{} +{ + specific_routine_designator() +} + +void drop_user_defined_ordering_statement(): +{} +{ + "DROP" "ORDERING" "FOR" schema_resolved_user_defined_type_name() drop_behavior() +} + +void transform_definition(): +{} +{ + "CREATE" ( "TRANSFORM" | "TRANSFORMS" ) "FOR" + schema_resolved_user_defined_type_name() ( transform_group() )+ +} + +void transform_group(): +{} +{ + identifier() "(" transform_element_list() ")" +} + +void transform_element_list(): +{} +{ + transform_element() [ "," transform_element() ] +} + +void transform_element(): +{} +{ + to_sql() + | from_sql() +} + +void to_sql(): +{} +{ + "TO" "SQL" "WITH" to_sql_function() +} + +void from_sql(): +{} +{ + "FROM" "SQL" "WITH" from_sql_function() +} + +void to_sql_function(): +{} +{ + specific_routine_designator() +} + +void from_sql_function(): +{} +{ + specific_routine_designator() +} + +void alter_transform_statement(): +{} +{ + "ALTER" ( "TRANSFORM" | "TRANSFORMS" ) + "FOR" schema_resolved_user_defined_type_name() ( alter_group() )+ +} + +void alter_group(): +{} +{ + identifier() "(" alter_transform_action_list() ")" +} + +void alter_transform_action_list(): +{} +{ + alter_transform_action() ( "," alter_transform_action() )* +} + +void alter_transform_action(): +{} +{ + add_transform_element_list() + | drop_transform_element_list() +} + +void add_transform_element_list(): +{} +{ + "ADD" "(" transform_element_list() ")" +} + +void drop_transform_element_list(): +{} +{ + "DROP" "(" transform_kind() + [ "," transform_kind() ] drop_behavior() ")" +} + +void transform_kind(): +{} +{ + "TO" "SQL" + | "FROM" "SQL" +} + +void drop_transform_statement(): +{} +{ + "DROP" ( "TRANSFORM" | "TRANSFORMS" ) transforms_to_be_dropped() + "FOR" schema_resolved_user_defined_type_name() drop_behavior() +} + +void transforms_to_be_dropped(): +{} +{ + "ALL" + | transform_group_element() +} + +void transform_group_element(): +{} +{ + identifier() +} + +void sequence_generator_definition(): +{} +{ + "CREATE" "SEQUENCE" schema_qualified_name() [ sequence_generator_options() ] +} + +void sequence_generator_options(): +{} +{ + ( sequence_generator_option() )+ +} + +void sequence_generator_option(): +{} +{ + sequence_generator_data_type_option() + | common_sequence_generator_options() +} + +void common_sequence_generator_options(): +{} +{ + ( common_sequence_generator_option() )+ +} + +void common_sequence_generator_option(): +{} +{ + sequence_generator_start_with_option() + | basic_sequence_generator_option() +} + +void basic_sequence_generator_option(): +{} +{ + sequence_generator_increment_by_option() + | sequence_generator_maxvalue_option() + | sequence_generator_minvalue_option() + | sequence_generator_cycle_option() +} + +void sequence_generator_data_type_option(): +{} +{ + "AS" data_type() +} + +void sequence_generator_start_with_option(): +{} +{ + "START" "WITH" sequence_generator_start_value() +} + +void sequence_generator_start_value(): +{} +{ + signed_numeric_literal() +} + +void sequence_generator_increment_by_option(): +{} +{ + "INCREMENT" "BY" sequence_generator_increment() +} + +void sequence_generator_increment(): +{} +{ + signed_numeric_literal() +} + +void sequence_generator_maxvalue_option(): +{} +{ + "MAXVALUE" sequence_generator_max_value() + | "NO" "MAXVALUE" +} + +void sequence_generator_max_value(): +{} +{ + signed_numeric_literal() +} + +void sequence_generator_minvalue_option(): +{} +{ + "MINVALUE" sequence_generator_min_value() + | "NO" "MINVALUE" +} + +void sequence_generator_min_value(): +{} +{ + signed_numeric_literal() +} + +void sequence_generator_cycle_option(): +{} +{ + "CYCLE" + | "NO" "CYCLE" +} + +void alter_sequence_generator_statement(): +{} +{ + "ALTER" "SEQUENCE" schema_qualified_name() alter_sequence_generator_options() +} + +void alter_sequence_generator_options(): +{} +{ + ( alter_sequence_generator_option() )+ +} + +void alter_sequence_generator_option(): +{} +{ + alter_sequence_generator_restart_option() + | basic_sequence_generator_option() +} + +void alter_sequence_generator_restart_option(): +{} +{ + "RESTART" [ "WITH" sequence_generator_restart_value() ] +} + +void sequence_generator_restart_value(): +{} +{ + signed_numeric_literal() +} + +void drop_sequence_generator_statement(): +{} +{ + "DROP" "SEQUENCE" schema_qualified_name() drop_behavior() +} + +void grant_statement(): +{} +{ + grant_privilege_statement() + | grant_role_statement() +} + +void grant_privilege_statement(): +{} +{ + "GRANT" privileges() "TO" grantee() ( "," grantee() )* + [ "WITH" "HIERARCHY" "OPTION" ] + [ "WITH" "GRANT" "OPTION" ] + [ "GRANTED" "BY" grantor() ] +} + +void privileges(): +{} +{ + object_privileges() "ON" object_name() +} + +void object_name(): +{} +{ + [ "TABLE" ] table_name() + | "DOMAIN" schema_qualified_name() + | "COLLATION" schema_qualified_name() + | "CHARACTER" "SET" character_set_name() + | "TRANSLATION" schema_qualified_name() + | "TYPE" schema_resolved_user_defined_type_name() + | "SEQUENCE" schema_qualified_name() + | specific_routine_designator() +} + +void object_privileges(): +{} +{ + "ALL" "PRIVILEGES" + | action() ( "," action() )* +} + +void action(): +{} +{ + "SELECT" + | "SELECT" "(" privilege_column_list() ")" + | "SELECT" "(" privilege_method_list() ")" + | "DELETE" + | "INSERT" [ "(" privilege_column_list() ")" ] + | "UPDATE" [ "(" privilege_column_list() ")" ] + | "REFERENCES" [ "(" privilege_column_list() ")" ] + | "USAGE" + | "TRIGGER" + | "UNDER" + | "EXECUTE" +} + +void privilege_method_list(): +{} +{ + specific_routine_designator() ( "," specific_routine_designator() )* +} + +void privilege_column_list(): +{} +{ + column_name_list() +} + +void grantee(): +{} +{ + "PUBLIC" + | identifier() +} + +void grantor(): +{} +{ + "CURRENT_USER" + | "CURRENT_ROLE" +} + +void role_definition(): +{} +{ + "CREATE" "ROLE" identifier() [ "WITH" "ADMIN" grantor() ] +} + +void grant_role_statement(): +{} +{ + "GRANT" identifier() ( "," identifier() )* + "TO" grantee() ( "," grantee() )* + [ "WITH" "ADMIN" "OPTION" ] + [ "GRANTED" "BY" grantor() ] +} + +void drop_role_statement(): +{} +{ + "DROP" "ROLE" identifier() +} + +void revoke_statement(): +{} +{ + revoke_privilege_statement() + | revoke_role_statement() +} + +void revoke_privilege_statement(): +{} +{ + "REVOKE" [ revoke_option_extension() ] privileges() + "FROM" grantee() ( "," grantee() )* + [ "GRANTED" "BY" grantor() ] + drop_behavior() +} + +void revoke_option_extension(): +{} +{ + "GRANT" "OPTION" "FOR" + | "HIERARCHY" "OPTION" "FOR" +} + +void revoke_role_statement(): +{} +{ + "REVOKE" [ "ADMIN" "OPTION" "FOR" ] identifier() ( "," identifier() )* + "FROM" grantee() ( "," grantee() )* + [ "GRANTED" "BY" grantor() ] + drop_behavior() +} + +void SQL_client_module_definition(): +{} +{ + module_name_clause() language_clause() module_authorization_clause() + [ module_path_specification() ] + [ module_transform_group_specification() ] + [ module_collations() ] + ( temporary_table_declaration() )* + ( module_contents() )+ +} + +void module_authorization_clause(): +{} +{ + "SCHEMA" schema_name() + | "AUTHORIZATION" identifier() + [ "FOR" "STATIC" ( "ONLY" | "AND" "DYNAMIC" ) ] + | "SCHEMA" schema_name() "AUTHORIZATION" identifier() + [ "FOR" "STATIC" ( "ONLY" | "AND" "DYNAMIC" ) ] +} + +void module_path_specification(): +{} +{ + path_specification() +} + +void module_transform_group_specification(): +{} +{ + transform_group_specification() +} + +void module_collations(): +{} +{ + ( module_collation_specification() )+ +} + +void module_collation_specification(): +{} +{ + "COLLATION" schema_qualified_name() [ "FOR" character_set_specification_list() ] +} + +void character_set_specification_list(): +{} +{ + character_set_specification() ( "," character_set_specification() )* +} + +void module_contents(): +{} +{ + declare_cursor() + | dynamic_declare_cursor() + | externally_invoked_procedure() +} + +void module_name_clause(): +{} +{ + "MODULE" [ identifier() ] [ module_character_set_specification() ] +} + +void module_character_set_specification(): +{} +{ + "NAMES" "ARE" character_set_specification() +} + +void externally_invoked_procedure(): +{} +{ + "PROCEDURE" identifier() host_parameter_declaration_list() ";" + SQL_procedure_statement() ";" +} + +void host_parameter_declaration_list(): +{} +{ + "(" host_parameter_declaration() + ( "," host_parameter_declaration() )* ")" +} + +void host_parameter_declaration(): +{} +{ + host_parameter_name() host_parameter_data_type() + | status_parameter() +} + +void host_parameter_data_type(): +{} +{ + data_type() [ locator_indication() ] +} + +void status_parameter(): +{} +{ + "SQLSTATE" +} + +void SQL_procedure_statement(): +{} +{ + SQL_executable_statement() +} + +void SQL_executable_statement(): +{} +{ + SQL_schema_statement() + | SQL_data_statement() + | SQL_control_statement() + | SQL_transaction_statement() + | SQL_connection_statement() + | SQL_session_statement() + | SQL_diagnostics_statement() + | SQL_dynamic_statement() +} + +void SQL_schema_statement(): +{} +{ + SQL_schema_definition_statement() + | SQL_schema_manipulation_statement() +} + +void SQL_schema_definition_statement(): +{} +{ + schema_definition() + | table_definition() + | LOOKAHEAD(4) view_definition() + | SQL_invoked_routine() + | grant_statement() + | role_definition() + | domain_definition() + | character_set_definition() + | collation_definition() + | transliteration_definition() + | assertion_definition() + | trigger_definition() + | user_defined_type_definition() + | user_defined_cast_definition() + | user_defined_ordering_definition() + | transform_definition() + | sequence_generator_definition() +} + +void SQL_schema_manipulation_statement(): +{} +{ + drop_schema_statement() + | alter_table_statement() + | drop_table_statement() + | drop_view_statement() + | alter_routine_statement() + | drop_routine_statement() + | drop_user_defined_cast_statement() + | revoke_statement() + | drop_role_statement() + | alter_domain_statement() + | drop_domain_statement() + | drop_character_set_statement() + | drop_collation_statement() + | drop_transliteration_statement() + | drop_assertion_statement() + | drop_trigger_statement() + | alter_type_statement() + | drop_data_type_statement() + | drop_user_defined_ordering_statement() + | alter_transform_statement() + | drop_transform_statement() + | alter_sequence_generator_statement() + | drop_sequence_generator_statement() +} + +void SQL_data_statement(): +{} +{ + open_statement() + | fetch_statement() + | close_statement() + | select_statement_single_row() + | SQL_data_change_statement() + + //TODO(kaikalur):fix the next two + //| free_locator_statement() + //| hold_locator_statement() +} + +void SQL_data_change_statement(): +{} +{ + delete_statement_positioned() + | delete_statement_searched() + | insert_statement() + | update_statement_positioned() + | update_statement_searched() + | truncate_table_statement() + | merge_statement() +} + +void SQL_control_statement(): +{} +{ + call_statement() + | return_statement() +} + +void SQL_transaction_statement(): +{} +{ + start_transaction_statement() + | set_transaction_statement() + | set_constraints_mode_statement() + | savepoint_statement() + | release_savepoint_statement() + | commit_statement() + | rollback_statement() +} + +void SQL_connection_statement(): +{} +{ + connect_statement() + | set_connection_statement() + | disconnect_statement() +} + +void SQL_session_statement(): +{} +{ + set_session_user_identifier_statement() + | set_role_statement() + | set_local_time_zone_statement() + | set_session_characteristics_statement() + | set_catalog_statement() + | set_schema_statement() + | set_names_statement() + | set_path_statement() + | set_transform_group_statement() + | set_session_collation_statement() +} + +void SQL_diagnostics_statement(): +{} +{ + get_diagnostics_statement() +} + +void SQL_dynamic_statement(): +{} +{ + SQL_descriptor_statement() + | prepare_statement() + | deallocate_prepared_statement() + | describe_statement() + | execute_statement() + | execute_immediate_statement() + | SQL_dynamic_data_statement() +} + +void SQL_dynamic_data_statement(): +{} +{ + allocate_cursor_statement() + | dynamic_open_statement() + | dynamic_fetch_statement() + | dynamic_close_statement() + | dynamic_delete_statement_positioned() + | dynamic_update_statement_positioned() +} + +void SQL_descriptor_statement(): +{} +{ + allocate_descriptor_statement() + | deallocate_descriptor_statement() + | set_descriptor_statement() + | get_descriptor_statement() +} + +void declare_cursor(): +{} +{ + "DECLARE" cursor_name() cursor_properties() + "FOR" cursor_specification() +} + +void cursor_properties(): +{} +{ + [ cursor_sensitivity() ] [ cursor_scrollability() ] "CURSOR" + [ cursor_holdability() ] + [ cursor_returnability() ] +} + +void cursor_sensitivity(): +{} +{ + "SENSITIVE" + | "INSENSITIVE" + | "ASENSITIVE" +} + +void cursor_scrollability(): +{} +{ + "SCROLL" + | "NO" "SCROLL" +} + +void cursor_holdability(): +{} +{ + "WITH" "HOLD" + | "WITHOUT" "HOLD" +} + +void cursor_returnability(): +{} +{ + "WITH" "RETURN" + | "WITHOUT" "RETURN" +} + +void cursor_specification(): +{} +{ + query_expression() [ updatability_clause() #Unsupported ] +} + +void updatability_clause(): +{} +{ + "FOR" ( "READ" "ONLY" | "UPDATE" [ "OF" column_name_list() ] ) +} + +void open_statement(): +{} +{ + "OPEN" cursor_name() +} + +void fetch_statement(): +{} +{ + "FETCH" [ [ fetch_orientation() ] "FROM" ] cursor_name() "INTO" fetch_target_list() +} + +void fetch_orientation(): +{} +{ + "NEXT" | "PRIOR" | "FIRST" | "LAST" | ( "ABSOLUTE" | "RELATIVE" ) simple_value_specification() +} + +void fetch_target_list(): +{} +{ + target_specification() ( "," target_specification() )* +} + +void close_statement(): +{} +{ + "CLOSE" cursor_name() +} + +void select_statement_single_row(): +{} +{ + "SELECT" [ set_quantifier() ] select_list() + [ "INTO" select_target_list() ] //TODO(kaikalur): check optional + [ table_expression() ] //TODO(kaikalur): check optional +} + +void select_target_list(): +{} +{ + target_specification() ( "," target_specification() )* +} + +void delete_statement_positioned(): +{} +{ + "DELETE" "FROM" target_table() [ [ "AS" ] identifier() ] + "WHERE" "CURRENT" "OF" cursor_name() +} + +void target_table(): +{} +{ + table_name() + | "ONLY" "(" table_name() ")" +} + +void delete_statement_searched(): +{} +{ + "DELETE" "FROM" target_table() [ [ "AS" ] identifier() ] + [ "WHERE" search_condition() ] +} + +void truncate_table_statement(): +{} +{ + "TRUNCATE" "TABLE" target_table() [ identity_column_restart_option() ] +} + +void identity_column_restart_option(): +{} +{ + "CONTINUE" "IDENTITY" + | "RESTART" "IDENTITY" +} + +void insert_statement() #Insert: +{} +{ + "INSERT" "INTO" insertion_target() insert_columns_and_source() +} + +void insertion_target(): +{} +{ + table_name() +} + +void insert_columns_and_source(): +{} +{ + from_subquery() + | from_constructor() + | from_default() +} + +void from_subquery(): +{} +{ + [ "(" insert_column_list() ")" ] + [ override_clause() ] + query_expression() +} + +void from_constructor(): +{} +{ + [ "(" insert_column_list() ")" ] + [ override_clause() ] + contextually_typed_table_value_constructor() +} + +void override_clause(): +{} +{ + "OVERRIDING" "USER" "VALUE" + | "OVERRIDING" "SYSTEM" "VALUE" +} + +void from_default(): +{} +{ + "DEFAULT" "VALUES" +} + +void insert_column_list(): +{} +{ + column_name_list() +} + +void merge_statement(): +{} +{ + "MERGE" "INTO" target_table() [ [ "AS" ] identifier() ] + "USING" table_reference() + "ON" search_condition() merge_operation_specification() +} + +void merge_operation_specification(): +{} +{ + ( merge_when_clause() )+ +} + +void merge_when_clause(): +{} +{ + merge_when_matched_clause() + | merge_when_not_matched_clause() +} + +void merge_when_matched_clause(): +{} +{ + "WHEN" "MATCHED" [ "AND" search_condition() ] + "THEN" merge_update_or_delete_specification() +} + +void merge_update_or_delete_specification(): +{} +{ + merge_update_specification() + | merge_delete_specification() +} + +void merge_when_not_matched_clause(): +{} +{ + "WHEN" "NOT" "MATCHED" [ "AND" search_condition() ] + "THEN" merge_insert_specification() +} + +void merge_update_specification(): +{} +{ + "UPDATE" "SET" set_clause_list() +} + +void merge_delete_specification(): +{} +{ + "DELETE" +} + +void merge_insert_specification(): +{} +{ + "INSERT" [ "(" insert_column_list() ")" ] + [ override_clause() ] + "VALUES" merge_insert_value_list() +} + +void merge_insert_value_list(): +{} +{ + "(" + merge_insert_value_element() ( "," merge_insert_value_element() )* + ")" +} + +void merge_insert_value_element(): +{} +{ + value_expression() + | contextually_typed_value_specification() +} + +void update_statement_positioned(): +{} +{ + "UPDATE" target_table() [ [ "AS" ] identifier() ] + "SET" set_clause_list() + "WHERE" "CURRENT" "OF" cursor_name() +} + +void update_statement_searched(): +{} +{ + "UPDATE" target_table() [ [ "AS" ] identifier() ] + "SET" set_clause_list() + [ "WHERE" search_condition() ] +} + +void set_clause_list(): +{} +{ + set_clause() ( "," set_clause() )* +} + +void set_clause(): +{} +{ + multiple_column_assignment() + | set_target() "=" update_source() +} + +void set_target(): +{} +{ + update_target() + | mutated_set_clause() +} + +void multiple_column_assignment(): +{} +{ + set_target_list() "=" assigned_row() +} + +void set_target_list(): +{} +{ + "(" set_target() ( "," set_target() )* ")" +} + +void assigned_row(): +{} +{ + contextually_typed_row_value_expression() +} + +void update_target(): +{} +{ + identifier() | identifier() left_bracket_or_trigraph() simple_value_specification() right_bracket_or_trigraph() +} + +void mutated_set_clause(): +{} +{ + // TODO(kaikalur): fixit mutated_target() "." identifier() + identifier() ( "." identifier() )+ +} + +void mutated_target(): +{} +{ + identifier() + | mutated_set_clause() +} + +void update_source(): +{} +{ + value_expression() + | contextually_typed_value_specification() +} + +void temporary_table_declaration(): +{} +{ + "DECLARE" "LOCAL" "TEMPORARY" "TABLE" table_name() table_element_list() + [ "ON" "COMMIT" table_commit_action() "ROWS" ] +} + +void call_statement(): +{} +{ + "CALL" routine_invocation() +} + +void return_statement(): +{} +{ + "RETURN" return_value() +} + +void return_value(): +{} +{ + value_expression() + | "NULL" +} + +void start_transaction_statement(): +{} +{ + "START" "TRANSACTION" [ transaction_characteristics() ] +} + +void set_transaction_statement(): +{} +{ + "SET" [ "LOCAL" ] "TRANSACTION" [ transaction_characteristics() ] +} + +void transaction_characteristics(): +{} +{ + transaction_mode() ( "," transaction_mode() )* +} + +void transaction_mode(): +{} +{ + isolation_level() + | transaction_access_mode() + | diagnostics_size() +} + +void transaction_access_mode(): +{} +{ + "READ" "ONLY" + | "READ" "WRITE" +} + +void isolation_level(): +{} +{ + "ISOLATION" "LEVEL" level_of_isolation() +} + +void level_of_isolation(): +{} +{ + "READ" "UNCOMMITTED" + | "READ" "COMMITTED" + | "REPEATABLE" "READ" + | "SERIALIZABLE" +} + +void diagnostics_size(): +{} +{ + "DIAGNOSTICS" "SIZE" simple_value_specification() +} + +void set_constraints_mode_statement(): +{} +{ + "SET" "CONSTRAINTS" constraint_name_list() ( "DEFERRED" | "IMMEDIATE" ) +} + +void constraint_name_list(): +{} +{ + "ALL" + | schema_qualified_name() ( "," schema_qualified_name() )* +} + +void savepoint_statement(): +{} +{ + "SAVEPOINT" savepoint_specifier() +} + +void savepoint_specifier(): +{} +{ + identifier() +} + +void release_savepoint_statement(): +{} +{ + "RELEASE" "SAVEPOINT" savepoint_specifier() +} + +void commit_statement(): +{} +{ + "COMMIT" [ "WORK" ] [ "AND" [ "NO" ] "CHAIN" ] +} + +void rollback_statement(): +{} +{ + "ROLLBACK" [ "WORK" ] [ "AND" [ "NO" ] "CHAIN" ] [ savepoint_clause() ] +} + +void savepoint_clause(): +{} +{ + "TO" "SAVEPOINT" savepoint_specifier() +} + +void connect_statement(): +{} +{ + "CONNECT" "TO" connection_target() +} + +void connection_target(): +{} +{ + simple_value_specification() [ "AS" simple_value_specification() ] [ "USER" simple_value_specification() ] + | "DEFAULT" +} + +void set_connection_statement(): +{} +{ + "SET" "CONNECTION" connection_object() +} + +void connection_object(): +{} +{ + "DEFAULT" + | simple_value_specification() +} + +void disconnect_statement(): +{} +{ + "DISCONNECT" disconnect_object() +} + +void disconnect_object(): +{} +{ + connection_object() + | "ALL" + | "CURRENT" +} + +void set_session_characteristics_statement(): +{} +{ + "SET" "SESSION" "CHARACTERISTICS" "AS" session_characteristic_list() +} + +void session_characteristic_list(): +{} +{ + session_characteristic() ( "," session_characteristic() )* +} + +void session_characteristic(): +{} +{ + session_transaction_characteristics() +} + +void session_transaction_characteristics(): +{} +{ + "TRANSACTION" transaction_mode() ( "," transaction_mode() )* +} + +void set_session_user_identifier_statement(): +{} +{ + "SET" "SESSION" "AUTHORIZATION" value_specification() +} + +void set_role_statement(): +{} +{ + "SET" "ROLE" role_specification() +} + +void role_specification(): +{} +{ + value_specification() + | "NONE" +} + +void set_local_time_zone_statement(): +{} +{ + "SET" "TIME" "ZONE" set_time_zone_value() +} + +void set_time_zone_value(): +{} +{ + interval_value_expression() + | "LOCAL" +} + +void set_catalog_statement(): +{} +{ + "SET" catalog_name_characteristic() +} + +void catalog_name_characteristic(): +{} +{ + "CATALOG" value_specification() +} + +void set_schema_statement(): +{} +{ + "SET" schema_name_characteristic() +} + +void schema_name_characteristic(): +{} +{ + "SCHEMA" value_specification() +} + +void set_names_statement(): +{} +{ + "SET" character_set_name_characteristic() +} + +void character_set_name_characteristic(): +{} +{ + "NAMES" value_specification() +} + +void set_path_statement(): +{} +{ + "SET" SQL_path_characteristic() +} + +void SQL_path_characteristic(): +{} +{ + "PATH" value_specification() +} + +void set_transform_group_statement(): +{} +{ + "SET" transform_group_characteristic() +} + +void transform_group_characteristic(): +{} +{ + "DEFAULT" "TRANSFORM" "GROUP" value_specification() + | "TRANSFORM" "GROUP" "FOR" "TYPE" path_resolved_user_defined_type_name() value_specification() +} + +void set_session_collation_statement(): +{} +{ + "SET" "COLLATION" collation_specification() [ "FOR" character_set_specification_list() ] + | "SET" "NO" "COLLATION" [ "FOR" character_set_specification_list() ] +} + +void collation_specification(): +{} +{ + value_specification() +} + +void allocate_descriptor_statement(): +{} +{ + "ALLOCATE" [ "SQL" ] "DESCRIPTOR" descriptor_name() [ "WITH" "MAX" simple_value_specification() ] +} + +void deallocate_descriptor_statement(): +{} +{ + "DEALLOCATE" [ "SQL" ] "DESCRIPTOR" descriptor_name() +} + +void get_descriptor_statement(): +{} +{ + "GET" [ "SQL" ] "DESCRIPTOR" descriptor_name() get_descriptor_information() +} + +void get_descriptor_information(): +{} +{ + get_header_information() ( "," get_header_information() )* + | "VALUE" simple_value_specification() get_item_information() + ( "," get_item_information() )* +} + +void get_header_information(): +{} +{ + simple_target_specification_1() "=" header_item_name() +} + +void header_item_name(): +{} +{ + "COUNT" + | "KEY_TYPE" + | "DYNAMIC_FUNCTION" + | "DYNAMIC_FUNCTION_CODE" + | "TOP_LEVEL_COUNT" +} + +void get_item_information(): +{} +{ + simple_target_specification_2() "=" descriptor_item_name() +} + +void simple_target_specification_1(): +{} +{ + simple_target_specification() +} + +void simple_target_specification_2(): +{} +{ + simple_target_specification() +} + +void descriptor_item_name(): +{} +{ + "CARDINALITY" + | "CHARACTER_SET_CATALOG" + | "CHARACTER_SET_NAME" + | "CHARACTER_SET_SCHEMA" + | "COLLATION_CATALOG" + | "COLLATION_NAME" + | "COLLATION_SCHEMA" + | "DATA" + | "DATETIME_INTERVAL_CODE" + | "DATETIME_INTERVAL_PRECISION" + | "DEGREE" + | "INDICATOR" + | "KEY_MEMBER" + | "LENGTH" + | "LEVEL" + | "NAME" + | "NULLABLE" + | "OCTET_LENGTH" + | "PARAMETER_MODE" + | "PARAMETER_ORDINAL_POSITION" + | "PARAMETER_SPECIFIC_CATALOG" + | "PARAMETER_SPECIFIC_NAME" + | "PARAMETER_SPECIFIC_SCHEMA" + | "PRECISION" + | "RETURNED_CARDINALITY" + | "RETURNED_LENGTH" + | "RETURNED_OCTET_LENGTH" + | "SCALE" + | "SCOPE_CATALOG" + | "SCOPE_NAME" + | "SCOPE_SCHEMA" + | "TYPE" + | "UNNAMED" + | "USER_DEFINED_TYPE_CATALOG" + | "USER_DEFINED_TYPE_NAME" + | "USER_DEFINED_TYPE_SCHEMA" + | "USER_DEFINED_TYPE_CODE" +} + +void set_descriptor_statement(): +{} +{ + "SET" [ "SQL" ] "DESCRIPTOR" descriptor_name() set_descriptor_information() +} + +void set_descriptor_information(): +{} +{ + set_header_information() ( "," set_header_information() )* + | "VALUE" simple_value_specification() set_item_information() + ( "," set_item_information() )* +} + +void set_header_information(): +{} +{ + header_item_name() "=" simple_value_specification() +} + +void set_item_information(): +{} +{ + descriptor_item_name() "=" simple_value_specification() +} + +void prepare_statement(): +{} +{ + "PREPARE" SQL_identifier() [ attributes_specification() ] + "FROM" simple_value_specification() +} + +void attributes_specification(): +{} +{ + "ATTRIBUTES" simple_value_specification() +} + +void preparable_statement(): +{} +{ + preparable_SQL_data_statement() + | preparable_SQL_schema_statement() + | preparable_SQL_transaction_statement() + | preparable_SQL_control_statement() + | preparable_SQL_session_statement() + | preparable_implementation_defined_statement() +} + +void preparable_SQL_data_statement(): +{} +{ + delete_statement_searched() + | dynamic_single_row_select_statement() + | insert_statement() + | dynamic_select_statement() + | update_statement_searched() + | truncate_table_statement() + | merge_statement() + | preparable_dynamic_delete_statement_positioned() + | preparable_dynamic_update_statement_positioned() + //TODO(kaikalur):fix the next two + //| hold_locator_statement() + //| free_locator_statement() +} + +void preparable_SQL_schema_statement(): +{} +{ + SQL_schema_statement() +} + +void preparable_SQL_transaction_statement(): +{} +{ + SQL_transaction_statement() +} + +void preparable_SQL_control_statement(): +{} +{ + SQL_control_statement() +} + +void preparable_SQL_session_statement(): +{} +{ + SQL_session_statement() +} + +void dynamic_select_statement(): +{} +{ + cursor_specification() +} + +void preparable_implementation_defined_statement(): +{} +{ + //!! See the Syntax Rules. + character_string_literal() // temp +} + +void cursor_attributes(): +{} +{ + ( cursor_attribute() )+ +} + +void cursor_attribute(): +{} +{ + cursor_sensitivity() + | cursor_scrollability() + | cursor_holdability() + | cursor_returnability() +} + +void deallocate_prepared_statement(): +{} +{ + "DEALLOCATE" "PREPARE" SQL_identifier() +} + +void describe_statement(): +{} +{ + describe_input_statement() + | describe_output_statement() +} + +void describe_input_statement(): +{} +{ + "DESCRIBE" "INPUT" SQL_identifier() using_descriptor() [ nesting_option() ] +} + +void describe_output_statement(): +{} +{ + "DESCRIBE" [ "OUTPUT" ] described_object() using_descriptor() [ nesting_option() ] +} + +void nesting_option(): +{} +{ + "WITH" "NESTING" + | "WITHOUT" "NESTING" +} + +void using_descriptor(): +{} +{ + "USING" [ "SQL" ] "DESCRIPTOR" descriptor_name() +} + +void described_object(): +{} +{ + SQL_identifier() + | "CURSOR" extended_cursor_name() "STRUCTURE" +} + +void input_using_clause(): +{} +{ + using_arguments() + | using_input_descriptor() +} + +void using_arguments(): +{} +{ + "USING" using_argument() ( "," using_argument() )* +} + +void using_argument(): +{} +{ + general_value_specification() +} + +void using_input_descriptor(): +{} +{ + using_descriptor() +} + +void output_using_clause(): +{} +{ + into_arguments() + | into_descriptor() +} + +void into_arguments(): +{} +{ + "INTO" into_argument() ( "," into_argument() )* +} + +void into_argument(): +{} +{ + target_specification() +} + +void into_descriptor(): +{} +{ + "INTO" [ "SQL" ] "DESCRIPTOR" descriptor_name() +} + +void execute_statement(): +{} +{ + "EXECUTE" SQL_identifier() [ result_using_clause() ] [ parameter_using_clause() ] +} + +void result_using_clause(): +{} +{ + output_using_clause() +} + +void parameter_using_clause(): +{} +{ + input_using_clause() +} + +void execute_immediate_statement(): +{} +{ + "EXECUTE" "IMMEDIATE" simple_value_specification() +} + +void dynamic_declare_cursor(): +{} +{ + "DECLARE" cursor_name() + cursor_properties() + "FOR" identifier() +} + +void allocate_cursor_statement(): +{} +{ + "ALLOCATE" extended_cursor_name() cursor_intent() +} + +void cursor_intent(): +{} +{ + statement_cursor() + | result_set_cursor() +} + +void statement_cursor(): +{} +{ + cursor_properties() + "FOR" extended_identifier() +} + +void result_set_cursor(): +{} +{ + [ "CURSOR" ] "FOR" "PROCEDURE" specific_routine_designator() +} + +void dynamic_open_statement(): +{} +{ + "OPEN" dynamic_cursor_name() [ input_using_clause() ] +} + +void dynamic_fetch_statement(): +{} +{ + "FETCH" [ [ fetch_orientation() ] "FROM" ] dynamic_cursor_name() output_using_clause() +} + +void dynamic_single_row_select_statement(): +{} +{ + query_specification() +} + +void dynamic_close_statement(): +{} +{ + "CLOSE" dynamic_cursor_name() +} + +void dynamic_delete_statement_positioned(): +{} +{ + "DELETE" "FROM" target_table() "WHERE" "CURRENT" "OF" dynamic_cursor_name() +} + +void dynamic_update_statement_positioned(): +{} +{ + "UPDATE" target_table() "SET" set_clause_list() + "WHERE" "CURRENT" "OF" dynamic_cursor_name() +} + +void preparable_dynamic_delete_statement_positioned(): +{} +{ + "DELETE" [ "FROM" target_table() ] + "WHERE" "CURRENT" "OF" preparable_dynamic_cursor_name() +} + +void preparable_dynamic_cursor_name(): +{} +{ + [ scope_option() ] cursor_name() +} + +void preparable_dynamic_update_statement_positioned(): +{} +{ + "UPDATE" [ target_table() ] "SET" set_clause_list() + "WHERE" "CURRENT" "OF" preparable_dynamic_cursor_name() +} + +void direct_SQL_statement() #DirectSqlStatement(true): +{} +{ + directly_executable_statement() ";" +} + +void directly_executable_statement(): +{} +{ + direct_SQL_data_statement() + | SQL_schema_statement() + | SQL_transaction_statement() + | SQL_connection_statement() + | SQL_session_statement() + | direct_implementation_defined_statement() + | use_statement() // Non-standard +} + +void direct_SQL_data_statement(): +{} +{ + delete_statement_searched() + | direct_select_statement_multiple_rows() + | insert_statement() + | update_statement_searched() + | truncate_table_statement() + | merge_statement() + | temporary_table_declaration() +} + +void direct_implementation_defined_statement(): +{} +{ + //!! See the Syntax Rules. + character_string_literal() // temp +} + +void direct_select_statement_multiple_rows(): +{} +{ + cursor_specification() +} + +void get_diagnostics_statement(): +{} +{ + "GET" "DIAGNOSTICS" SQL_diagnostics_information() +} + +void SQL_diagnostics_information(): +{} +{ + LOOKAHEAD(3) statement_information() + | condition_information() + | all_information() +} + +void statement_information(): +{} +{ + statement_information_item() ( "," statement_information_item() )* +} + +void statement_information_item(): +{} +{ + simple_target_specification() "=" statement_information_item_name() +} + +void statement_information_item_name(): +{} +{ + "NUMBER" + | "MORE" + | "COMMAND_FUNCTION" + | "COMMAND_FUNCTION_CODE" + | "DYNAMIC_FUNCTION" + | "DYNAMIC_FUNCTION_CODE" + | "ROW_COUNT" + | "TRANSACTIONS_COMMITTED" + | "TRANSACTIONS_ROLLED_BACK" + | "TRANSACTION_ACTIVE" +} + +void condition_information(): +{} +{ + "CONDITION" simple_value_specification() condition_information_item() + ( "," condition_information_item() )* +} + +void condition_information_item(): +{} +{ + simple_target_specification() "=" condition_information_item_name() +} + +void condition_information_item_name(): +{} +{ + "CATALOG_NAME" + | "CLASS_ORIGIN" + | "COLUMN_NAME" + | "CONDITION_NUMBER" + | "CONNECTION_NAME" + | "CONSTRAINT_CATALOG" + | "CONSTRAINT_NAME" + | "CONSTRAINT_SCHEMA" + | "CURSOR_NAME" + | "MESSAGE_LENGTH" + | "MESSAGE_OCTET_LENGTH" + | "MESSAGE_TEXT" + | "PARAMETER_MODE" + | "PARAMETER_NAME" + | "PARAMETER_ORDINAL_POSITION" + | "RETURNED_SQLSTATE" + | "ROUTINE_CATALOG" + | "ROUTINE_NAME" + | "ROUTINE_SCHEMA" + | "SCHEMA_NAME" + | "SERVER_NAME" + | "SPECIFIC_NAME" + | "SUBCLASS_ORIGIN" + | "TABLE_NAME" + | "TRIGGER_CATALOG" + | "TRIGGER_NAME" + | "TRIGGER_SCHEMA" +} + +void all_information(): +{} +{ + all_info_target() "=" "ALL" [ all_qualifier() ] +} + +void all_info_target(): +{} +{ + simple_target_specification() +} + +void all_qualifier(): +{} +{ + "STATEMENT" + | "CONDITION" [ simple_value_specification() ] +} +void use_statement() #UseStatement: +{} +{ + "USE" identifier_chain() +} + +void lambda() #Lambda(2): +{} +{ + lambda_params() lambda_body() +} + +void lambda_body() #LambdaBody: +{} +{ + "->" value_expression() +} + +void lambda_params() #LambdaParams: +{} +{ + ( actual_identifier() )#LambdaParam(0) + | "(" [ ( actual_identifier() )#LambdaParam(0) ( "," ( actual_identifier() #LambdaParam(0) ) )* ] ")" +} + +void if_not_exists(): +{} +{ + "IF" "NOT" "EXISTS" +} + +void identifier_suffix_chain(): +{} +{ + ( ( "@" | ":" ) [ actual_identifier() ] )+ +} + +void limit_clause() #LimitClause: +{} +{ + "LIMIT" ( <unsigned_integer> | "ALL" ) +} + +void presto_generic_type(): +{} +{ + presto_array_type() + | presto_map_type() + | ( <regular_identifier> "(" data_type() ( "," data_type() )* ")" )#ParameterizedType +} + +void presto_array_type() #ArrayType(): +{} +{ + "ARRAY" "<" data_type() ">" // Non-standard + | "ARRAY" "(" data_type() ")" // Non-standard +} + +void presto_map_type() #MapType(): +{} +{ + "MAP" "<" data_type() "," data_type() ">" // Non-standard + | "MAP" "(" data_type() "," data_type() ")" // Non-standard +} + +void percent_operator(): +{} +{ + <PERCENT: "%"> +} + +void distinct(): +{} +{ + "DISTINCT" +} + +void grouping_expression(): +{} +{ + value_expression() +} + +void count(): +{} +{ + "COUNT" "(" ")" + | "\"COUNT\"" "(" [ set_quantifier() ] [ value_expression() | "*" ] ")" // Just weird +} + +void table_description(): +{} +{ + "COMMENT" character_string_literal() +} + +void routine_description(): +{} +{ + "COMMENT" character_string_literal() +} + +void column_description(): +{} +{ + "COMMENT" character_string_literal() +} + +void presto_aggregation_function(): +{} +{ + "NUMERIC_HISTOGRAM" + | "HISTOGRAM" + | "APPROEX_PERCENTILE" + | "MAP_AGG" + | "SET_AGG" + | "MAP_UNION" +} + +void presto_aggregations(): +{} +{ + presto_aggregation_function() + "(" [ [ set_quantifier() ] value_expression() ( "," value_expression() )* ] ")" +} + +void try_cast() #TryExpression: +{} +{ + "TRY_CAST" ( "(" cast_operand() "AS" cast_target() ")" )#CastExpression +} + +void varbinary(): +{} +{ + "VARBINARY" +} + +void table_attributes(): +{} +{ + "(" actual_identifier() "=" value_expression() ( "," actual_identifier() "=" value_expression() )* ")" // Non-standard +} + +void or_replace(): +{} +{ + "OR" "REPLACE" +} + +void udaf_filter(): +{} +{ + filter_clause() +} + +void extra_args_to_agg(): +{} +{ + ( "," value_expression() )+ +} + +void weird_identifiers(): +{} +{ + "_" +} + +TOKEN: +{ + <identifier_starting_with_underscore: ("_")+ (<regular_identifier>)? > { setKindToIdentifier(matchedToken); } + | <generic_unicode: "U&'" ( ~["'"] | ("''") )* "'"> { setUnicodeLiteralType(matchedToken); } +} +TOKEN: +{ +/* + <#SQL_terminal_character() ::= +SQL_language_character() +; + +| <#SQL_language_character() ::= +simple_Latin_letter() +| digit() +| SQL_special_character() +; + +| <#simple_Latin_letter() ::= +simple_Latin_upper_case_letter() +| simple_Latin_lower_case_letter() +; + +| <#simple_Latin_upper_case_letter() ::= +["A"-"Z"] +; + +| <#simple_Latin_lower_case_letter() ::= +["a"-"z"] +; + +| <#SQL_special_character() ::= +space() +| "\"" +| "%" +| "&" +| "'" +| left_paren() +| right_paren() +| asterisk() +| plus_sign() +| comma() +| minus_sign() +| period() +| solidus() +| colon() +| semicolon() +| less_than_operator() +| equals_operator() +| greater_than_operator() +| question_mark() +| "[" +| "]" +| "^" +| "_" +| "|" +| "{" +| "}" +; +; + +token() ::= +nondelimiter_token() +| delimiter_token() +; + +nondelimiter_token() ::= +regular_identifier() +| key_word() +| unsigned_numeric_literal() +| national_character_string_literal() +| binary_string_literal() +| large_object_length_token() +| Unicode_delimited_identifier() +| Unicode_character_string_literal() +| SQL_language_identifier() +; + +*/ + + +<regular_identifier: <identifier_body> > + +| <#identifier_body: <identifier_start> ( <identifier_part> )* > + +| <#identifier_part: <identifier_start> | <identifier_extend> > + +| <#identifier_start: ["a"-"z"] // temp +/*!! See the Syntax Rules.*/ +> + +| <#identifier_extend: ["\u00B7", "0"-"9", "_"] // temp +//!! See the Syntax Rules. +> + +| <large_object_length_token: ( <digit> )+ <multiplier> > + +| <multiplier: ["K", "M", "G", "T", "P"]> + +| <delimited_identifier: "\"" (<delimited_identifier_body>)? "\"" > // Presto allows empty string as an id - yikes! + +| <#delimited_identifier_body: ( <delimited_identifier_part> )+ > + +| <#delimited_identifier_part: <nondoublequote_character> | <doublequote_symbol> > + +| <Unicode_delimited_identifier: "U" "&" "\"" <Unicode_delimiter_body> "\"" ( <Unicode_escape_specifier> )? > + +| <#Unicode_escape_specifier: "UESCAPE" "'" <Unicode_escape_character> "'" > + +| <#Unicode_delimiter_body: ( <Unicode_identifier_part> )+ > + +| <#Unicode_identifier_part: <delimited_identifier_part> | <Unicode_escape_value> > + +| <#Unicode_escape_value: <Unicode_4_digit_escape_value> | <Unicode_6_digit_escape_value> | <Unicode_character_escape_value> > + +| <#Unicode_4_digit_escape_value: <Unicode_escape_character> <hexit> <hexit> <hexit> <hexit> > + +| <#Unicode_6_digit_escape_value: <Unicode_escape_character> "+" <hexit> <hexit> <hexit> <hexit> <hexit> <hexit> > + +| <#Unicode_character_escape_value: <Unicode_escape_character> <Unicode_escape_character> > + +| <#Unicode_escape_character: ~["a"-"z", "0"-"9", "+", "'", "\"", "\n", "\t", " "] // temp +//17) If the source language character set contains <reverse solidus>, then let D +//!! See the Syntax Rules.*/ +> + +| <#nondoublequote_character: ~["\""] +//!! See the Syntax Rules. +> + +| <#doublequote_symbol: "\"\"" > + +/* +delimiter_token: +<character_string_literal> +| <date_string> +| <time_string> +| <timestamp_string> +| <interval_string> +| <delimited_identifier> +| <SQL_special_character> +| <"> " +| ">=" +| "<=" +| "||" +| "->" +| "??(" +| "??)" +| "::" +| ".." +| "=>" +> +*/ +} + +SPECIAL_TOKEN: +{ +<white_space: <newline> | [ " ", "\t" ] // temp +//!! See the Syntax Rules. +> + +| <#newline: (["\n", "\r"])+ +//!! See the Syntax Rules. +> + +//| <comment: <simple_comment> | <bracketed_comment> > +| <comment: <simple_comment> > +| <#simple_comment: <simple_comment_introducer> ( <comment_character> )* (<newline>)? > + +| <#simple_comment_introducer: "--" > + +//| <#bracketed_comment: <bracketed_comment_introducer> <bracketed_comment_contents> <bracketed_comment_terminator> > + + +//| <#bracketed_comment_terminator: "*/" > + +//| <#bracketed_comment_contents: ( <comment_character> | <separator> )* +////!! See the Syntax Rules. +//> + +//| <#comment_character: <nonquote_character> | "'" > +| <#comment_character: (~["\n", "\r"]) | "'" > + +| <skip_separator: (<white_space>)+ > + +//| <#key_word: <reserved_word> | <non_reserved_word> > > +} + + +MORE: +{ +<bracketed_comment_introducer: "/*" > : comment_contents +} + +<comment_contents>MORE: +{ + "*/" : match_comment + | <~[]> +} + +<match_comment>SPECIAL_TOKEN: +{ + <coment_end: ""> { StoreImage(matchedToken); } : DEFAULT +} + +TOKEN: +{ + <#separator: ( + //TODO(kaikalur): fixit -- <comment> | <white_space> )+ > + <white_space> )+ > +| + <#digit: ["0"-"9"] > +| <#character_representation: <nonquote_character> | <quote_symbol> > + +| <#nonquote_character: ~["'"] +//!! See the Syntax Rules. +> + +| <#quote_symbol: "''" > + +| <quoted_string: "'" ( <character_representation> )* "'" > +| <national_character_string_literal: "N" "'" ( <character_representation> )* "'" ( <separator> "'" ( <character_representation> )* "'" )* > + +| <unicode_literal: "U" "&" "'" ( <Unicode_representation> )* "'" ( <separator> "'" ( <Unicode_representation> )* "'" )* <Unicode_escape_specifier> > // TODO(kaikalur) - fixit + +| <#Unicode_representation: <character_representation> | <Unicode_escape_value> > + +//TODO(kaikalur): fixit +| <#space: " "> // temp +| <binary_string_literal: "X" "'" ( <space> )* ( <hexit> ( <space> )* <hexit> ( <space> )* )* "'" ( <separator> "'" ( <space> )* ( <hexit> ( <space> )* <hexit> ( <space> )* )* "'" )* > + +| <#hexit: ["a"-"f", "0"-"9"] > + + +//| <exact_numeric_literal: <unsigned_integer> ( "." ( <unsigned_integer> )? )? | "." <unsigned_integer> > + +//| <sign: [ "+", "-" ] > + +| <unsigned_integer: ( <digit> )+ > +| <float_literal: <unsigned_integer> ( "." ( <unsigned_integer> )? ) | "." <unsigned_integer> > + +| <approximate_numeric_literal: <mantissa> "E" <exponent> > + +| <#mantissa: <unsigned_integer> | <float_literal> > + +| <#exponent: <signed_integer> > + +| <#signed_integer: ( [ "+", "-" ] )? <unsigned_integer> > + + +| <SQL_language_identifier: <SQL_language_identifier_start> ( <SQL_language_identifier_part> )* > + +// TODO(srenei): fixit +| <#simple_Latin_letter: ["a"-"z"]> +| <#SQL_language_identifier_start: <simple_Latin_letter> > + +| <#SQL_language_identifier_part: <simple_Latin_letter> | <digit> | "_" > +} + +<DEFAULT>TOKEN: +{ + <illegal_input_char: ~[]> : DEFAULT +} diff --git a/sphinx/src/changelog.rst b/sphinx/src/changelog.rst index 76af351..4686a78 100644 --- a/sphinx/src/changelog.rst +++ b/sphinx/src/changelog.rst @@ -8,6 +8,9 @@ Latest Changes since |JSQLPARSER_VERSION| ============================================================= + * **build: Gradle Build and Rail Road Diagrams** + + Andreas Reichel, 2023-01-03 * **test: Add many more Real Life SQL statements** Andreas Reichel, 2022-12-27 From 551671a4907a677a9f5da6aa162de6df12136891 Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Wed, 4 Jan 2023 18:01:52 +0700 Subject: [PATCH 11/16] refactor: fix links and names Signed-off-by: Andreas Reichel <andreas@manticore-projects.com> --- .github/workflows/sphinx.yml | 2 +- README.md | 2 +- build.gradle | 20 +- parser/build.gradle | 51 +- parser/grammar/prepare-javacc-grammar.sh | 2 +- .../com/facebook/coresql/parser/parser.jjt | 8321 +++++++++++++++++ parser/pom.xml | 23 - .../coresql/parser}/Comment.java | 2 +- .../coresql/parser}/CommentMap.java | 2 +- .../coresql/parser}/SQLKeyEntry.java | 2 +- .../coresql/parser}/SimpleFileTest.java | 4 +- .../coresql/parser}/SimpleFileTestIT.java | 4 +- .../coresql/parser}/StandardFileTest.java | 5 +- .../coresql/parser/StandardFileTestIT.java | 89 + .../coresql/parser}/TestUtils.java | 8 +- .../parser}/expression/ParameterTest.java | 4 +- .../jsqlformatter/StandardFileTestIT.java | 48 - .../parser/ignore/BracketQuotationTest.sql | 57 + .../parser/ignore/H2OrderedAggregateTest.sql | 45 + .../coresql/parser/ignore/MeanChallenges.sql | 74 + .../coresql/parser/ignore/MsSqlServerTest.sql | 44 + .../coresql/parser/ignore/MySQLTest.sql | 45 + .../coresql/parser/simple/SQLFileTest_1.sql | 29 + .../parser/simple/SQLFileTest_short.sql | 17 + .../parser/simpleIT/EmptyStatementTest.sql | 13 + .../coresql/parser/simpleIT/SQLFileTest.sql | 96 + .../coresql/parser/simpleIT/SQLFileTest_1.sql | 419 + .../parser/simpleIT/SQLFileTest_short.sql | 26 + .../parser/standard/StandardDeleteTest.sql | 22 + .../parser/standard/StandardInsertTest.sql | 30 + .../parser}/standard/StandardSelectTest.sql | 0 .../parser/standard/StandardUpdateTest.sql | 76 + .../standardIT/H2OrderedAggregateTest.sql | 45 + .../parser/standardIT/MeanChallenges.sql | 74 + .../parser/standardIT/StandardAlterTest.sql | 74 + .../parser/standardIT/StandardCommentTest.sql | 41 + .../standardIT/StandardCreateIndexTest.sql | 57 + .../standardIT/StandardCreateTableTest.sql | 117 + .../standardIT/StandardCreateViewTest.sql | 100 + .../parser/standardIT/StandardDeleteTest.sql | 103 + .../parser/standardIT/StandardInsertTest.sql | 58 + .../parser/standardIT/StandardMergeTest.sql | 229 + .../standardIT/StandardOffsetLimitTest.sql | 44 + .../parser/standardIT/StandardSelectTest.sql | 476 + .../standardIT/StandardTruncateTest.sql | 21 + .../parser/standardIT/StandardUpdateTest.sql | 130 + .../standardIT/StandardValueStatementTest.sql | 72 + pom.xml | 31 +- sphinx/src/_static/logo-presto-color.svg | 1 + sphinx/src/changelog.rst | 30 +- sphinx/src/conf.py | 3 +- sphinx/src/contribution.rst | 8 +- sphinx/src/index.rst | 17 +- sphinx/src/keywords.rst | 4 +- sphinx/src/usage.rst | 4 +- 55 files changed, 11176 insertions(+), 145 deletions(-) create mode 100644 parser/main/jjtree/com/facebook/coresql/parser/parser.jjt rename parser/src/test/java/com/{manticore/jsqlformatter => facebook/coresql/parser}/Comment.java (96%) rename parser/src/test/java/com/{manticore/jsqlformatter => facebook/coresql/parser}/CommentMap.java (99%) rename parser/src/test/java/com/{manticore/jsqlformatter => facebook/coresql/parser}/SQLKeyEntry.java (97%) rename parser/src/test/java/com/{manticore/jsqlformatter => facebook/coresql/parser}/SimpleFileTest.java (97%) rename parser/src/test/java/com/{manticore/jsqlformatter => facebook/coresql/parser}/SimpleFileTestIT.java (93%) rename parser/src/test/java/com/{manticore/jsqlformatter => facebook/coresql/parser}/StandardFileTest.java (96%) create mode 100644 parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java rename parser/src/test/java/com/{manticore/jsqlformatter => facebook/coresql/parser}/TestUtils.java (92%) rename parser/src/test/java/com/{manticore/jsqlformatter => facebook/coresql/parser}/expression/ParameterTest.java (94%) delete mode 100644 parser/src/test/java/com/manticore/jsqlformatter/StandardFileTestIT.java create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/ignore/BracketQuotationTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/ignore/H2OrderedAggregateTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/ignore/MeanChallenges.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/ignore/MsSqlServerTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/ignore/MySQLTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/simple/SQLFileTest_1.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/simple/SQLFileTest_short.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/simpleIT/EmptyStatementTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest_1.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest_short.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standard/StandardDeleteTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standard/StandardInsertTest.sql rename parser/src/test/resources/com/{manticore/jsqlformatter => facebook/coresql/parser}/standard/StandardSelectTest.sql (100%) create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standard/StandardUpdateTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/H2OrderedAggregateTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/MeanChallenges.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardAlterTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCommentTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateIndexTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateTableTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateViewTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardDeleteTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardInsertTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardMergeTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardOffsetLimitTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardSelectTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardTruncateTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardUpdateTest.sql create mode 100644 parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardValueStatementTest.sql create mode 100644 sphinx/src/_static/logo-presto-color.svg diff --git a/.github/workflows/sphinx.yml b/.github/workflows/sphinx.yml index 3c77ef2..33b9524 100644 --- a/.github/workflows/sphinx.yml +++ b/.github/workflows/sphinx.yml @@ -23,7 +23,7 @@ jobs: uses: actions/upload-pages-artifact@v1 with: # Upload entire repository - path: 'target/site/sphinx' + path: 'build/site/sphinx' - name: Deploy to GitHub Pages id: deployment uses: actions/deploy-pages@v1 diff --git a/README.md b/README.md index 830bad3..34b7d9d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Java SQL:2016 Language Frontend -##[Visit our Website.](https://manticore-projects.github.io/sql/index.html) +[Visit our Website.](https://manticore-projects.github.io/sql/index.html) ![Build Status](https://github.com/manticore-projects/sql/actions/workflows/maven.yml/badge.svg) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.facebook.presto/presto-coresql/badge.svg)](http://maven-badges.herokuapp.com/maven-central/com.facebook.presto/presto-coresql) diff --git a/build.gradle b/build.gradle index 111dee1..645bc79 100644 --- a/build.gradle +++ b/build.gradle @@ -121,7 +121,7 @@ task renderRR() { "-offset:0", "-width:800", //"-png", - //"-out:target/rr/JSqlParserCC.zip", + //"-out:target/rr/PRESTO_SQL_PARSERCC.zip", "-out:$buildDir/site/sphinx/_static/syntax.xhtml", "$buildDir/rr/syntax.ebnf" ] @@ -142,7 +142,7 @@ Changelog {{#tags}} {{#ifMatches name "^Unreleased.*"}} -Latest Changes since |JSQLPARSER_VERSION| +Latest Changes since |PRESTO_SQL_PARSER_VERSION| {{/ifMatches}} {{#ifMatches name "^(?!Unreleased).*"}} Version {{name}} @@ -171,21 +171,21 @@ task sphinx(type: Exec) { .. |_| unicode:: U+00A0 :trim: -.. |JSQLPARSER_EMAIL| replace:: support@manticore-projects.com -.. |JSQLPARSER_VERSION| replace:: ${getVersion(false)} -.. |JSQLPARSER_SNAPSHOT_VERSION| replace:: ${getVersion(true)} -.. |JSQLPARSER_STABLE_VERSION_LINK| raw:: html +.. |PRESTO_SQL_PARSER_EMAIL| replace:: support@manticore-projects.com +.. |PRESTO_SQL_PARSER_VERSION| replace:: ${getVersion(false)} +.. |PRESTO_SQL_PARSER_SNAPSHOT_VERSION| replace:: ${getVersion(true)} +.. |PRESTO_SQL_PARSER_STABLE_VERSION_LINK| raw:: html - <a href='http://manticore-projects.com/download/${project.name}-${getVersion(false)}/${project.name}-${getVersion(false)}.jar'>${project.name}-${getVersion(false)}.jar</a> + <a href='https://github.com/prestodb/sql/archive/refs/tags/${getVersion(false)}.jar'>${project.name}-${getVersion(false)}.jar</a> -.. |JSQLPARSER_SNAPSHOT_VERSION_LINK| raw:: html +.. |PRESTO_SQL_PARSER_SNAPSHOT_VERSION_LINK| raw:: html - <a href='http://manticore-projects.com/download/${project.name}-${getVersion(false)}/${project.name}-${getVersion(true)}.jar'>${project.name}-${getVersion(true)}.jar</a> + <a href='https://github.com/prestodb/sql/archive/refs/tags/${getVersion(true)}.jar'>${project.name}-${getVersion(true)}.jar</a> """ args = [ - "-Dproject=Java SQL:2016 Parser" + "-Dproject=Presto SQL Parser" , "-Dcopyright=Sreeni Viswanadha, 2022" , "-Dauthor=Sreeni Viswanadha" , "-Drelease=${getVersion(false)}" diff --git a/parser/build.gradle b/parser/build.gradle index 01add7b..60ee84b 100644 --- a/parser/build.gradle +++ b/parser/build.gradle @@ -1,7 +1,6 @@ plugins { id 'java' id "ca.coglinc2.javacc" version "latest.release" - } dependencies { @@ -19,13 +18,13 @@ dependencies { testImplementation 'jakarta.validation:jakarta.validation-api:3.0.2' // https://mvnrepository.com/artifact/io.airlift/log - testImplementation 'io.airlift:log:+' + testImplementation 'io.airlift:log:206' // https://mvnrepository.com/artifact/io.airlift/configuration - testImplementation 'io.airlift:configuration:+' + testImplementation 'io.airlift:configuration:206' // https://mvnrepository.com/artifact/io.airlift/bootstrap - testImplementation 'io.airlift:bootstrap:+' + testImplementation 'io.airlift:bootstrap:206' // https://mvnrepository.com/artifact/com.google.guava/guava testImplementation 'com.google.guava:guava:31.1-jre' @@ -37,9 +36,49 @@ dependencies { java { withSourcesJar() withJavadocJar() +} + +test { + useJUnitPlatform() + failFast=true + minHeapSize = "128m" + maxHeapSize = "1G" + jvmArgs << [ + '-Djunit.jupiter.execution.parallel.enabled=true', + '-Djunit.jupiter.execution.parallel.config.strategy=dynamic', + '-Djunit.jupiter.execution.parallel.mode.default=concurrent' + ] + filter { + excludeTestsMatching("IT*") + excludeTestsMatching("*IT") + excludeTestsMatching("*ITCase") + } +} + +tasks.register('optionalTests', Test) { + useJUnitPlatform() + + description = 'Runs optional tests.' + group = 'verification' + + shouldRunAfter test + + minHeapSize = "128m" + maxHeapSize = "1G" + jvmArgs << [ + '-Djunit.jupiter.execution.parallel.enabled=true', + '-Djunit.jupiter.execution.parallel.config.strategy=dynamic', + '-Djunit.jupiter.execution.parallel.mode.default=concurrent' + ] + filter { + includeTestsMatching("IT*") + includeTestsMatching("*IT") + includeTestsMatching("*ITCase") + } - //spotbugs - //pmd + testLogging { + events "passed" + } } compileJavacc { diff --git a/parser/grammar/prepare-javacc-grammar.sh b/parser/grammar/prepare-javacc-grammar.sh index 5e34635..e3046b0 100755 --- a/parser/grammar/prepare-javacc-grammar.sh +++ b/parser/grammar/prepare-javacc-grammar.sh @@ -1,4 +1,4 @@ # Concatenate all the fragments into a .jj file. gendir='../main/jjtree/com/facebook/coresql/parser/' mkdir -p $gendir -cat javacc-options-java.txt nonreservedwords.txt reservedwords.txt sql-spec.txt presto-extensions.txt lexical-elements.txt > $gendir/parser_tmp.jjt +cat javacc-options-java.txt nonreservedwords.txt reservedwords.txt sql-spec.txt presto-extensions.txt lexical-elements.txt > $gendir/parser.jjt diff --git a/parser/main/jjtree/com/facebook/coresql/parser/parser.jjt b/parser/main/jjtree/com/facebook/coresql/parser/parser.jjt new file mode 100644 index 0000000..0c5fbcc --- /dev/null +++ b/parser/main/jjtree/com/facebook/coresql/parser/parser.jjt @@ -0,0 +1,8321 @@ +options { + STATIC = false; + LOOKAHEAD=3; + IGNORE_CASE=true; + UNICODE_INPUT=true; + ERROR_REPORTING=false; + NODE_DEFAULT_VOID = true; + NODE_SCOPE_HOOK = true; + NODE_CLASS = "AstNode"; + NODE_PREFIX = ""; + MULTI = true; + VISITOR = true; + VISITOR_RETURN_TYPE = "void"; + VISITOR_DATA_TYPE = "Void"; + DEBUG_PARSER = false; + DEBUG_LOOKAHEAD = false; + DEBUG_TOKEN_MANAGER = false; +} + +PARSER_BEGIN(SqlParser) +package com.facebook.coresql.parser; + +public class SqlParser { + private boolean IsIdNonReservedWord() { + int kind = getToken(1).kind; + if (kind == regular_identifier || kind == delimited_identifier || kind == Unicode_delimited_identifier) return true; + + if (!(kind >= MIN_NON_RESERVED_WORD && kind <= MAX_NON_RESERVED_WORD)) return false; // Not a nonreserved word. + + // Some special cases. + switch (kind) { + // Some contextual keywords + case GROUP: + case ORDER: + case PARTITION: + return getToken(2).kind != BY; + + case LIMIT: + return getToken(2).kind != unsigned_integer; + + case ROWS: + return getToken(2).kind != BETWEEN; + + // Some builtin functions + case TRIM: + case POSITION: + case MOD: + case POWER: + case RANK: + case ROW_NUMBER: + case FLOOR: + case MIN: + case MAX: + case UPPER: + case LOWER: + case CARDINALITY: + case ABS: + return getToken(2).kind != lparen; + + default: + return true; + } + } + + private boolean SyncToSemicolon() { + while (getToken(1).kind != EOF && getToken(1).kind != SqlParserConstants.semicolon) getNextToken(); + + if (getToken(1).kind == semicolon) { + getNextToken(); + } + + return true; + } + + private boolean NotEof() { + return getToken(1).kind != EOF; + } + + public void PushNode(Node node) { jjtree.pushNode(node); } + public Node PopNode() { return jjtree.popNode(); } + + void jjtreeOpenNodeScope(Node node) { + ((AstNode)node).beginToken = getToken(1); + } + + void jjtreeCloseNodeScope(Node node) { + AstNode astNode = ((AstNode)node); + astNode.endToken = getToken(0); + Token t = astNode.beginToken; + + // For some nodes, the node is opened after some children are already created. Reset the begin for those to be + // the begin of the left-most child. + if (astNode.NumChildren() > 0) { + Token t0 = astNode.GetChild(0).beginToken; + if (t0.beginLine < t.beginLine || (t0.beginLine == t.beginLine && t0.beginColumn < t.beginColumn)) { + astNode.beginToken = t0; + } + } + + if (astNode.IsNegatableOperator()) { + Token t1 = astNode.GetChild(0).endToken; + + if (astNode.Kind() == JJTISNULL) { + // IsNull -- see if the penultimate token is NOT + while (t1 != null && t1.kind != IS) { + t1 = t1.next; + } + + if (t1.next.kind == NOT) { + astNode.SetNegated(true); + } + } + else if (astNode.NumChildren() > 1) { + Token t2 = astNode.GetChild(1).beginToken; + while (t1.next != null && t1.next != t2) { + if (t1.kind == NOT) { + astNode.SetNegated(true); + break; + } + t1 = t1.next; + } + } + } + else if (astNode.NumChildren() == 2 && astNode.IsOperator()) { + // Hack locate the token just before the first token of the second operator + Token t1 = astNode.GetChild(0).endToken; + Token t2 = astNode.GetChild(1).beginToken; + while (t1.next != null && t1.next != t2) { + t1 = t1.next; + } + astNode.SetOperator(t1.kind); + } + else if (astNode.NumChildren() == 1 && astNode.IsOperator()) { + astNode.SetOperator(astNode.beginToken.kind); + } + } + + public AstNode getResult() + { + return (AstNode) jjtree.popNode(); + } + } + +PARSER_END(SqlParser) + +TOKEN_MGR_DECLS: +{ + void setKindToIdentifier(Token t) { + t.kind = regular_identifier; + } + + void setUnicodeLiteralType(Token t) { + t.kind = unicode_literal; + } + + void StoreImage(Token matchedToken) { + matchedToken.image = image.toString(); + } +} + +// Temporary entry point +Node CompilationUnit() #CompilationUnit: +{} +{ + ( + LOOKAHEAD({ NotEof() }) + try { + direct_SQL_statement() + } catch(ParseException pe) { + System.err.println("Parse error: " + getToken(1).beginLine + ":" + getToken(1).beginColumn + " at token: " + getToken(1).image); + SyncToSemicolon(); + } + )* + + <EOF> + + { return jjtThis; } +} +// non_reserved words + +<UNREACHABLE>SKIP: +{ + // Dummy token to get a value range. Will never be mached. And it should be here positionally - before the first non reserved word + <MIN_NON_RESERVED_WORD: "MIN NON RESERVED WORD"> +} + +// This production should be here and moved out. See notes for details on handling non-reserved words. +void non_reserved_word(): +{} +{ + <A: "A"> + | <ABSOLUTE: "ABSOLUTE"> + | <ACTION: "ACTION"> + | <ADA: "ADA"> + | <ADD: "ADD"> + | <ADMIN: "ADMIN"> + | <AFTER: "AFTER"> + | <ALWAYS: "ALWAYS"> + | <ASC: "ASC"> + | <ASSERTION: "ASSERTION"> + | <ASSIGNMENT: "ASSIGNMENT"> + | <ATTRIBUTE: "ATTRIBUTE"> + | <ATTRIBUTES: "ATTRIBUTES"> + | <BEFORE: "BEFORE"> + | <BERNOULLI: "BERNOULLI"> + | <BREADTH: "BREADTH"> + | <C: "C"> + | <CASCADE: "CASCADE"> + | <CATALOG: "CATALOG"> + | <CATALOG_NAME: "CATALOG_NAME"> + | <CHAIN: "CHAIN"> + | <CHARACTER_SET_CATALOG: "CHARACTER_SET_CATALOG"> + | <CHARACTER_SET_NAME: "CHARACTER_SET_NAME"> + | <CHARACTER_SET_SCHEMA: "CHARACTER_SET_SCHEMA"> + | <CHARACTERISTICS: "CHARACTERISTICS"> + | <CHARACTERS: "CHARACTERS"> + | <CLASS_ORIGIN: "CLASS_ORIGIN"> + | <COBOL: "COBOL"> + | <COLLATION: "COLLATION"> + | <COLLATION_CATALOG: "COLLATION_CATALOG"> + | <COLLATION_NAME: "COLLATION_NAME"> + | <COLLATION_SCHEMA: "COLLATION_SCHEMA"> + | <COLUMN_NAME: "COLUMN_NAME"> + | <COMMAND_FUNCTION: "COMMAND_FUNCTION"> + | <COMMAND_FUNCTION_CODE: "COMMAND_FUNCTION_CODE"> + | <COMMITTED: "COMMITTED"> + | <CONDITION_NUMBER: "CONDITION_NUMBER"> + | <CONNECTION: "CONNECTION"> + | <CONNECTION_NAME: "CONNECTION_NAME"> + | <CONSTRAINT_CATALOG: "CONSTRAINT_CATALOG"> + | <CONSTRAINT_NAME: "CONSTRAINT_NAME"> + | <CONSTRAINT_SCHEMA: "CONSTRAINT_SCHEMA"> + | <CONSTRAINTS: "CONSTRAINTS"> + | <CONSTRUCTOR: "CONSTRUCTOR"> + | <CONTAINS: "CONTAINS"> + | <CONTINUE: "CONTINUE"> + | <CURSOR_NAME: "CURSOR_NAME"> + | <DATA: "DATA"> + | <DATETIME_INTERVAL_CODE: "DATETIME_INTERVAL_CODE"> + | <DATETIME_INTERVAL_PRECISION: "DATETIME_INTERVAL_PRECISION"> + | <DEFAULTS: "DEFAULTS"> + | <DEFERRABLE: "DEFERRABLE"> + | <DEFERRED: "DEFERRED"> + | <DEFINED: "DEFINED"> + | <DEFINER: "DEFINER"> + | <DEGREE: "DEGREE"> + | <DEPTH: "DEPTH"> + | <DERIVED: "DERIVED"> + | <DESC: "DESC"> + | <DESCRIPTOR: "DESCRIPTOR"> + | <DIAGNOSTICS: "DIAGNOSTICS"> + | <DISPATCH: "DISPATCH"> + | <DOMAIN: "DOMAIN"> + | <DYNAMIC_FUNCTION: "DYNAMIC_FUNCTION"> + | <DYNAMIC_FUNCTION_CODE: "DYNAMIC_FUNCTION_CODE"> + | <ENFORCED: "ENFORCED"> + | <EQUALS: "EQUALS"> + | <EXCLUDE: "EXCLUDE"> + | <EXCLUDING: "EXCLUDING"> + | <EXPRESSION: "EXPRESSION"> + | <FINAL: "FINAL"> + | <FIRST: "FIRST"> + | <FLAG: "FLAG"> + | <FOLLOWING: "FOLLOWING"> + | <FORTRAN: "FORTRAN"> + | <FOUND: "FOUND"> + | <G: "G"> + | <GENERAL: "GENERAL"> + | <GENERATED: "GENERATED"> + | <GO: "GO"> + | <GOTO: "GOTO"> + | <GRANTED: "GRANTED"> + | <HIERARCHY: "HIERARCHY"> + | <IF: "IF"> // Non-standard + | <IGNORE: "IGNORE"> + | <IMMEDIATE: "IMMEDIATE"> + | <IMPLEMENTATION: "IMPLEMENTATION"> + | <INCLUDING: "INCLUDING"> + | <INCREMENT: "INCREMENT"> + | <INITIALLY: "INITIALLY"> + | <INPUT: "INPUT"> + | <INSTANCE: "INSTANCE"> + | <INSTANTIABLE: "INSTANTIABLE"> + | <INSTEAD: "INSTEAD"> + | <INVOKER: "INVOKER"> + | <ISOLATION: "ISOLATION"> + | <K: "K"> + | <KEY: "KEY"> + | <KEY_MEMBER: "KEY_MEMBER"> + | <KEY_TYPE: "KEY_TYPE"> + | <LAST: "LAST"> + | <LENGTH: "LENGTH"> + | <LEVEL: "LEVEL"> + | <LOCATOR: "LOCATOR"> + | <M: "M"> + | <MAP: "MAP"> + | <MATCHED: "MATCHED"> + | <MAXVALUE: "MAXVALUE"> + | <MESSAGE_LENGTH: "MESSAGE_LENGTH"> + | <MESSAGE_OCTET_LENGTH: "MESSAGE_OCTET_LENGTH"> + | <MESSAGE_TEXT: "MESSAGE_TEXT"> + | <MINVALUE: "MINVALUE"> + | <MORE_: "MORE"> + | <MUMPS: "MUMPS"> + | <NAMES: "NAMES"> + | <NESTING: "NESTING"> + | <NEXT: "NEXT"> + | <NFC: "NFC"> + | <NFD: "NFD"> + | <NFKC: "NFKC"> + | <NFKD: "NFKD"> + | <NORMALIZED: "NORMALIZED"> + | <NULLABLE: "NULLABLE"> + | <NULLS: "NULLS"> + | <NUMBER: "NUMBER"> + | <OBJECT: "OBJECT"> + | <OCTETS: "OCTETS"> + | <OPTION: "OPTION"> + | <OPTIONS: "OPTIONS"> + | <ORDERING: "ORDERING"> + | <ORDINALITY: "ORDINALITY"> + | <OTHERS: "OTHERS"> + | <OUTPUT: "OUTPUT"> + | <OVERRIDING: "OVERRIDING"> + | <P: "P"> + | <PAD: "PAD"> + | <PARAMETER_MODE: "PARAMETER_MODE"> + | <PARAMETER_NAME: "PARAMETER_NAME"> + | <PARAMETER_ORDINAL_POSITION: "PARAMETER_ORDINAL_POSITION"> + | <PARAMETER_SPECIFIC_CATALOG: "PARAMETER_SPECIFIC_CATALOG"> + | <PARAMETER_SPECIFIC_NAME: "PARAMETER_SPECIFIC_NAME"> + | <PARAMETER_SPECIFIC_SCHEMA: "PARAMETER_SPECIFIC_SCHEMA"> + | <PARTIAL: "PARTIAL"> + | <PASCAL: "PASCAL"> + | <PATH: "PATH"> + | <PLACING: "PLACING"> + | <PLI: "PLI"> + | <PRECEDING: "PRECEDING"> + | <PRESERVE: "PRESERVE"> + | <PRIOR: "PRIOR"> + | <PRIVILEGES: "PRIVILEGES"> + | <PROPERTIES: "PROPERTIES"> // Non-standard + | <PUBLIC: "PUBLIC"> + | <READ: "READ"> + | <RELATIVE: "RELATIVE"> + | <REPEATABLE: "REPEATABLE"> + | <RESPECT: "RESPECT"> + | <RESTART: "RESTART"> + | <RESTRICT: "RESTRICT"> + | <RETURNED_CARDINALITY: "RETURNED_CARDINALITY"> + | <RETURNED_LENGTH: "RETURNED_LENGTH"> + | <RETURNED_OCTET_LENGTH: "RETURNED_OCTET_LENGTH"> + | <RETURNED_SQLSTATE: "RETURNED_SQLSTATE"> + | <ROLE: "ROLE"> + | <ROUTINE: "ROUTINE"> + | <ROUTINE_CATALOG: "ROUTINE_CATALOG"> + | <ROUTINE_NAME: "ROUTINE_NAME"> + | <ROUTINE_SCHEMA: "ROUTINE_SCHEMA"> + | <ROW_COUNT: "ROW_COUNT"> + | <SCALE: "SCALE"> + | <SCHEMA: "SCHEMA"> + | <SCHEMA_NAME: "SCHEMA_NAME"> + | <SCOPE_CATALOG: "SCOPE_CATALOG"> + | <SCOPE_NAME: "SCOPE_NAME"> + | <SCOPE_SCHEMA: "SCOPE_SCHEMA"> + | <SECTION: "SECTION"> + | <SECURITY: "SECURITY"> + | <SELF: "SELF"> + | <SEQUENCE: "SEQUENCE"> + | <SERIALIZABLE: "SERIALIZABLE"> + | <SERVER_NAME: "SERVER_NAME"> + | <SESSION: "SESSION"> + | <SETS: "SETS"> + | <SIMPLE: "SIMPLE"> + | <SIZE: "SIZE"> + | <SOURCE: "SOURCE"> + | <SPACE: "SPACE"> + | <SPECIFIC_NAME: "SPECIFIC_NAME"> + | <STATE: "STATE"> + | <STATEMENT: "STATEMENT"> + | <STRUCTURE: "STRUCTURE"> + | <STYLE: "STYLE"> + | <SUBCLASS_ORIGIN: "SUBCLASS_ORIGIN"> + | <T: "T"> + | <TABLE_NAME: "TABLE_NAME"> + | <TEMPORARY: "TEMPORARY"> + | <TIES: "TIES"> + | <TOP_LEVEL_COUNT: "TOP_LEVEL_COUNT"> + | <TRANSACTION: "TRANSACTION"> + | <TRANSACTION_ACTIVE: "TRANSACTION_ACTIVE"> + | <TRANSACTIONS_COMMITTED: "TRANSACTIONS_COMMITTED"> + | <TRANSACTIONS_ROLLED_BACK: "TRANSACTIONS_ROLLED_BACK"> + | <TRANSFORM: "TRANSFORM"> + | <TRANSFORMS: "TRANSFORMS"> + | <TRIGGER_CATALOG: "TRIGGER_CATALOG"> + | <TRIGGER_NAME: "TRIGGER_NAME"> + | <TRIGGER_SCHEMA: "TRIGGER_SCHEMA"> + | <TRY_CAST: "TRY_CAST"> // Non-standard + | <TYPE: "TYPE"> + | <UNBOUNDED: "UNBOUNDED"> + | <UNCOMMITTED: "UNCOMMITTED"> + | <UNDER: "UNDER"> + | <UNNAMED: "UNNAMED"> + | <USAGE: "USAGE"> + | <USER_DEFINED_TYPE_CATALOG: "USER_DEFINED_TYPE_CATALOG"> + | <USER_DEFINED_TYPE_CODE: "USER_DEFINED_TYPE_CODE"> + | <USER_DEFINED_TYPE_NAME: "USER_DEFINED_TYPE_NAME"> + | <USER_DEFINED_TYPE_SCHEMA: "USER_DEFINED_TYPE_SCHEMA"> + | <VIEW: "VIEW"> + | <WORK: "WORK"> + | <WRITE: "WRITE"> + | <ZONE: "ZONE"> + + + // Non-standard + // Changed the following reserved words into non-reserved one as lot of users use them as identifiers. + | <ABS: "ABS"> + | <ALL: "ALL"> + | <ARRAY_AGG: "ARRAY_AGG"> + | <AT: "AT"> + | <AVG: "AVG"> + | <BLOB: "BLOB"> + | <BOTH: "BOTH"> + | <CARDINALITY: "CARDINALITY"> + | <CLOSE: "CLOSE"> + | <COLUMN: "COLUMN"> + | <CONDITION: "CONDITION"> + | <COUNT: "COUNT"> + | <CUBE: "CUBE"> + | <CURRENT: "CURRENT"> + | <CURRENT_CATALOG: "CURRENT_CATALOG"> + | <CURRENT_DATE: "CURRENT_DATE"> + | <CURRENT_DEFAULT_TRANSFORM_GROUP: "CURRENT_DEFAULT_TRANSFORM_GROUP"> + | <CURRENT_PATH: "CURRENT_PATH"> + | <CURRENT_ROLE: "CURRENT_ROLE"> + | <CURRENT_SCHEMA: "CURRENT_SCHEMA"> + | <CURRENT_TIME: "CURRENT_TIME"> + | <CURRENT_TIMESTAMP: "CURRENT_TIMESTAMP"> + | <CURRENT_TRANSFORM_GROUP_FOR_TYPE: "CURRENT_TRANSFORM_GROUP_FOR_TYPE"> + | <CURRENT_USER: "CURRENT_USER"> + | <CURSOR: "CURSOR"> + | <CYCLE: "CYCLE"> + | <DATE: "DATE"> + | <DAY: "DAY"> + | <DAYS: "DAYS"> + | <DEC: "DEC"> + | <DYNAMIC: "DYNAMIC"> + | <EXP: "EXP"> + | <EXTERNAL: "EXTERNAL"> + | <FILTER: "FILTER"> + | <FLOOR: "FLOOR"> + | <FREE: "FREE"> + | <FUNCTION: "FUNCTION"> + | <GLOBAL: "GLOBAL"> + | <HOLD: "HOLD"> + | <HOUR: "HOUR"> + | <HOURS: "HOURS"> + | <IDENTITY: "IDENTITY"> + | <INDICATOR: "INDICATOR"> + | <INTERSECTION: "INTERSECTION"> + | <INTERVAL: "INTERVAL"> + | <LANGUAGE: "LANGUAGE"> + | <LEAD: "LEAD"> + | <LOCAL: "LOCAL"> + | <LOWER: "LOWER"> + | <MAX: "MAX"> + | <MERGE: "MERGE"> + | <METHOD: "METHOD"> + | <MIN: "MIN"> + | <MINUTE: "MINUTE"> + | <MINUTES: "MINUTES"> + | <MOD: "MOD"> + | <MODULE: "MODULE"> + | <MONTH: "MONTH"> + | <MONTHS: "MONTHS"> + | <NAME: "NAME"> + | <NEW: "NEW"> + | <NONE: "NONE"> + | <OCCURRENCE: "OCCURRENCE"> + | <OFFSET: "OFFSET"> + | <OLD: "OLD"> + | <OPEN: "OPEN"> + | <PARTITION: "PARTITION"> + | <POSITION: "POSITION"> + | <POWER: "POWER"> + | <PRECISION: "PRECISION"> + | <RANGE: "RANGE"> + | <RANK: "RANK"> + | <READS: "READS"> + | <REF: "REF"> + | <REFERENCES: "REFERENCES"> + | <RELEASE: "RELEASE"> + | <RESULT: "RESULT"> + | <RETURNS: "RETURNS"> + | <ROLLUP: "ROLLUP"> + | <ROW: "ROW"> + | <ROW_NUMBER: "ROW_NUMBER"> + | <ROWS: "ROWS"> + | <SAVEPOINT: "SAVEPOINT"> + | <SCOPE: "SCOPE"> + | <SEARCH: "SEARCH"> + | <SECOND: "SECOND"> + | <SECONDS: "SECONDS"> + | <SESSION_USER: "SESSION_USER"> + | <SQL: "SQL"> + | <START: "START"> + | <STATIC: "STATIC"> + | <SUM: "SUM"> + | <SYSTEM: "SYSTEM"> + | <TIME: "TIME"> + | <TIMESTAMP: "TIMESTAMP"> + | <TIMEZONE_HOUR: "TIMEZONE_HOUR"> + | <TIMEZONE_MINUTE: "TIMEZONE_MINUTE"> + | <TRIGGER: "TRIGGER"> + | <TRUNCATE: "TRUNCATE"> + | <UNKNOWN: "UNKNOWN"> + | <UPDATE: "UPDATE"> + | <UPPER: "UPPER"> + | <USER: "USER"> + | <VALUE: "VALUE"> + | <VALUES: "VALUES"> + | <VERSION: "VERSION"> + | <VERSIONS: "VERSIONS"> + | <WINDOW: "WINDOW"> + | <YEAR: "YEAR"> + | <YEARS: "YEARS"> + + // Presto tokens + | <COMMENT: "COMMENT"> + | <DEFAULT_: "DEFAULT"> + | <USE: "USE"> + | <LIMIT: "LIMIT"> + | "NUMERIC_HISTOGRAM" + | <REPLACE: "REPLACE"> + | "HISTOGRAM" + | "APPROEX_PERCENTILE" + | "MAP_AGG" + | "SET_AGG" + | "MAP_UNION" + | <COUNT_QUOTED: "\"COUNT\""> +} + +<UNREACHABLE>SKIP: +{ + // Dummy token to get a value range. Will never be mached: + <MAX_NON_RESERVED_WORD: "MAX NON RESERVED WORD"> +} +<UNREACHABLE>SKIP: +{ + // Dummy token to get a value range. Will never be mached. And it should be here positionally - before the first non reserved word + <MIN_RESERVED_WORD: "MIN RESERVED WORD"> +} + +// reserved words +TOKEN: +{ + <ALLOCATE: "ALLOCATE"> + | <ALTER: "ALTER"> + | <AND: "AND"> + | <ANY: "ANY"> + | <ARE: "ARE"> + | <ARRAY: "ARRAY"> + | <AS: "AS"> + | <ASENSITIVE: "ASENSITIVE"> + | <ASYMMETRIC: "ASYMMETRIC"> + | <ATOMIC: "ATOMIC"> + | <AUTHORIZATION: "AUTHORIZATION"> + | <BEGIN: "BEGIN"> + | <BETWEEN: "BETWEEN"> + | <BIGINT: "BIGINT"> + | <BINARY: "BINARY"> + | <BOOLEAN: "BOOLEAN"> + | <BY: "BY"> + | <CALL: "CALL"> + | <CALLED: "CALLED"> + | <CASCADED: "CASCADED"> + | <CASE: "CASE"> + | <CAST: "CAST"> + | <CEIL: "CEIL"> + | <CEILING: "CEILING"> + | <CHAR: "CHAR"> + | <CHAR_LENGTH: "CHAR_LENGTH"> + | <CHARACTER: "CHARACTER"> + | <CHARACTER_LENGTH: "CHARACTER_LENGTH"> + | <CHECK: "CHECK"> + | <CLOB: "CLOB"> + | <COALESCE: "COALESCE"> + | <COLLATE: "COLLATE"> + | <COLLECT: "COLLECT"> + | <COMMIT: "COMMIT"> + | <CONNECT: "CONNECT"> + | <CONSTRAINT: "CONSTRAINT"> + | <CONVERT: "CONVERT"> + | <CORR: "CORR"> + | <CORRESPONDING: "CORRESPONDING"> + | <COVAR_POP: "COVAR_POP"> + | <COVAR_SAMP: "COVAR_SAMP"> + | <CREATE: "CREATE"> + | <CROSS: "CROSS"> + | <CUME_DIST: "CUME_DIST"> + | <DEALLOCATE: "DEALLOCATE"> + | <DECIMAL: "DECIMAL"> + | <DECLARE: "DECLARE"> + | <DELETE: "DELETE"> + | <DENSE_RANK: "DENSE_RANK"> + | <DEREF: "DEREF"> + | <DESCRIBE: "DESCRIBE"> + | <DETERMINISTIC: "DETERMINISTIC"> + | <DISCONNECT: "DISCONNECT"> + | <DISTINCT: "DISTINCT"> + | <DOUBLE: "DOUBLE"> + | <DROP: "DROP"> + | <EACH: "EACH"> + | <ELEMENT: "ELEMENT"> + | <ELSE: "ELSE"> + | <END: "END"> + | <END_EXEC: "END-EXEC"> + | <ESCAPE: "ESCAPE"> + | <EVERY: "EVERY"> + | <EXCEPT: "EXCEPT"> + | <EXEC: "EXEC"> + | <EXECUTE: "EXECUTE"> + | <EXISTS: "EXISTS"> + | <EXTRACT: "EXTRACT"> + | <FALSE: "FALSE"> + | <FETCH: "FETCH"> + | <FIRST_VALUE: "FIRST_VALUE"> + | <FLOAT: "FLOAT"> + | <FOR: "FOR"> + | <FOREIGN: "FOREIGN"> + | <FOREVER: "FOREVER"> + | <FROM: "FROM"> + | <FULL: "FULL"> + | <FUSION: "FUSION"> + | <GET: "GET"> + | <GRANT: "GRANT"> + | <GROUP: "GROUP"> + | <GROUPING: "GROUPING"> + | <HAVING: "HAVING"> + | <IN: "IN"> + | <INNER: "INNER"> + | <INOUT: "INOUT"> + | <INSENSITIVE: "INSENSITIVE"> + | <INSERT: "INSERT"> + | <INT: "INT"> + | <INTEGER: "INTEGER"> + | <INTERSECT: "INTERSECT"> + | <INTO: "INTO"> + | <IS: "IS"> + | <JOIN: "JOIN"> + | <KEEP: "KEEP"> + | <LAG: "LAG"> + | <LARGE: "LARGE"> + | <LAST_VALUE: "LAST_VALUE"> + | <LATERAL: "LATERAL"> + | <LEADING: "LEADING"> + | <LEFT: "LEFT"> + | <LIKE: "LIKE"> + | <LIKE_REGEX: "LIKE_REGEX"> + | <LN: "LN"> + | <LOCALTIME: "LOCALTIME"> + | <LOCALTIMESTAMP: "LOCALTIMESTAMP"> + | <MATCH: "MATCH"> + | <MAX_CARDINALITY: "MAX_CARDINALITY"> + | <MEMBER: "MEMBER"> + | <MODIFIES: "MODIFIES"> + | <MULTISET: "MULTISET"> + | <NATIONAL: "NATIONAL"> + | <NATURAL: "NATURAL"> + | <NCHAR: "NCHAR"> + | <NCLOB: "NCLOB"> + | <NO: "NO"> + | <NORMALIZE: "NORMALIZE"> + | <NOT: "NOT"> + | <NTH_VALUE: "NTH_VALUE"> + | <NTILE: "NTILE"> + | <NULL_: "NULL"> + | <NULLIF: "NULLIF"> + | <NUMERIC: "NUMERIC"> + | <OCTET_LENGTH: "OCTET_LENGTH"> + | <OCCURRENCES_REGEX: "OCCURRENCES_REGEX"> + | <OF: "OF"> + | <ON: "ON"> + | <ONLY: "ONLY"> + | <OR: "OR"> + | <ORDER: "ORDER"> + | <OUT: "OUT"> + | <OUTER: "OUTER"> + | <OVER: "OVER"> + | <OVERLAPS: "OVERLAPS"> + | <OVERLAY: "OVERLAY"> + | <PARAMETER: "PARAMETER"> + | <PERCENT_RANK: "PERCENT_RANK"> + | <PERCENTILE_CONT: "PERCENTILE_CONT"> + | <PERCENTILE_DISC: "PERCENTILE_DISC"> + | <POSITION_REGEX: "POSITION_REGEX"> + | <PREPARE: "PREPARE"> + | <PRIMARY: "PRIMARY"> + | <PROCEDURE: "PROCEDURE"> + | <REAL: "REAL"> + | <RECURSIVE: "RECURSIVE"> + | <REFERENCING: "REFERENCING"> + | <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"> + | <RETURN: "RETURN"> + | <REVOKE: "REVOKE"> + | <RIGHT: "RIGHT"> + | <ROLLBACK: "ROLLBACK"> + | <SCROLL: "SCROLL"> + | <SELECT: "SELECT"> + | <SENSITIVE: "SENSITIVE"> + | <SET: "SET"> + | <SIMILAR: "SIMILAR"> + | <SMALLINT: "SMALLINT"> + | <SOME: "SOME"> + | <SPECIFIC: "SPECIFIC"> + | <SPECIFICTYPE: "SPECIFICTYPE"> + | <SQLEXCEPTION: "SQLEXCEPTION"> + | <SQLSTATE: "SQLSTATE"> + | <SQLWARNING: "SQLWARNING"> + | <SQRT: "SQRT"> + | <STDDEV_POP: "STDDEV_POP"> + | <STDDEV_SAMP: "STDDEV_SAMP"> + | <SUBMULTISET: "SUBMULTISET"> + | <SUBSTRING: "SUBSTRING"> + | <SUBSTRING_REGEX: "SUBSTRING_REGEX"> + | <SYMMETRIC: "SYMMETRIC"> + | <SYSTEM_USER: "SYSTEM_USER"> + | <TABLE: "TABLE"> + | <TABLESAMPLE: "TABLESAMPLE"> + | <THEN: "THEN"> + | <TO: "TO"> + | <TRAILING: "TRAILING"> + | <TRANSLATE: "TRANSLATE"> + | <TRANSLATE_REGEX: "TRANSLATE_REGEX"> + | <TRANSLATION: "TRANSLATION"> + | <TREAT: "TREAT"> + | <TRIM: "TRIM"> + | <TRIM_ARRAY: "TRIM_ARRAY"> + | <TRUE: "TRUE"> + | <UESCAPE: "UESCAPE"> + | <UNION: "UNION"> + | <UNIQUE: "UNIQUE"> + | <UNNEST: "UNNEST"> + | <USING: "USING"> + | <VAR_POP: "VAR_POP"> + | <VAR_SAMP: "VAR_SAMP"> + | <VARBINARY: "VARBINARY"> + | <VARCHAR: "VARCHAR"> + | <VARYING: "VARYING"> + | <VERSIONING: "VERSIONING"> + | <WHEN: "WHEN"> + | <WHENEVER: "WHENEVER"> + | <WHERE: "WHERE"> + | <WIDTH_BUCKET: "WIDTH_BUCKET"> + | <WITH: "WITH"> + | <WITHIN: "WITHIN"> + | <WITHOUT: "WITHOUT"> +} + +<UNREACHABLE>SKIP: +{ + // Dummy token to get a value range. Will never be mached: + <MAX_RESERVED_WORD: "MAX RESERVED WORD"> +} + +//TODO(kaikalur): create a separate section for all special chars +TOKEN: +{ + <semicolon: ";"> + | <lparen: "("> + | <rparen: ")"> + | <underscore: "_"> +} +void left_bracket_or_trigraph(): +{} +{ + "[" + | "??(" +} + +void right_bracket_or_trigraph(): +{} +{ + "]" + | "??)" +} + +void literal(): +{} +{ + signed_numeric_literal() + | general_literal() +} + +void signed_numeric_literal(): +{} +{ + unsigned_numeric_literal() + | ( ( "+" | "-" ) unsigned_numeric_literal() ) #UnaryExpression(1) +} + +void unsigned_literal(): +{} +{ + unsigned_numeric_literal() + | general_literal() +} + +void unsigned_numeric_literal() #UnsignedNumericLiteral: +{} +{ + exact_numeric_literal() + | <approximate_numeric_literal> +} + +void exact_numeric_literal(): +{} +{ + <unsigned_integer> + | <float_literal> +} + +void general_literal(): +{} +{ + character_string_literal() + | <national_character_string_literal> + | Unicode_character_string_literal() + | <binary_string_literal> + | datetime_literal() + | interval_literal() + | boolean_literal() +} + + +void character_string_literal() #CharStringLiteral: +{} +{ +/* + ( "_" character_set_specification() )? "'" ( <character_representation> )* "'" + ( //TODO(kaikalur) - fixit <separator> + "'" ( <character_representation> )* "'" + )* +*/ + ( "_" character_set_specification() )? ( <quoted_string> )+ +} + +void Unicode_character_string_literal() #CharStringLiteral: +{} +{ + ( "_" character_set_specification() )? <unicode_literal> +} + +void datetime_literal(): +{} +{ + date_literal() + | time_literal() + | timestamp_literal() +} + +void date_literal() #DateLiteral: +{} +{ + "DATE" character_string_literal() // TODO(kaikalur): fix it <date_string> +} + +void time_literal() #TimeLiteral: +{} +{ + "TIME" character_string_literal() // TOD(sreeni): fixit <time_string> +} + +void timestamp_literal() #TimestampLiteral: +{} +{ + "TIMESTAMP" character_string_literal() // TOD(sreeni): fixit <timestamp_string> +} + +void interval_literal() #IntervalLiteral: +{} +{ + "INTERVAL" [ "+" | "-" ] + character_string_literal() // TOD(sreeni): fixit interval_string() + interval_qualifier() +} + +void boolean_literal(): +{} +{ + ( + "TRUE" + | "FALSE" + ) #BooleanLiteral + | "UNKNOWN" #Unsupported +} + +void identifier() #Identifier: +{} +{ + ( + actual_identifier() + | weird_identifiers() // Presto allow _ and "" as an identifier names - yikes! + ) + + [ identifier_suffix_chain() ] +} + +void actual_identifier(): +{} +{ + <regular_identifier> + | <delimited_identifier> + | <Unicode_delimited_identifier> + | LOOKAHEAD(1, { IsIdNonReservedWord() }) non_reserved_word() +} + +void table_name() #TableName: +{} +{ + //TODO(kaikalur): For parsing convenience: local_or_schema_qualified_name() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void schema_name() #SchemaName: +{} +{ + //TODO(kaikalur): For parsing convenience: [ LOOKAHEAD(2) catalog_name() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void catalog_name() #CatalogName: +{} +{ + identifier() +} + +void schema_qualified_name() #SchemaQualifiedName: +{} +{ + //TODO(kaikalur): For parsing convenience: [ LOOKAHEAD(2) schema_name() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void local_or_schema_qualified_name(): +{} +{ + //TODO(kaikalur): For parsing convenience: [ LOOKAHEAD(2) local_or_schema_qualifier() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void local_or_schema_qualifier(): +{} +{ + local_qualifier() + | schema_name() +} + +void cursor_name(): +{} +{ + // TODO(kaikalur): fixit --[ local_qualifier() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void local_qualifier(): +{} +{ + "MODULE" +} + +void host_parameter_name(): +{} +{ + ":" identifier() +} + +void external_routine_name(): +{} +{ + identifier() + | ( character_string_literal() )#Unsupported +} + +void character_set_name() #Unsupported: +{} +{ + [ schema_name() "." ] <SQL_language_identifier> +} + +void schema_resolved_user_defined_type_name(): +{} +{ + user_defined_type_name() +} + +void user_defined_type_name(): +{} +{ + // TODO(kaikalur): fixit -- [ schema_name() "." ] identifier() + // To elminate complexlookahead, we make the identitifer chain to flow left to right + identifier_chain() +} + +void SQL_identifier(): +{} +{ + identifier() + | extended_identifier() +} + +void extended_identifier(): +{} +{ + [ scope_option() ] simple_value_specification() +} + +void dynamic_cursor_name(): +{} +{ + cursor_name() + | extended_cursor_name() +} + +void extended_cursor_name(): +{} +{ + [ scope_option() ] simple_value_specification() +} + +void descriptor_name(): +{} +{ + identifier() + | extended_descriptor_name() +} + +void extended_descriptor_name(): +{} +{ + [ scope_option() ] simple_value_specification() +} + +void scope_option() #Unsupported: +{} +{ + "GLOBAL" + | "LOCAL" +} + +void data_type(): +{} +{ + ( + predefined_type() + | row_type() + | reference_type() + | presto_generic_type() + | path_resolved_user_defined_type_name() + ) + + [ collection_type() ] +} + +void predefined_type() #PredefinedType: +{} +{ + character_string_type() [ "CHARACTER" "SET" character_set_specification() ] + [ collate_clause() ] + | national_character_string_type() [ collate_clause() ] + | binary_string_type() + | numeric_type() + | boolean_type() + | datetime_type() + | interval_type() +} + +void character_string_type(): +{} +{ + "CHARACTER" [ "(" character_length() ")" ] + | "CHAR" [ "(" character_length() ")" ] + | "CHARACTER" "VARYING" "(" character_length() ")" + | "CHAR" "VARYING" "(" character_length() ")" + | "VARCHAR" [ "(" character_length() ")" ] // Non-standard length optional + | character_large_object_type() +} + +void character_large_object_type(): +{} +{ + "CHARACTER" "LARGE" "OBJECT" [ "(" character_large_object_length() ")" ] + | "CHAR" "LARGE" "OBJECT" [ "(" character_large_object_length() ")" ] + | "CLOB" [ "(" character_large_object_length() ")" ] +} + +void national_character_string_type(): +{} +{ + "NATIONAL" "CHARACTER" [ "(" character_length() ")" ] + | "NATIONAL" "CHAR" [ "(" character_length() ")" ] + | "NCHAR" [ "(" character_length() ")" ] + | "NATIONAL" "CHARACTER" "VARYING" "(" character_length() ")" + | "NATIONAL" "CHAR" "VARYING" "(" character_length() ")" + | "NCHAR" "VARYING" "(" character_length() ")" + | national_character_large_object_type() +} + +void national_character_large_object_type(): +{} +{ + "NATIONAL" "CHARACTER" "LARGE" "OBJECT" [ "(" character_large_object_length() ")" ] + | "NCHAR" "LARGE" "OBJECT" [ "(" character_large_object_length() ")" ] + | "NCLOB" [ "(" character_large_object_length() ")" ] +} + +void binary_string_type(): +{} +{ + "BINARY" [ "(" <unsigned_integer> ")" ] + | "BINARY" "VARYING" "(" <unsigned_integer> ")" + | "VARBINARY" "(" <unsigned_integer> ")" + | varbinary() + | binary_large_object_string_type() +} + +void binary_large_object_string_type(): +{} +{ + "BINARY" "LARGE" "OBJECT" [ "(" large_object_length() ")" ] + | "BLOB" [ "(" large_object_length() ")" ] +} + +void numeric_type(): +{} +{ + exact_numeric_type() + | approximate_numeric_type() +} + +void exact_numeric_type(): +{} +{ + "NUMERIC" [ "(" <unsigned_integer> [ "," <unsigned_integer> ] ")" ] + | "DECIMAL" [ "(" <unsigned_integer> [ "," <unsigned_integer> ] ")" ] + | "DEC" [ "(" <unsigned_integer> [ "," <unsigned_integer> ] ")" ] + | "SMALLINT" + | "INTEGER" + | "INT" + | "BIGINT" +} + +void approximate_numeric_type(): +{} +{ + "FLOAT" [ "(" <unsigned_integer> ")" ] + | "REAL" + | "DOUBLE" + [ "PRECISION" ] // Non-standard +} + +void character_length(): +{} +{ + <unsigned_integer> [ char_length_units() ] +} + +void large_object_length(): +{} +{ + <unsigned_integer> [ <multiplier> ] + | <large_object_length_token> +} + +void character_large_object_length(): +{} +{ + large_object_length() [ char_length_units() ] +} + +void char_length_units(): +{} +{ + "CHARACTERS" + | "OCTETS" +} + +void boolean_type(): +{} +{ + "BOOLEAN" +} + +void datetime_type(): +{} +{ + "DATE" + | "TIME" [ "(" <unsigned_integer> ")" ] [ with_or_without_time_zone() ] + | "TIMESTAMP" [ "(" <unsigned_integer> ")" ] + [ with_or_without_time_zone() ] +} + +void with_or_without_time_zone(): +{} +{ + "WITH" "TIME" "ZONE" + | "WITHOUT" "TIME" "ZONE" +} + +void interval_type() #Unsupported: +{} +{ + "INTERVAL" interval_qualifier() +} + +void row_type() #RowType: +{} +{ + "ROW" row_type_body() +} + +void row_type_body(): +{} +{ + "(" field_definition() ( "," field_definition() )* ")" +} + +void reference_type() #Unsupported: +{} +{ + "REF" "(" referenced_type() ")" [ scope_clause() ] +} + +void scope_clause(): +{} +{ + "SCOPE" table_name() +} + +void referenced_type(): +{} +{ + path_resolved_user_defined_type_name() +} + +void path_resolved_user_defined_type_name(): +{} +{ + user_defined_type_name() +} + +void collection_type(): +{} +{ + array_type() + | multiset_type() +} + +void array_type() #ArrayType(): +{} +{ + { PushNode(PopNode()); } + "ARRAY" + [ left_bracket_or_trigraph() <unsigned_integer> right_bracket_or_trigraph() ] +} + +void multiset_type() #Unsupported(): +{} +{ + { PushNode(PopNode()); } + "MULTISET" +} + +void field_definition() #FieldDefinition: +{} +{ + identifier() data_type() +} + +void value_expression_primary(): +{} +{ + parenthesized_value_expression() + | nonparenthesized_value_expression_primary() +} + +void parenthesized_value_expression(): +{} +{ + ( "(" value_expression() + ( "," value_expression() )* // for row_value + ")" + ) #ParenthesizedExpression() + + ( primary_suffix() )* +} + +void nonparenthesized_value_expression_primary(): +{} +{ + contextually_typed_value_specification() + | ( + set_function_specification() + | subquery() + | case_expression() + | cast_specification() + | subtype_treatment() + | new_specification() + | reference_resolution() + | collection_value_constructor() + | multiset_element_reference() + | next_value_expression() + // | routine_invocation() -- handled by method invocation below + | window_function_type() + | "(" column_name_list() ")" // Non-standard + | unsigned_value_specification() + | column_reference() + ) + + ( primary_suffix() )* +} + +void primary_suffix(): +{} +{ + { PushNode(PopNode()); } + ( + field_reference() + | attribute_or_method_reference() + | method_invocation() + | window_function() + | array_element_reference() + | static_method_invocation() + ) +} + +void collection_value_constructor(): +{} +{ + array_value_constructor() + | multiset_value_constructor() +} + +void value_specification(): +{} +{ + literal() + | general_value_specification() +} + +void unsigned_value_specification(): +{} +{ + unsigned_literal() + | general_value_specification() +} + +void general_value_specification(): +{} +{ + identifier_chain() + | + ( + "CURRENT_USER" + | "USER" + ) #BuiltinValue + + | + ( + "?" + | current_collation_specification() + | "SESSION_USER" + | "SYSTEM_USER" + | "CURRENT_CATALOG" + | "CURRENT_PATH" + | "CURRENT_ROLE" + | "CURRENT_SCHEMA" + | "VALUE" + | "CURRENT_DEFAULT_TRANSFORM_GROUP" + | "CURRENT_TRANSFORM_GROUP_FOR_TYPE" path_resolved_user_defined_type_name() + ) #Unsupported + + //TODO(kaikalur): fixit + //| embedded_variable_specification() + //| host_parameter_specification() +} + +void simple_value_specification(): +{} +{ + literal() + | identifier_chain() + + // TODO(kaikalur): fix the next two + //| host_parameter_name() + //| embedded_variable_name() +} + +void target_specification() #Unsupported: +{} +{ + ( + identifier_chain() + | column_reference() + ) + + [ + target_array_element_specification() + | "?" + ] + + // TODO(kaikalur): fix the next two lines + //| embedded_variable_specification() + //| host_parameter_specification() +} + +void simple_target_specification() #Unsupported: +{} +{ + identifier_chain() + | column_reference() + + //TODO(kaikalur): fix the next two + //| embedded_variable_name() + //| host_parameter_name() +} + +void target_array_element_specification() #Unsupported: +{} +{ + left_bracket_or_trigraph() simple_value_specification() right_bracket_or_trigraph() +} + +void current_collation_specification() #Unsupported: +{} +{ + "COLLATION" "FOR" "(" string_value_expression() ")" +} + +void contextually_typed_value_specification(): +{} +{ + implicitly_typed_value_specification() + | ( "DEFAULT" )#Unsupported +} + +void implicitly_typed_value_specification(): +{} +{ + ( "NULL" )#NullLiteral + | empty_specification() +} + +void empty_specification(): +{} +{ + ( "ARRAY" left_bracket_or_trigraph() right_bracket_or_trigraph() )#ArrayLiteral + | ( "MULTISET" left_bracket_or_trigraph() right_bracket_or_trigraph() )#Unsupported +} + +void identifier_chain() #QualifiedName(>1): +{} +{ + identifier() ( "." identifier() )* +} + +void column_reference(): +{} +{ + identifier_chain() + | ( "MODULE" "." identifier() "." identifier() )#Unsupported +} + +void set_function_specification(): +{} +{ + aggregate_function() + | grouping_operation() +} + +void grouping_operation() #GroupingOperation: +{} +{ + "GROUPING" "(" column_reference() ( "," column_reference() )* ")" +} + +void window_function() #WindowFunction(2): +{} +{ + // TODO(kaikalur): fixit -- window_function_type() "OVER" window_name_or_specification() + "OVER" window_name_or_specification() +} + +void window_function_type() : +{} +{ + rank_function_type() "(" ")" + | ( "ROW_NUMBER" "(" ")" )#RowNumber + | aggregate_function() + | ntile_function() + | lead_or_lag_function() + | first_or_last_value_function() + | nth_value_function() +} + +void rank_function_type() #RankFunction: +{} +{ + "RANK" + | "DENSE_RANK" + | "PERCENT_RANK" + | "CUME_DIST" +} + +void ntile_function() #NtileFunction: +{} +{ + "NTILE" "(" number_of_tiles() ")" +} + +void number_of_tiles(): +{} +{ + // TODO(kaikalur) - generalize simple_value_specification() + value_expression() + | ( "?" )#Unsupported() +} + +void lead_or_lag_function() #LeadOrLag: +{} +{ + lead_or_lag() + "(" value_expression() + // Generalized below [ "," exact_numeric_literal() [ "," value_expression() ] ] + [ "," value_expression() [ "," value_expression() ] ] // Non-standard + ")" + [ null_treatment() ] +} + +void lead_or_lag(): +{} +{ + "LEAD" | "LAG" +} + +void null_treatment() #NullTreatment: +{} +{ + "RESPECT" "NULLS" | "IGNORE" "NULLS" +} + +void first_or_last_value_function() #FirstOrLastValueFunction: +{} +{ + first_or_last_value() "(" value_expression() ")" [ null_treatment() ] +} + +void first_or_last_value(): +{} +{ + "FIRST_VALUE" | "LAST_VALUE" +} + +void nth_value_function() #Unsupported: +{} +{ + "NTH_VALUE" "(" value_expression() "," nth_row() ")" [ from_first_or_last() ] [ null_treatment() ] +} + +void nth_row(): +{} +{ + simple_value_specification() + | ( "?" )#Unsupported +} + +void from_first_or_last(): +{} +{ + "FROM" "FIRST" + | "FROM" "LAST" +} + +void window_name_or_specification(): +{} +{ + in_line_window_specification() + | identifier() +} + +void in_line_window_specification(): +{} +{ + window_specification() +} + +void case_expression(): +{} +{ + case_abbreviation() + | case_specification() +} + +void case_abbreviation(): +{} +{ + ( "NULLIF" "(" value_expression() "," value_expression() ")" )#NullIf + | ( "COALESCE" "(" value_expression() ( "," value_expression() )+ ")" )#Coalesce +} + +void case_specification(): +{} +{ + simple_case() + | searched_case() +} + +void simple_case() #CaseExpression: +{} +{ + "CASE" case_operand() ( simple_when_clause() )+ [ else_clause() ] "END" +} + +void searched_case() #CaseExpression: +{} +{ + "CASE" ( searched_when_clause() )+ [ else_clause() ] "END" +} + +void simple_when_clause() #WhenClause: +{} +{ + "WHEN" when_operand_list() "THEN" result() +} + +void searched_when_clause() #WhenClause: +{} +{ + "WHEN" search_condition() "THEN" result() +} + +void else_clause() #ElseClause: +{} +{ + "ELSE" result() +} + +void case_operand(): +{} +{ + row_value_predicand() + | overlaps_predicate_part_1() +} + +void when_operand_list(): +{} +{ + when_operand() ( "," when_operand() )* +} + +void when_operand() #WhenOperand: +{} +{ + // We push a dummy operand so the binary expressions are built properly + ( { } )#SearchedCaseOperand(true) + ( + row_value_predicand() + | comparison_predicate_part_2() + | between_predicate_part_2() + | in_predicate_part_2() + | character_like_predicate_part_2() + | octet_like_predicate_part_2() + | similar_predicate_part_2() + | regex_like_predicate_part_2() + | null_predicate_part_2() + | quantified_comparison_predicate_part_2() + | normalized_predicate_part_2() + | match_predicate_part_2() + | overlaps_predicate_part_2() + | distinct_predicate_part_2() + | member_predicate_part_2() + | submultiset_predicate_part_2() + | set_predicate_part_2() + | type_predicate_part_2() + ) +} + +void result(): +{} +{ + value_expression() + | ( "NULL" )#NullLiteral +} + +void cast_specification() #CastExpression: +{} +{ + "CAST" "(" cast_operand() "AS" cast_target() ")" + | try_cast() +} + +void cast_operand(): +{} +{ + value_expression() + | implicitly_typed_value_specification() +} + +void cast_target(): +{} +{ + data_type() + | schema_qualified_name() +} + +void next_value_expression() #Unsupported: +{} +{ + "NEXT" "VALUE" "FOR" schema_qualified_name() +} + +void field_reference() #FieldReference(2): +{} +{ + // TODO(kaikalur): fixit -- value_expression_primary() "." identifier() + "." identifier() +} + +void subtype_treatment() #Unsupported: +{} +{ + "TREAT" "(" value_expression() "AS" target_subtype() ")" +} + +void target_subtype(): +{} +{ + path_resolved_user_defined_type_name() + | reference_type() +} + +void method_invocation(): +{} +{ + ( ( direct_invocation() #FunctionCall(2) ) [ { PushNode(PopNode()); } udaf_filter() #AggregationFunction(2) ] ) + //| direct_invocation() #FunctionCall(2) + | generalized_invocation() +} + +void direct_invocation(): +{} +{ + // TODO(kaikalur): fixit -- value_expression_primary() "." identifier() [ SQL_argument_list() ] + SQL_argument_list() +} + +void generalized_invocation() #FunctionCall(2): +{} +{ + // "(" value_expression_primary() "AS" data_type() ")" + ( "." identifier() )#QualifiedName(2) [ SQL_argument_list() ] +} + + +void static_method_invocation() #Unsupported: +{} +{ + // TODO(kaikalur): fixit - path_resolved_user_defined_type_name() "::" identifier() + "::" identifier() + [ SQL_argument_list() ] +} + +void new_specification() #Unsupported: +{} +{ + "NEW" path_resolved_user_defined_type_name() SQL_argument_list() +} + +void new_invocation() #Unused: +{} +{ + method_invocation() + | routine_invocation() +} + +void attribute_or_method_reference(): +{} +{ + // TODO(kaikalur): fixit -- value_expression_primary() "->" identifier() + // We treat everything as lambda for now. + // ( "->" identifier() [ SQL_argument_list() ] )#Lambda(>1) + ( lambda_body() )#Lambda(2) +} + +void dereference_operation() #Unsupported: +{} +{ + reference_value_expression() "->" identifier() +} + +void reference_resolution() #Unsupported: +{} +{ + "DEREF" "(" reference_value_expression() ")" +} + +void array_element_reference() #ArrayElement(2): +{} +{ + // TODO(kaikalur): fixit -- array_value_expression() + left_bracket_or_trigraph() value_expression() right_bracket_or_trigraph() +} + +void multiset_element_reference() #Unsupported: +{} +{ + "ELEMENT" "(" multiset_value_expression() ")" +} + +void value_expression(): +{} +{ + boolean_value_expression() + | common_value_expression() + | row_value_expression() +} + +void common_value_expression(): +{} +{ + numeric_value_expression() + | string_value_expression() + | datetime_value_expression() + | interval_value_expression() + | user_defined_type_value_expression() + | reference_value_expression() + | collection_value_expression() +} + +void user_defined_type_value_expression(): +{} +{ + value_expression_primary() +} + +void reference_value_expression(): +{} +{ + value_expression_primary() +} + +void collection_value_expression(): +{} +{ + array_value_expression() + | multiset_value_expression() +} + +void numeric_value_expression(): +{} +{ + term() + ( + { PushNode(PopNode()); } <PLUS: "+"> term() #AdditiveExpression(2) + | { PushNode(PopNode()); } <MINUS: "-"> term() #AdditiveExpression(2) + )* +} + +void term(): +{} +{ + factor() + ( + { PushNode(PopNode()); } <STAR: "*"> factor() #MultiplicativeExpression(2) + | { PushNode(PopNode()); } <DIV: "/"> factor() #MultiplicativeExpression(2) + | { PushNode(PopNode()); } percent_operator() factor() #MultiplicativeExpression(2) + )* +} + +void factor(): +{} +{ + ( ( "+" | "-" ) numeric_primary() )#UnaryExpression(1) + | numeric_primary() +} + +void numeric_primary(): +{} +{ + numeric_value_function() + | character_value_expression() +} + +void numeric_value_function() #BuiltinFunctionCall: +{} +{ + // Builtin function calls are weird in that the name is a keyword and then a ( expressions ) so we open a new scope and just make an ArgumentList + // so that it will be just like a FunctionCall + ( + position_expression() + | regex_occurrences_function() + | regex_position_expression() + | extract_expression() + | length_expression() + | cardinality_expression() + | max_cardinality_expression() + | absolute_value_expression() + | modulus_expression() + | natural_logarithm() + | exponential_function() + | power_function() + | square_root() + | floor_function() + | ceiling_function() + | width_bucket_function() + ) #ArgumentList(>0) +} + +void position_expression(): +{} +{ + character_position_expression() + | binary_position_expression() +} + +void regex_occurrences_function() #Unsupported: +{} +{ + "OCCURRENCES_REGEX" "(" + character_value_expression() [ "FLAG" character_value_expression() ] + "IN" character_value_expression() + [ "FROM" numeric_value_expression() ] + [ "USING" char_length_units() ] + ")" +} + +void regex_position_expression() #Unsupported: +{} +{ + "POSITION_REGEX" "(" + [ regex_position_start_or_after() ] + character_value_expression() [ "FLAG" character_value_expression() ] + "IN" character_value_expression() + [ "FROM" numeric_value_expression() ] + [ "USING" char_length_units() ] + [ "OCCURRENCE" numeric_value_expression() ] + [ "GROUP" numeric_value_expression() ] + ")" +} + +void regex_position_start_or_after(): +{} +{ + "START" + | "AFTER" +} + +void character_position_expression(): +{} +{ + "POSITION" "(" character_value_expression() "IN" character_value_expression() + [ ( "USING" char_length_units() ) #Unsupported ] ")" +} + +void binary_position_expression(): +{} +{ + "POSITION" "(" binary_value_expression() "IN" binary_value_expression() ")" +} + +void length_expression(): +{} +{ + char_length_expression() + | octet_length_expression() +} + +void char_length_expression(): +{} +{ + ( "CHAR_LENGTH" | "CHARACTER_LENGTH" ) "(" character_value_expression() + [ ( "USING" char_length_units() ) #Unsupported ] ")" +} + +void octet_length_expression() #Unsupported: +{} +{ + "OCTET_LENGTH" "(" string_value_expression() ")" +} + +void extract_expression(): +{} +{ + "EXTRACT" "(" extract_field() "FROM" extract_source() ")" +} + +void extract_field(): +{} +{ + primary_datetime_field() + | time_zone_field() +} + +void time_zone_field() #TimeZoneField: +{} +{ + "TIMEZONE_HOUR" + | "TIMEZONE_MINUTE" +} + +void extract_source(): +{} +{ + datetime_value_expression() + | interval_value_expression() +} + +void cardinality_expression(): +{} +{ + "CARDINALITY" "(" collection_value_expression() ")" +} + +void max_cardinality_expression() #Unsupported: +{} +{ + "MAX_CARDINALITY" "(" array_value_expression() ")" +} + +void absolute_value_expression(): +{} +{ + "ABS" "(" numeric_value_expression() ")" +} + +void modulus_expression(): +{} +{ + "MOD" "(" numeric_value_expression() "," numeric_value_expression() ")" +} + +void natural_logarithm(): +{} +{ + "LN" "(" numeric_value_expression() ")" +} + +void exponential_function(): +{} +{ + "EXP" "(" numeric_value_expression() ")" +} + +void power_function(): +{} +{ + "POWER" "(" numeric_value_expression() "," numeric_value_expression() ")" +} + +void square_root(): +{} +{ + "SQRT" "(" numeric_value_expression() ")" +} + +void floor_function(): +{} +{ + "FLOOR" "(" numeric_value_expression() ")" +} + +void ceiling_function(): +{} +{ + ( "CEIL" | "CEILING" ) "(" numeric_value_expression() ")" +} + +void width_bucket_function(): +{} +{ + "WIDTH_BUCKET" "(" numeric_value_expression() "," numeric_value_expression() + [ "," numeric_value_expression() "," numeric_value_expression() ] // Non-standard optional + ")" +} + +void string_value_expression(): +{} +{ + character_value_expression() + | binary_value_expression() +} + +void character_value_expression() #Concatenation(>1): +{} +{ + character_factor() ( concatenation() )* +} + +void concatenation(): +{} +{ + // TODO(kaikalur): fixit -- character_value_expression() "||" character_factor() + "||" character_factor() +} + +void character_factor(): +{} +{ + character_primary() [ ( collate_clause() )#Unsupported ] +} + +void character_primary(): +{} +{ + string_value_function() + | binary_value_expression() +} + +void binary_value_expression() #Concatenation(>1): +{} +{ + binary_primary() ( binary_concatenation() )* +} + +void binary_primary(): +{} +{ + string_value_function() + | datetime_value_expression() +} + +void binary_concatenation(): +{} +{ + // TODO(kaikalur): fixit -- binary_value_expression() "||" binary_primary() + "||" binary_primary() +} + +void string_value_function(): +{} +{ + character_value_function() + | binary_value_function() +} + +void character_value_function() #BuiltinFunctionCall: +{} +{ + ( + character_substring_function() + | regular_expression_substring_function() + | regex_substring_function() + | fold() + | transcoding() + | character_transliteration() + | regex_transliteration() + | trim_function() + | character_overlay_function() + | normalize_function() + | specific_type_method() + ) #ArgumentList(>0) +} + +void character_substring_function(): +{} +{ + "SUBSTRING" "(" character_value_expression() "FROM" numeric_value_expression() + [ "FOR" numeric_value_expression() ] + [ ( "USING" char_length_units() )#Unsupported ] + ")" +} + +void regular_expression_substring_function() #Unsupported: +{} +{ + "SUBSTRING" "(" character_value_expression() "SIMILAR" character_value_expression() + "ESCAPE" character_value_expression() ")" +} + +void regex_substring_function() #Unsupported: +{} +{ + "SUBSTRING_REGEX" "(" + character_value_expression() [ "FLAG" character_value_expression() ] + "IN" character_value_expression() + [ "FROM" numeric_value_expression() ] + [ "USING" char_length_units() ] + [ "OCCURRENCE" numeric_value_expression() ] + [ "GROUP" numeric_value_expression() ] + ")" +} + +void fold(): +{} +{ + ( "UPPER" | "LOWER" ) "(" character_value_expression() ")" +} + +void transcoding() #Unsupported: +{} +{ + "CONVERT" "(" character_value_expression() "USING" schema_qualified_name() ")" +} + +void character_transliteration() #Unsupported: +{} +{ + "TRANSLATE" "(" character_value_expression() "USING" schema_qualified_name() ")" +} + +void regex_transliteration() #Unsupported: +{} +{ + "TRANSLATE_REGEX" "(" + character_value_expression() [ "FLAG" character_value_expression() ] + "IN" character_value_expression() + [ "WITH" character_value_expression() ] + [ "FROM" numeric_value_expression() ] + [ "USING" char_length_units() ] + [ "OCCURRENCE" regex_transliteration_occurrence() ] + ")" +} + +void regex_transliteration_occurrence(): +{} +{ + "ALL" + | numeric_value_expression() +} + +void trim_function(): +{} +{ + "TRIM" "(" trim_operands() ")" +} + +void trim_operands(): +{} +{ + [ trim_specification() ] + character_value_expression() + [ + ("," | ( "FROM" )#Unsupported ) // Non-standard + character_value_expression() + ] +} + +void trim_specification() #Unsupported: +{} +{ + "LEADING" + | "TRAILING" + | "BOTH" +} + +void character_overlay_function() #Unsupported: +{} +{ + "OVERLAY" "(" character_value_expression() "PLACING" character_value_expression() + "FROM" numeric_value_expression() [ "FOR" numeric_value_expression() ] + [ "USING" char_length_units() ] ")" +} + +void normalize_function() #Unsupported: +{} +{ + "NORMALIZE" "(" character_value_expression() + [ "," normal_form() [ "," normalize_function_result_length() ] ] ")" +} + +void normal_form(): +{} +{ + "NFC" + | "NFD" + | "NFKC" + | "NFKD" +} + +void normalize_function_result_length(): +{} +{ + character_length() + | character_large_object_length() +} + +void specific_type_method() #Unsupported: +{} +{ + //user_defined_type_value_expression() "." "SPECIFICTYPE" + "." "SPECIFICTYPE" [ "(" ")" ] +} + +void binary_value_function(): +{} +{ + binary_substring_function() + | binary_trim_function() + | binary_overlay_function() +} + +void binary_substring_function() #Unsupported: +{} +{ + "SUBSTRING" "(" binary_value_expression() "FROM" numeric_value_expression() + [ "FOR" numeric_value_expression() ] ")" +} + +void binary_trim_function(): +{} +{ + "TRIM" "(" binary_trim_operands() ")" +} + +void binary_trim_operands(): +{} +{ + [ trim_specification() ] + binary_value_expression() + [ + ("," | ( "FROM" )#Unsupported ) // Non-standard + binary_value_expression() + ] +} + +void binary_overlay_function() #Unsupported: +{} +{ + "OVERLAY" "(" binary_value_expression() "PLACING" binary_value_expression() + "FROM" numeric_value_expression() [ "FOR" numeric_value_expression() ] ")" +} + +void datetime_value_expression(): +{} +{ + ( datetime_term() ) // [ ( "+" | "-" ) interval_term() ] )#AdditiveExpression(>1) + | ( interval_value_expression() ) //[ "+" datetime_term() ] )#AdditiveExpression(>1) +} + +void datetime_term(): +{} +{ + datetime_factor() +} + +void datetime_factor() : +{} +{ + datetime_primary() [ time_zone() ] +} + +void datetime_primary(): +{} +{ + datetime_value_function() + | interval_value_expression() +} + +void time_zone() #Unsupported: +{} +{ + "AT" time_zone_specifier() +} + +void time_zone_specifier(): +{} +{ + "LOCAL" + | "TIME" "ZONE" interval_primary() +} + +void datetime_value_function() #BuiltinFunctionCall: +{} +{ + ( + current_date_value_function() + | current_time_value_function() + | current_timestamp_value_function() + | current_local_time_value_function() + | current_local_timestamp_value_function() + ) #ArgumentList(>0) +} + +void current_date_value_function(): +{} +{ + "CURRENT_DATE" +} + +void current_time_value_function(): +{} +{ + "CURRENT_TIME" [ ( "(" <unsigned_integer> ")" )#Unsupported ] +} + +void current_local_time_value_function(): +{} +{ + "LOCALTIME" [ ( "(" <unsigned_integer> ")" )#Unsupported ] +} + +void current_timestamp_value_function(): +{} +{ + "CURRENT_TIMESTAMP" [ ( "(" <unsigned_integer> ")" )#Unsupported ] +} + +void current_local_timestamp_value_function() #Unsupported: +{} +{ + "LOCALTIMESTAMP" [ ( "(" <unsigned_integer> ")" )#Unsupported ] +} + +void interval_value_expression(): +{} +{ + ( interval_term() ) //[ ( "+" | "-" ) interval_term() ] ) #AdditiveExpression(>1) + | LOOKAHEAD("(" datetime_value_expression() "-" datetime_term() ")" ) + ( "(" datetime_value_expression() "-" datetime_term() ")" )#AdditiveExpression + interval_qualifier() +} + +void interval_term() #MultiplicativeExpression(>1): +{} +{ + interval_factor() [ ( "*" | "/" ) factor() ] + //TODO(kaikalur) - fixit | term() [ "*" interval_factor() ] +} + +void interval_factor(): +{} +{ + ( ( "+" | "-" ) interval_primary() )#UnaryExpression(1) + | interval_primary() +} + +void interval_primary(): +{} +{ + interval_value_function() +|( + array_value_expression() +) [ ( interval_qualifier() )#Unsupported ] +} + + +void interval_value_function() #BuiltinFunctionCall: +{} +{ + ( interval_absolute_value_function() ) #ArgumentList(>0) +} + +void interval_absolute_value_function(): +{} +{ + "ABS" "(" interval_value_expression() ")" +} + +void boolean_value_expression() #OrExpression(>1): +{} +{ + boolean_term() ( "OR" boolean_term() )* +} + +void boolean_term() #AndExpression(>1): +{} +{ + boolean_factor() ( "AND" boolean_factor() )* +} + +void boolean_factor(): +{} +{ + ( "NOT" boolean_test() )#NotExpression + | boolean_test() +} + +void boolean_test() #IsExpression(>1): +{} +{ + boolean_primary() + [ "IS" [ "NOT" ] truth_value() ] +} + +void truth_value(): +{} +{ + "TRUE" + | "FALSE" + | ( "UNKNOWN" )#Unsupported +} + +void boolean_primary(): +{} +{ + predicate() + | boolean_predicand() +} + +void boolean_predicand(): +{} +{ + parenthesized_boolean_value_expression() + | numeric_value_expression() +} + +void parenthesized_boolean_value_expression() #ParenthesizedExpression: +{} +{ + "(" boolean_value_expression() ")" +} + +void array_value_expression() #Concatenation(>1): +{} +{ + array_primary() ( "||" array_primary() )* +} + +void array_value_expression_1(): +{} +{ + array_value_expression() +} + +void array_primary(): +{} +{ + array_value_function() + | multiset_value_expression() +} + +void array_value_function() #Unsupported: +{} +{ + trim_array_function() +} + +void trim_array_function(): +{} +{ + "TRIM_ARRAY" "(" array_value_expression() "," numeric_value_expression() ")" +} + +void array_value_constructor(): +{} +{ + array_value_constructor_by_enumeration() + | array_value_constructor_by_query() +} + +void array_value_constructor_by_enumeration() #ArrayLiteral: +{} +{ + "ARRAY" left_bracket_or_trigraph() + [ array_element_list() ] // For parsing ease. + right_bracket_or_trigraph() +} + +void array_element_list(): +{} +{ + array_element() ( "," array_element() )* +} + +void array_element(): +{} +{ + value_expression() +} + +void array_value_constructor_by_query() #Unsupported: +{} +{ + "ARRAY" subquery() +} + +void multiset_value_expression() : +{} +{ + multiset_term() [ ( "MULTISET" "UNION" [ "ALL" | "DISTINCT" ] | "MULTISET" "EXCEPT" [ "ALL" | "DISTINCT" ] ) multiset_term() #Unsupported(2) ] +} + +void multiset_term() : +{} +{ + multiset_primary() [ "MULTISET" "INTERSECT" [ "ALL" | "DISTINCT" ] multiset_primary() #Unsupported(2)] +} + +void multiset_primary(): +{} +{ + multiset_set_function() + | value_expression_primary() +} + +void multiset_set_function() #Unsupported: +{} +{ + "SET" "(" multiset_value_expression() ")" +} + +void multiset_value_constructor() #Unsupported: +{} +{ + multiset_value_constructor_by_enumeration() + | multiset_value_constructor_by_query() + | table_value_constructor_by_query() +} + +void multiset_value_constructor_by_enumeration(): +{} +{ + "MULTISET" left_bracket_or_trigraph() multiset_element_list() right_bracket_or_trigraph() +} + +void multiset_element_list(): +{} +{ + multiset_element() ( "," multiset_element() )* +} + +void multiset_element(): +{} +{ + value_expression() +} + +void multiset_value_constructor_by_query(): +{} +{ + "MULTISET" subquery() +} + +void table_value_constructor_by_query(): +{} +{ + "TABLE" subquery() +} + +void row_value_constructor(): +{} +{ + explicit_row_value_constructor() + | common_value_expression() + | boolean_value_expression() +} + +void explicit_row_value_constructor(): +{} +{ + ( "ROW" "(" row_value_constructor_element_list() ")" )#RowExpression + | subquery() + | ( "(" row_value_constructor_element() [ "," row_value_constructor_element_list() ] ")" )#RowExpression +} + +void row_value_constructor_element_list(): +{} +{ + row_value_constructor_element() ( "," row_value_constructor_element() )* +} + +void row_value_constructor_element(): +{} +{ + value_expression() +} + +void contextually_typed_row_value_constructor(): +{} +{ + common_value_expression() + | boolean_value_expression() + | contextually_typed_value_specification() + | ( "(" contextually_typed_value_specification() ")" )#ParenthesizedExpression + | ("(" contextually_typed_row_value_constructor_element() "," + contextually_typed_row_value_constructor_element_list() ")" )#ParenthesizedExpression + | ( "ROW" "(" contextually_typed_row_value_constructor_element_list() ")" )#RowExression +} + +void contextually_typed_row_value_constructor_element_list(): +{} +{ + contextually_typed_row_value_constructor_element() + ( "," contextually_typed_row_value_constructor_element() )* +} + +void contextually_typed_row_value_constructor_element(): +{} +{ + contextually_typed_value_specification() + //| value_expression() +} + +void row_value_constructor_predicand(): +{} +{ + common_value_expression() + | explicit_row_value_constructor() + //| boolean_predicand() +} + +void row_value_expression(): +{} +{ + explicit_row_value_constructor() + | row_value_special_case() +} + +void table_row_value_expression(): +{} +{ + row_value_constructor() + | row_value_special_case() +} + +void contextually_typed_row_value_expression(): +{} +{ + contextually_typed_row_value_constructor() + | row_value_special_case() +} + +void row_value_predicand(): +{} +{ + row_value_constructor_predicand() + | row_value_special_case() +} + +void row_value_special_case(): +{} +{ + common_value_expression() + | nonparenthesized_value_expression_primary() +} + +void table_value_constructor() #Values: +{} +{ + "VALUES" row_value_expression_list() +} + +void row_value_expression_list(): +{} +{ + table_row_value_expression() ( "," table_row_value_expression() )* +} + +void contextually_typed_table_value_constructor() #Values: +{} +{ + "VALUES" contextually_typed_row_value_expression_list() +} + +void contextually_typed_row_value_expression_list(): +{} +{ + contextually_typed_row_value_expression() + ( "," contextually_typed_row_value_expression() )* +} + +void table_expression() #TableExpression: +{} +{ + from_clause() + [ where_clause() ] + [ group_by_clause() ] + [ having_clause() ] + [ window_clause() ] +} + +void from_clause() #FromClause: +{} +{ + "FROM" table_reference_list() +} + +void table_reference_list() #CommaJoin(>1): +{} +{ + table_reference() ( "," table_reference() )* +} + +void table_reference() #Join(>1): +{} +{ + table_factor() ( joined_table() )* +} + +void table_factor() #TableSample(>1): +{} +{ + table_primary() [ sample_clause() ] + + [ ( partitioned_join_table() ) #Unsupported ] // For removing left recursion +} + +void sample_clause(): +{} +{ + "TABLESAMPLE" sample_method() "(" sample_percentage() ")" + [ repeatable_clause() ] +} + +void sample_method(): +{} +{ + "BERNOULLI" + | "SYSTEM" +} + +void repeatable_clause() #Unsupported: +{} +{ + "REPEATABLE" "(" repeat_argument() ")" +} + +void sample_percentage(): +{} +{ + numeric_value_expression() +} + +void repeat_argument(): +{} +{ + numeric_value_expression() +} + +void table_primary() #AliasedTable(>1): +{} +{ + ( + table_or_query_name() + | LOOKAHEAD("(" ("WITH"|"SELECT"|"VALUES"|"TABLE")) derived_table() + | parenthesized_joined_table() + | lateral_derived_table() + | collection_derived_table() + | table_function_derived_table() + | only_spec() + | data_change_delta_table() + ) + + [ alias() ] +} + +void alias() #Alias: +{} +{ + [ "AS" ] + identifier() + [ identifier_suffix_chain() ] + [ "(" column_name_list() ")" ] +} + +void system_version_specification() #Unsupported: +{} +{ + "AS" "OF" "SYSTEM" "TIME" datetime_value_expression() + | "VERSIONS" "BEFORE" "SYSTEM" "TIME" datetime_value_expression() + | "VERSIONS" "AFTER" "SYSTEM" "TIME" datetime_value_expression() + | "VERSIONS" "BETWEEN" [ "ASYMMETRIC" | "SYMMETRIC" ] + "SYSTEM" "TIME" datetime_value_expression() "AND" datetime_value_expression() +} + +void only_spec() #Unsupported: +{} +{ + "ONLY" "(" table_or_query_name() ")" +} + +// TODO(kaikalur) - check Presto and Spark for lateral +void lateral_derived_table() #Unsupported: +{} +{ + "LATERAL" subquery() +} + +void collection_derived_table() #Unnest: +{} +{ + "UNNEST" "(" collection_value_expression() + ( "," collection_value_expression() )* ")" + [ "WITH" "ORDINALITY" ] +} + +void table_function_derived_table() #Unsupported: +{} +{ + "TABLE" "(" collection_value_expression() ")" +} + +void derived_table(): +{} +{ + LOOKAHEAD("(" ("SELECT"|"VALUES"|"TABLE")) query_expression() + | subquery() +} + +void table_or_query_name(): +{} +{ + table_name() + | identifier() +} + +void column_name_list() #ColumnNames: +{} +{ + identifier() ( "," identifier() )* +} + +void data_change_delta_table() #Unsupported: +{} +{ + result_option() "TABLE" "(" data_change_statement() ")" +} + +void data_change_statement(): +{} +{ + delete_statement_searched() + | insert_statement() + | merge_statement() + | update_statement_searched() +} + +void result_option(): +{} +{ + "FINAL" + | "NEW" + | "OLD" +} + +void parenthesized_joined_table() #Join(>1): +{} +{ + // TODO(kaikalur) -- double check the following + //"(" parenthesized_joined_table() ")" + //| "(" joined_table() ")" + + "(" + ( + LOOKAHEAD("(" ("WITH"|"SELECT"|"VALUES"|"TABLE")) table_primary() + | table_reference() + ) + + ( joined_table() )* + ")" +} + +void joined_table(): +{} +{ + cross_join() + | qualified_join() + | natural_join() +} + +void cross_join(): +{} +{ + //TODO(kaikalur): fixit --table_reference() "CROSS" "JOIN" table_factor() + "CROSS" "JOIN" table_factor() +} + +void qualified_join(): +{} +{ + //TODO(kaikalur) -- check partitioned ( table_reference() | partitioned_join_table() ) + [ join_type() ] "JOIN" + ( table_reference() | partitioned_join_table() ) + join_specification() +} + +void partitioned_join_table() #Unsupported: +{} +{ + "PARTITION" "BY" partitioned_join_column_reference_list() +} + +void partitioned_join_column_reference_list(): +{} +{ + "(" partitioned_join_column_reference() + ( "," partitioned_join_column_reference() )* + ")" +} + +void partitioned_join_column_reference(): +{} +{ + column_reference() +} + +void natural_join() #Unsupported: +{} +{ + //TODO(kaikalur) -- check ( table_reference() | partitioned_join_table() ) + "NATURAL" [ join_type() ] "JOIN" + ( table_factor() | partitioned_join_table() ) +} + +void join_specification(): +{} +{ + join_condition() + | named_columns_join() +} + +void join_condition() #OnClause: +{} +{ + "ON" search_condition() +} + +void named_columns_join() #UsingClause: +{} +{ + "USING" "(" join_column_list() ")" +} + +void join_type(): +{} +{ + "INNER" + | outer_join_type() [ "OUTER" ] +} + +void outer_join_type(): +{} +{ + "LEFT" + | "RIGHT" + | "FULL" +} + +void join_column_list(): +{} +{ + column_name_list() +} + +void where_clause() #WhereClause: +{} +{ + "WHERE" search_condition() +} + +void group_by_clause() #GroupbyClause: +{} +{ + "GROUP" "BY" + [ ( set_quantifier() )#Unsupported ] + grouping_element_list() +} + +void grouping_element_list(): +{} +{ + grouping_element() ( "," grouping_element() )* +} + +void grouping_element(): +{} +{ + rollup_list() + | cube_list() + | grouping_sets_specification() + | empty_grouping_set() + | ordinary_grouping_set() +} + +void ordinary_grouping_set(): +{} +{ + grouping_column_reference() + | "(" grouping_column_reference_list() ")" +} + +void grouping_column_reference(): +{} +{ + ( + grouping_expression() + | column_reference() + ) + + [ ( collate_clause() )#Unsupported ] +} + +void grouping_column_reference_list(): +{} +{ + grouping_column_reference() ( "," grouping_column_reference() )* +} + +void rollup_list() #Rollup: +{} +{ + "ROLLUP" "(" ordinary_grouping_set_list() ")" +} + +void ordinary_grouping_set_list(): +{} +{ + ordinary_grouping_set() ( "," ordinary_grouping_set() )* +} + +void cube_list() #Cube: +{} +{ + "CUBE" "(" ordinary_grouping_set_list() ")" +} + +void grouping_sets_specification() #GroupingSets: +{} +{ + "GROUPING" "SETS" "(" grouping_set_list() ")" +} + +void grouping_set_list(): +{} +{ + grouping_set() ( "," grouping_set() )* +} + +void grouping_set(): +{} +{ + rollup_list() + | cube_list() + | grouping_sets_specification() + | empty_grouping_set() + | ordinary_grouping_set() +} + +void empty_grouping_set(): +{} +{ + "(" ")" +} + +void having_clause() #HavingClause: +{} +{ + "HAVING" search_condition() +} + +void window_clause() #Unsupported: +{} +{ + "WINDOW" window_definition_list() +} + +void window_definition_list(): +{} +{ + window_definition() ( "," window_definition() )* +} + +void window_definition(): +{} +{ + identifier() "AS" window_specification() +} + +void window_specification() #WindowSpecification: +{} +{ + "(" [ window_specification_details() ] ")" +} + +void window_specification_details(): +{} +{ + // TODO(kaikalur): checkout this rule + ( + window_partition_clause() + | window_order_clause() + | window_frame_clause() + | existing_identifier() + )+ +} + +void existing_identifier(): +{} +{ + identifier() +} + +void window_partition_clause() #PartitionByClause: +{} +{ + "PARTITION" "BY" window_partition_column_reference_list() +} + +void window_partition_column_reference_list(): +{} +{ + window_partition_column_reference() + ( "," window_partition_column_reference() )* +} + +void window_partition_column_reference(): +{} +{ + ( + value_expression() // Non-standard + | column_reference() + ) + [ collate_clause() ] +} + +void window_order_clause() #OrderByClause: +{} +{ + "ORDER" "BY" sort_specification_list() +} + +void window_frame_clause(): +{} +{ + window_frame_units() window_frame_extent() + [ window_frame_exclusion() ] +} + +void window_frame_units() #WindowFrameUnits: +{} +{ + "ROWS" + | "RANGE" +} + +void window_frame_extent() #WindowFrameExtent: +{} +{ + window_frame_start() + | window_frame_between() +} + +void window_frame_start(): +{} +{ + ( "UNBOUNDED" "PRECEDING" )#UnboundedPreceding + | ( "CURRENT" "ROW" )#CurrentRow + | window_frame_preceding() +} + +void window_frame_preceding() #WindowFramePreceding: +{} +{ + //TODO(kaikalur) - genralized unsigned_value_specification() "PRECEDING" + value_expression() "PRECEDING" +} + +void window_frame_between() #WindowFrameBetween: +{} +{ + "BETWEEN" window_frame_bound() "AND" window_frame_bound() +} + +void window_frame_bound(): +{} +{ + window_frame_start() + | ( "UNBOUNDED" "FOLLOWING" )#UnboundedFollowing + | window_frame_following() +} + +void window_frame_following() #WindowFrameFollowing: +{} +{ + //TODO(kaikalur) - genralized unsigned_value_specification() "FOLLOWING" + value_expression() "FOLLOWING" +} + +void window_frame_exclusion() #Unsupported: +{} +{ + "EXCLUDE" "CURRENT" "ROW" + | "EXCLUDE" "GROUP" + | "EXCLUDE" "TIES" + | "EXCLUDE" "NO" "OTHERS" +} + +void query_specification() #Select: +{} +{ + "SELECT" [ set_quantifier() ] select_list() + [ table_expression() ] // Non-standard +} + +void select_list() #SelectList: +{} +{ + star() + ( "," select_sublist() )* // Non-standard + | select_sublist() ( "," select_sublist() )* + [ "," star() ] // Non-standard + ( "," select_sublist() )* // Non-standard +} + +void star() #SelectItem: +{} +{ + ( "*" ) #Star +} + +void select_sublist() #SelectItem: +{} +{ + //derived_column() + //| qualified_asterisk() + + // For ease of parsing + derived_column() + [ + "." ( "*" )#Star() + [ ( "AS" "(" all_fields_column_name_list() ")" )#Unsupported ] + | as_clause() + ] +} + +void qualified_asterisk(): +{} +{ + ( asterisked_identifier_chain() "." "*" )#Star + | all_fields_reference() +} + +void asterisked_identifier_chain() #QualifiedName(>1): +{} +{ + identifier() ( "." identifier() )* +} + +void derived_column(): +{} +{ + value_expression() [ as_clause() ] +} + +void as_clause() #Alias: +{} +{ + [ "AS" ] identifier() +} + +void all_fields_reference(): +{} +{ + value_expression_primary() "." "*" + [ ( "AS" "(" all_fields_column_name_list() ")" )#Unsupported ] +} + +void all_fields_column_name_list(): +{} +{ + column_name_list() +} + +void query_expression() #QuerySpecification(>1): +{} +{ + [ with_clause() ] query_expression_body() + [ order_by_clause() ] + // TODO(kaikalur): validate + [ limit_clause() | result_offset_clause() [ fetch_first_clause() ] | fetch_first_clause() ] +} + +void with_clause() #WithClause: +{} +{ + "WITH" [ "RECURSIVE" ] with_list() +} + +void with_list(): +{} +{ + with_list_element() ( "," with_list_element() )* +} + +void with_list_element() #Cte: +{} +{ + identifier() [ "(" column_name_list() ")" ] + "AS" subquery() [ search_or_cycle_clause() ] +} + +void query_expression_body() #SetOperation(>1): +{} +{ + query_term() + ( "UNION" [ "ALL" | "DISTINCT" ] + [ corresponding_spec() ] query_term() + | "EXCEPT" [ "ALL" | "DISTINCT" ] + [ corresponding_spec() ] query_term() + )* +} + +void query_term() #SetOperation(>1): +{} +{ + query_primary() ( "INTERSECT" [ "ALL" | "DISTINCT" ] [ corresponding_spec() ] query_primary() )* +} + +void query_primary(): +{} +{ + ( "(" query_expression_body() + [ order_by_clause() ] + ( [ limit_clause() ] | [ result_offset_clause() ] [ fetch_first_clause() ] ) + ")" + )#Subquery + | simple_table() +} + +void simple_table(): +{} +{ + table_value_constructor() + | explicit_table() + | query_specification() +} + +void explicit_table(): +{} +{ + "TABLE" table_or_query_name() +} + +void corresponding_spec() #Unsupported: +{} +{ + "CORRESPONDING" [ "BY" "(" column_name_list() ")" ] +} + +void order_by_clause() #OrderByClause: +{} +{ + "ORDER" "BY" sort_specification_list() +} + +void result_offset_clause() #Unsupported: +{} +{ + "OFFSET" simple_value_specification() ( "ROW" | "ROWS" ) +} + +void fetch_first_clause() #Unsupported: +{} +{ + "FETCH" ( "FIRST" | "NEXT" ) [ simple_value_specification() ] ( "ROW" | "ROWS" ) "ONLY" +} + +void search_or_cycle_clause() #Unsupported: +{} +{ + search_clause() + | cycle_clause() + | search_clause() cycle_clause() +} + +void search_clause(): +{} +{ + "SEARCH" recursive_search_order() "SET" identifier() +} + +void recursive_search_order(): +{} +{ + "DEPTH" "FIRST" "BY" column_name_list() + | "BREADTH" "FIRST" "BY" column_name_list() +} + +void cycle_clause(): +{} +{ + "CYCLE" cycle_column_list() "SET" identifier() "TO" value_expression() + "DEFAULT" value_expression() "USING" identifier() +} + +void cycle_column_list(): +{} +{ + identifier() ( "," identifier() )* +} + +void subquery() #Subquery: +{} +{ + "(" query_expression() ")" +} + +void predicate(): +{} +{ + exists_predicate() + | unique_predicate() + | row_value_predicand() + + [ + { PushNode(PopNode()); } + ( + comparison_predicate() + | between_predicate() + | in_predicate() + | like_predicate() + | similar_predicate() + | regex_like_predicate() + | null_predicate() + | quantified_comparison_predicate() + | normalized_predicate() + | match_predicate() + | overlaps_predicate() + | distinct_predicate() + | member_predicate() + | submultiset_predicate() + | set_predicate() + | type_predicate() + ) + ] +} + +void comparison_predicate(): +{} +{ + comparison_predicate_part_2() +} + +void comparison_predicate_part_2() #Comparison(2): +{} +{ + comp_op() row_value_predicand() +} + +void comp_op(): +{} +{ + <EQUAL: "="> + | <NOT_EQUAL: "<>"> + | <LESS_THAN: "<"> + | <GREATER_THAN: ">"> + | <LESS_THAN_OR_EQUAL: "<="> + | <GREATER_THAN_OR_EQUAL: ">="> + | <NOT_EQUAL_2: "!="> // Non-standard +} + +void between_predicate(): +{} +{ + between_predicate_part_2() +} + +void between_predicate_part_2() #Between(3): +{} +{ + [ "NOT" ] "BETWEEN" [ "ASYMMETRIC" | "SYMMETRIC" ] + row_value_predicand() "AND" row_value_predicand() +} + +void in_predicate(): +{} +{ + in_predicate_part_2() +} + +void in_predicate_part_2() #InPredicate: +{} +{ + [ "NOT" ] "IN" in_predicate_value() +} + +void in_predicate_value(): +{} +{ + ( "(" in_value_list() ")" )#InvalueList + | subquery() +} + +void in_value_list(): +{} +{ + row_value_expression() ( "," row_value_expression() )* +} + +void like_predicate(): +{} +{ + character_like_predicate() + | octet_like_predicate() +} + +void character_like_predicate(): +{} +{ + character_like_predicate_part_2() +} + +void character_like_predicate_part_2() #Like(2): +{} +{ + [ "NOT" ] "LIKE" character_value_expression() [ "ESCAPE" character_value_expression() ] +} + +void octet_like_predicate(): +{} +{ + octet_like_predicate_part_2() +} + +void octet_like_predicate_part_2() #Like(2): +{} +{ + [ "NOT" ] "LIKE" binary_value_expression() [ "ESCAPE" binary_value_expression() ] +} + +void similar_predicate(): +{} +{ + similar_predicate_part_2() +} + +void similar_predicate_part_2() #Unsupported: +{} +{ + [ "NOT" ] "SIMILAR" "TO" character_value_expression() [ "ESCAPE" character_value_expression() ] +} + +void regex_like_predicate(): +{} +{ + regex_like_predicate_part_2() +} + +void regex_like_predicate_part_2() #Unsupported: +{} +{ + [ "NOT" ] "LIKE_REGEX" character_value_expression() [ "FLAG" character_value_expression() ] +} + +void null_predicate(): +{} +{ + null_predicate_part_2() +} + +void null_predicate_part_2() #IsNull(1): +{} +{ + "IS" [ "NOT" ] "NULL" +} + +void quantified_comparison_predicate(): +{} +{ + quantified_comparison_predicate_part_2() +} + +void quantified_comparison_predicate_part_2() #QuantifiedComparison(2): +{} +{ + comp_op() ( "ALL" | "SOME" | "ANY" ) subquery() +} + +void exists_predicate() #Exists(1): +{} +{ + "EXISTS" subquery() +} + +void unique_predicate() #Unsupported: +{} +{ + "UNIQUE" subquery() +} + +void normalized_predicate(): +{} +{ + normalized_predicate_part_2() +} + +void normalized_predicate_part_2() #Unsupported: +{} +{ + "IS" [ "NOT" ] [ normal_form() ] "NORMALIZED" +} + +void match_predicate(): +{} +{ + match_predicate_part_2() +} + +void match_predicate_part_2() #Unsupported: +{} +{ + "MATCH" [ "UNIQUE" ] [ "SIMPLE" | "PARTIAL" | "FULL" ] subquery() +} + +void overlaps_predicate(): +{} +{ + overlaps_predicate_part_2() +} + +void overlaps_predicate_part_1(): +{} +{ + row_value_predicand_1() +} + +void overlaps_predicate_part_2() #Unsupported: +{} +{ + "OVERLAPS" row_value_predicand_2() +} + +void row_value_predicand_1(): +{} +{ + row_value_predicand() +} + +void row_value_predicand_2(): +{} +{ + row_value_predicand() +} + +void distinct_predicate(): +{} +{ + distinct_predicate_part_2() +} + +void distinct_predicate_part_2() #IsDistinct(2): +{} +{ + "IS" [ "NOT" ] "DISTINCT" "FROM" row_value_predicand_4() +} + +void row_value_predicand_3(): +{} +{ + row_value_predicand() +} + +void row_value_predicand_4(): +{} +{ + row_value_predicand() +} + +void member_predicate(): +{} +{ + member_predicate_part_2() +} + +void member_predicate_part_2() #Unsupported: +{} +{ + [ "NOT" ] "MEMBER" [ "OF" ] multiset_value_expression() +} + +void submultiset_predicate(): +{} +{ + submultiset_predicate_part_2() +} + +void submultiset_predicate_part_2() #Unsupported: +{} +{ + [ "NOT" ] "SUBMULTISET" [ "OF" ] multiset_value_expression() +} + +void set_predicate(): +{} +{ + set_predicate_part_2() +} + +void set_predicate_part_2() #Unsupported: +{} +{ + "IS" [ "NOT" ] "A" "SET" +} + +void type_predicate(): +{} +{ + type_predicate_part_2() +} + +void type_predicate_part_2() #Unsupported: +{} +{ + "IS" [ "NOT" ] "OF" "(" type_list() ")" +} + +void type_list(): +{} +{ + user_defined_type_specification() + ( "," user_defined_type_specification() )* +} + +void user_defined_type_specification(): +{} +{ + exclusive_user_defined_type_specification() + | inclusive_user_defined_type_specification() +} + +void inclusive_user_defined_type_specification(): +{} +{ + path_resolved_user_defined_type_name() +} + +void exclusive_user_defined_type_specification(): +{} +{ + "ONLY" path_resolved_user_defined_type_name() +} + +void search_condition(): +{} +{ + boolean_value_expression() +} + +void interval_qualifier() #InvervalQualifier: +{} +{ + start_field() "TO" end_field() + | single_datetime_field() +} + +void start_field() #NonSecondField: +{} +{ + non_second_primary_datetime_field() + [ "(" interval_leading_field_precision() ")" ] +} + +void end_field(): +{} +{ + non_second_primary_datetime_field() + | ( "SECOND" [ "(" interval_fractional_seconds_precision() ")" ] )#SecondField +} + +//TODO(kaikalur): Need to check the matching rules. +void single_datetime_field(): +{} +{ + //non_second_primary_datetime_field() + //[ "(" interval_leading_field_precision() ")" ] + start_field() + | ( "SECOND" [ "(" interval_leading_field_precision() + [ "," interval_fractional_seconds_precision() ] ")" ] )#SecondField +} + +void primary_datetime_field(): +{} +{ + non_second_primary_datetime_field() + | "SECOND" +} + +void non_second_primary_datetime_field() #NonSecondDateTimeField: +{} +{ + "YEAR" + | "MONTH" + | "DAY" + | "HOUR" + | "MINUTE" +} + +void interval_fractional_seconds_precision(): +{} +{ + <unsigned_integer> +} + +void interval_leading_field_precision(): +{} +{ + <unsigned_integer> +} + +void language_clause() #LanguageClause: +{} +{ + "LANGUAGE" language_name() +} + +void language_name(): +{} +{ + "ADA" + | "C" + | "COBOL" + | "FORTRAN" + | "M" | "MUMPS" + | "PASCAL" + | "PLI" + | "SQL" +} + +void path_specification(): +{} +{ + "PATH" schema_name_list() +} + +void schema_name_list(): +{} +{ + schema_name() ( "," schema_name() )* +} + +void routine_invocation(): +{} +{ + routine_name() SQL_argument_list() +} + +void routine_name(): +{} +{ + [ schema_name() "." ] identifier() +} + +void SQL_argument_list() #ArgumentList: +{} +{ + "(" [ SQL_argument() ( "," SQL_argument() )* ] ")" +} + +void SQL_argument(): +{} +{ + LOOKAHEAD(lambda_params() "->") lambda() + | value_expression() [ generalized_expression() ] + | named_argument_specification() + | contextually_typed_value_specification() + | target_specification() +} + +void generalized_expression() #Unsupported: +{} +{ + "AS" path_resolved_user_defined_type_name() +} + +void named_argument_specification() #NamedArgument: +{} +{ + identifier() "=>" + named_argument_SQL_argument() +} + +void named_argument_SQL_argument(): +{} +{ + value_expression() + | contextually_typed_value_specification() + | target_specification() +} + +void character_set_specification() #Unsupported: +{} +{ + standard_character_set_name() + | implementation_defined_character_set_name() + | user_defined_character_set_name() +} + +void standard_character_set_name(): +{} +{ + character_set_name() +} + +void implementation_defined_character_set_name(): +{} +{ + character_set_name() +} + +void user_defined_character_set_name(): +{} +{ + character_set_name() +} + +void specific_routine_designator() #Unsupported: +{} +{ + "SPECIFIC" routine_type() schema_qualified_name() + | routine_type() member_name() [ "FOR" schema_resolved_user_defined_type_name() ] +} + +void routine_type(): +{} +{ + "ROUTINE" + | "FUNCTION" + | "PROCEDURE" + | [ "INSTANCE" | "STATIC" | "CONSTRUCTOR" ] "METHOD" +} + +void member_name(): +{} +{ + member_name_alternatives() [ data_type_list() ] +} + +void member_name_alternatives(): +{} +{ + schema_qualified_name() + | identifier() +} + +void data_type_list(): +{} +{ + "(" [ data_type() ( "," data_type() )* ] ")" +} + +void collate_clause() #Unsupported: +{} +{ + "COLLATE" schema_qualified_name() +} + +void constraint_name_definition() #Unsupported: +{} +{ + "CONSTRAINT" schema_qualified_name() +} + +void constraint_characteristics(): +{} +{ + constraint_check_time() [ [ "NOT" ] "DEFERRABLE" ] [ constraint_enforcement() ] + | [ "NOT" ] "DEFERRABLE" [ constraint_check_time() ] [ constraint_enforcement() ] + | constraint_enforcement() +} + +void constraint_check_time(): +{} +{ + "INITIALLY" "DEFERRED" + | "INITIALLY" "IMMEDIATE" +} + +void constraint_enforcement(): +{} +{ + [ "NOT" ] "ENFORCED" +} + +void aggregate_function() #AggregationFunction: +{} +{ + ( + "COUNT" "(" "*" ")" + | count() + | general_set_function() + | binary_set_function() + | ordered_set_function() + | array_aggregate_function() + | presto_aggregations() + ) + + [ filter_clause() ] +} + +void general_set_function(): +{} +{ + set_function_type() "(" [ set_quantifier() ] value_expression() + [ extra_args_to_agg() ] + ")" +} + +void set_function_type(): +{} +{ + computational_operation() +} + +void computational_operation(): +{} +{ + "AVG" + | "MAX" + | "MIN" + | "SUM" + | "EVERY" + | "ANY" + | "SOME" + | "COUNT" + | "STDDEV_POP" + | "STDDEV_SAMP" + | "VAR_SAMP" + | "VAR_POP" + | "COLLECT" + | "FUSION" + | "INTERSECTION" +} + +void set_quantifier() #SetQuantifier: +{} +{ + "DISTINCT" + | "ALL" +} + +void filter_clause() #FilterClause: +{} +{ + "FILTER" "(" "WHERE" search_condition() ")" +} + +void binary_set_function(): +{} +{ + binary_set_function_type() "(" dependent_variable_expression() "," + independent_variable_expression() ")" +} + +void binary_set_function_type(): +{} +{ + "COVAR_POP" + | "COVAR_SAMP" + | "CORR" + | "REGR_SLOPE" + | "REGR_INTERCEPT" + | "REGR_COUNT" + | "REGR_R2" + | "REGR_AVGX" + | "REGR_AVGY" + | "REGR_SXX" + | "REGR_SYY" + | "REGR_SXY" +} + +void dependent_variable_expression(): +{} +{ + numeric_value_expression() +} + +void independent_variable_expression(): +{} +{ + numeric_value_expression() +} + +void ordered_set_function(): +{} +{ + hypothetical_set_function() + | inverse_distribution_function() +} + +void hypothetical_set_function(): +{} +{ + rank_function_type() "(" + hypothetical_set_function_value_expression_list() ")" + within_group_specification() +} + +void within_group_specification() #Unsupported: +{} +{ + "WITHIN" "GROUP" "(" "ORDER" "BY" sort_specification_list() ")" +} + +void hypothetical_set_function_value_expression_list(): +{} +{ + value_expression() ( "," value_expression() )* +} + +void inverse_distribution_function(): +{} +{ + inverse_distribution_function_type() "(" + inverse_distribution_function_argument() ")" + within_group_specification() +} + +void inverse_distribution_function_argument(): +{} +{ + numeric_value_expression() +} + +void inverse_distribution_function_type(): +{} +{ + "PERCENTILE_CONT" + | "PERCENTILE_DISC" +} + +void array_aggregate_function(): +{} +{ + "ARRAY_AGG" + "(" + [ distinct() ] // Non-standard + value_expression() [ "ORDER" "BY" sort_specification_list() ] + ")" +} + +void sort_specification_list() #SortSpecificationList: +{} +{ + sort_specification() ( "," sort_specification() )* +} + +void sort_specification() #SortSpecification: +{} +{ + sort_key() [ ordering_specification() ] [ null_ordering() ] +} + +void sort_key(): +{} +{ + value_expression() +} + +void ordering_specification() #OrderingDirection: +{} +{ + "ASC" + | "DESC" +} + +void null_ordering() #NullOrdering: +{} +{ + "NULLS" "FIRST" + | "NULLS" "LAST" +} + +void schema_definition() #CreateSchema: +{} +{ + "CREATE" "SCHEMA" + + [ if_not_exists() ] + + schema_name_clause() + [ schema_character_set_or_path() ] + ( schema_element() )* +} + +void schema_character_set_or_path() #Unsupported: +{} +{ + schema_character_set_specification() + | schema_path_specification() + | schema_character_set_specification() schema_path_specification() + | schema_path_specification() schema_character_set_specification() +} + +void schema_name_clause(): +{} +{ + schema_name() + | ( "AUTHORIZATION" identifier() )#Unsuppoerted + | ( schema_name() "AUTHORIZATION" identifier() )#Unsuppoerted +} + +void schema_character_set_specification(): +{} +{ + "DEFAULT" "CHARACTER" "SET" character_set_specification() +} + +void schema_path_specification(): +{} +{ + path_specification() +} + +void schema_element() #Unsupported: +{} +{ + table_definition() + | LOOKAHEAD(4) view_definition() + | domain_definition() + | character_set_definition() + | collation_definition() + | transliteration_definition() + | assertion_definition() + | trigger_definition() + | user_defined_type_definition() + | user_defined_cast_definition() + | user_defined_ordering_definition() + | transform_definition() + | schema_routine() + | sequence_generator_definition() + | grant_statement() + | role_definition() +} + +void drop_schema_statement(): +{} +{ + "DROP" "SCHEMA" schema_name() drop_behavior() +} + +void drop_behavior(): +{} +{ + "CASCADE" + | "RESTRICT" +} + +void table_definition() #TableDefinition: +{} +{ + "CREATE" [ table_scope() ] "TABLE" + + [ if_not_exists() ] + + table_name() + + [ table_description() ] + + ( // Non-standard + LOOKAHEAD ("WITH") + [ "WITH" + ( system_versioning_clause() + | table_attributes() // Non-standard + ) + ] + table_contents_source() + | + table_contents_source() + [ table_description() ] + [ "WITH" + ( system_versioning_clause() + | table_attributes() // Non-standard + ) + ] + ) + [ "ON" "COMMIT" table_commit_action() "ROWS" ] +} + +void table_contents_source(): +{} +{ + typed_table_clause() + | as_subquery_clause() + | table_element_list() +} + +void table_scope(): +{} +{ + global_or_local() "TEMPORARY" +} + +void global_or_local(): +{} +{ + "GLOBAL" + | "LOCAL" +} + +void system_versioning_clause(): +{} +{ + "SYSTEM" "VERSIONING" [ retention_period_specification() ] +} + +void retention_period_specification(): +{} +{ + "KEEP" "VERSIONS" "FOREVER" + | "KEEP" "VERSIONS" "FOR" length_of_time() time_unit() +} + +void length_of_time(): +{} +{ + <unsigned_integer> +} + +void time_unit(): +{} +{ + "SECOND" |"SECONDS" |"MINUTE" |"MINUTES" |"HOUR" |"HOURS" |"DAY" |"DAYS" |"MONTH" |"MONTHS" |"YEAR" |"YEARS" +} + +void table_commit_action(): +{} +{ + "PRESERVE" + | "DELETE" +} + +void table_element_list(): +{} +{ + "(" table_element() ( "," table_element() )* ")" +} + +void table_element(): +{} +{ + column_definition() + | table_constraint_definition() + | like_clause() +} + +void typed_table_clause(): +{} +{ + "OF" path_resolved_user_defined_type_name() [ subtable_clause() ] + [ typed_table_element_list() ] +} + +void typed_table_element_list(): +{} +{ + "(" typed_table_element() + ( "," typed_table_element() )* ")" +} + +void typed_table_element(): +{} +{ + column_options() + | table_constraint_definition() + | self_referencing_column_specification() +} + +void self_referencing_column_specification(): +{} +{ + "REF" "IS" identifier() [ reference_generation() ] +} + +void reference_generation(): +{} +{ + "SYSTEM" "GENERATED" + | "USER" "GENERATED" + | "DERIVED" +} + +void column_options(): +{} +{ + identifier() "WITH" "OPTIONS" column_option_list() +} + +void column_option_list(): +{} +{ + [ scope_clause() ] [ default_clause() ] ( column_constraint_definition() )* +} + +void subtable_clause(): +{} +{ + "UNDER" supertable_clause() +} + +void supertable_clause(): +{} +{ + supertable_name() +} + +void supertable_name(): +{} +{ + table_name() +} + +void like_clause(): +{} +{ + "LIKE" table_name() [ like_options() ] +} + +void like_options(): +{} +{ + ( like_option() )+ +} + +void like_option(): +{} +{ + identity_option() + | column_default_option() + | generation_option() + | "INCLUDING" "PROPERTIES" // Non-standard +} + +void identity_option(): +{} +{ + "INCLUDING" "IDENTITY" + | "EXCLUDING" "IDENTITY" +} + +void column_default_option(): +{} +{ + "INCLUDING" "DEFAULTS" + | "EXCLUDING" "DEFAULTS" +} + +void generation_option(): +{} +{ + "INCLUDING" "GENERATED" + | "EXCLUDING" "GENERATED" +} + +void as_subquery_clause(): +{} +{ + [ "(" column_name_list() ")" ] + + [ "WITH" table_attributes() ] // Non-standard + + "AS" + + ( + subquery() + | query_expression() // Non-standard + ) + + [ with_or_without_data() ] +} + +void with_or_without_data(): +{} +{ + "WITH" "NO" "DATA" + | "WITH" "DATA" +} + +void column_definition(): +{} +{ + identifier() + [ data_type_or_schema_qualified_name() ] + [ default_clause() | identity_column_specification() | generation_clause() + | system_version_start_column_specification() | system_version_end_column_specification() + ] + ( column_constraint_definition() )* + [ collate_clause() ] + + [ column_description() ] +} + +void data_type_or_schema_qualified_name(): +{} +{ + data_type() + | schema_qualified_name() +} + +void system_version_start_column_specification(): +{} +{ + timestamp_generation_rule() "AS" "SYSTEM" "VERSION" "START" +} + +void system_version_end_column_specification(): +{} +{ + timestamp_generation_rule() "AS" "SYSTEM" "VERSION" "END" +} + +void timestamp_generation_rule(): +{} +{ + "GENERATED" "ALWAYS" +} + +void column_constraint_definition(): +{} +{ + [ constraint_name_definition() ] column_constraint() [ constraint_characteristics() ] +} + +void column_constraint(): +{} +{ + "NOT" "NULL" + | unique_specification() + | references_specification() + | check_constraint_definition() +} + +void identity_column_specification(): +{} +{ + "GENERATED" ( "ALWAYS" | "BY" "DEFAULT" ) "AS" "IDENTITY" + [ "(" common_sequence_generator_options() ")" ] +} + +void generation_clause(): +{} +{ + generation_rule() "AS" generation_expression() +} + +void generation_rule(): +{} +{ + "GENERATED" "ALWAYS" +} + +void generation_expression(): +{} +{ + "(" value_expression() ")" +} + +void default_clause(): +{} +{ + "DEFAULT" default_option() +} + +void default_option(): +{} +{ + literal() + | datetime_value_function() + | "USER" + | "CURRENT_USER" + | "CURRENT_ROLE" + | "SESSION_USER" + | "SYSTEM_USER" + | "CURRENT_CATALOG" + | "CURRENT_SCHEMA" + | "CURRENT_PATH" + | implicitly_typed_value_specification() +} + +void table_constraint_definition(): +{} +{ + [ constraint_name_definition() ] table_constraint() + [ constraint_characteristics() ] +} + +void table_constraint(): +{} +{ + unique_constraint_definition() + | referential_constraint_definition() + | check_constraint_definition() +} + +void unique_constraint_definition(): +{} +{ + unique_specification() "(" unique_column_list() ")" + | "UNIQUE" ( "VALUE" ) +} + +void unique_specification(): +{} +{ + "UNIQUE" + | "PRIMARY" "KEY" +} + +void unique_column_list(): +{} +{ + column_name_list() +} + +void referential_constraint_definition(): +{} +{ + "FOREIGN" "KEY" "(" referencing_columns() ")" + references_specification() +} + +void references_specification(): +{} +{ + "REFERENCES" referenced_table_and_columns() + [ "MATCH" match_type() ] [ referential_triggered_action() ] +} + +void match_type(): +{} +{ + "FULL" + | "PARTIAL" + | "SIMPLE" +} + +void referencing_columns(): +{} +{ + reference_column_list() +} + +void referenced_table_and_columns(): +{} +{ + table_name() [ "(" reference_column_list() ")" ] +} + +void reference_column_list(): +{} +{ + column_name_list() +} + +void referential_triggered_action(): +{} +{ + update_rule() [ delete_rule() ] + | delete_rule() [ update_rule() ] +} + +void update_rule(): +{} +{ + "ON" "UPDATE" referential_action() +} + +void delete_rule(): +{} +{ + "ON" "DELETE" referential_action() +} + +void referential_action(): +{} +{ + "CASCADE" + | "SET" "NULL" + | "SET" "DEFAULT" + | "RESTRICT" + | "NO" "ACTION" +} + +void check_constraint_definition(): +{} +{ + "CHECK" "(" search_condition() ")" +} + +void alter_table_statement(): +{} +{ + "ALTER" "TABLE" table_name() alter_table_action() +} + +void alter_table_action(): +{} +{ + add_column_definition() + | alter_column_definition() + | drop_column_definition() + | add_table_constraint_definition() + | alter_table_constraint_definition() + | drop_table_constraint_definition() + | add_system_versioning_clause() + | alter_system_versioning_clause() + | drop_system_versioning_clause() +} + +void add_column_definition(): +{} +{ + "ADD" [ "COLUMN" ] column_definition() +} + +void alter_column_definition(): +{} +{ + "ALTER" [ "COLUMN" ] identifier() alter_column_action() +} + +void alter_column_action(): +{} +{ + set_column_default_clause() + | drop_column_default_clause() + | set_column_not_null_clause() + | drop_column_not_null_clause() + | add_column_scope_clause() + | drop_column_scope_clause() + | alter_column_data_type_clause() + | alter_identity_column_specification() + | drop_identity_property_clause() + | drop_column_generation_expression_clause() +} + +void set_column_default_clause(): +{} +{ + "SET" default_clause() +} + +void drop_column_default_clause(): +{} +{ + "DROP" "DEFAULT" +} + +void set_column_not_null_clause(): +{} +{ + "SET" "NOT" "NULL" +} + +void drop_column_not_null_clause(): +{} +{ + "DROP" "NOT" "NULL" +} + +void add_column_scope_clause(): +{} +{ + "ADD" scope_clause() +} + +void drop_column_scope_clause(): +{} +{ + "DROP" "SCOPE" drop_behavior() +} + +void alter_column_data_type_clause(): +{} +{ + "SET" "DATA" "TYPE" data_type() +} + +void alter_identity_column_specification(): +{} +{ + set_identity_column_generation_clause() ( alter_identity_column_option() )* + | ( alter_identity_column_option() )+ +} + +void set_identity_column_generation_clause(): +{} +{ + "SET" "GENERATED" ( "ALWAYS" | "BY" "DEFAULT" ) +} + +void alter_identity_column_option(): +{} +{ + alter_sequence_generator_restart_option() + | "SET" basic_sequence_generator_option() +} + +void drop_identity_property_clause(): +{} +{ + "DROP" "IDENTITY" +} + +void drop_column_generation_expression_clause(): +{} +{ + "DROP" "EXPRESSION" +} + +void drop_column_definition(): +{} +{ + "DROP" [ "COLUMN" ] identifier() drop_behavior() +} + +void add_table_constraint_definition(): +{} +{ + "ADD" table_constraint_definition() +} + +void alter_table_constraint_definition(): +{} +{ + "ALTER" "CONSTRAINT" schema_qualified_name() constraint_enforcement() +} + +void drop_table_constraint_definition(): +{} +{ + "DROP" "CONSTRAINT" schema_qualified_name() drop_behavior() +} + +void add_system_versioning_clause(): +{} +{ + "ADD" system_versioning_clause() add_system_version_column_list() +} + +void add_system_version_column_list(): +{} +{ + "ADD" [ "COLUMN" ] column_definition_1() "ADD" [ "COLUMN" ] column_definition_2() +} + +void column_definition_1(): +{} +{ + column_definition() +} + +void column_definition_2(): +{} +{ + column_definition() +} + +void alter_system_versioning_clause(): +{} +{ + "ALTER" "SYSTEM" "VERSIONING" retention_period_specification() +} + +void drop_system_versioning_clause(): +{} +{ + "DROP" "SYSTEM" "VERSIONING" drop_behavior() +} + +void drop_table_statement(): +{} +{ + "DROP" "TABLE" + [ "IF" "EXISTS" ] // Non-standard + table_name() + [ drop_behavior() ] // Non-standard +} + +void view_definition(): +{} +{ + "CREATE" + [ or_replace() ] + [ "RECURSIVE" ] "VIEW" table_name() view_specification() + "AS" query_expression() [ "WITH" [ levels_clause() ] "CHECK" "OPTION" ] +} + +void view_specification(): +{} +{ + regular_view_specification() + | referenceable_view_specification() +} + +void regular_view_specification(): +{} +{ + [ "(" view_column_list() ")" ] +} + +void referenceable_view_specification(): +{} +{ + "OF" path_resolved_user_defined_type_name() [ subview_clause() ] + [ view_element_list() ] +} + +void subview_clause(): +{} +{ + "UNDER" table_name() +} + +void view_element_list(): +{} +{ + "(" view_element() ( "," view_element() )* ")" +} + +void view_element(): +{} +{ + self_referencing_column_specification() + | view_column_option() +} + +void view_column_option(): +{} +{ + identifier() "WITH" "OPTIONS" scope_clause() +} + +void levels_clause() #Unsupported: +{} +{ + "CASCADED" + | "LOCAL" +} + +void view_column_list(): +{} +{ + column_name_list() +} + +void drop_view_statement(): +{} +{ + "DROP" "VIEW" table_name() drop_behavior() +} + +void domain_definition(): +{} +{ + "CREATE" "DOMAIN" schema_qualified_name() [ "AS" ] predefined_type() + [ default_clause() ] + ( domain_constraint() )* + [ collate_clause() ] +} + +void domain_constraint(): +{} +{ + [ constraint_name_definition() ] check_constraint_definition() [ + constraint_characteristics() ] +} + +void alter_domain_statement(): +{} +{ + "ALTER" "DOMAIN" schema_qualified_name() alter_domain_action() +} + +void alter_domain_action(): +{} +{ + set_domain_default_clause() + | drop_domain_default_clause() + | add_domain_constraint_definition() + | drop_domain_constraint_definition() +} + +void set_domain_default_clause(): +{} +{ + "SET" default_clause() +} + +void drop_domain_default_clause(): +{} +{ + "DROP" "DEFAULT" +} + +void add_domain_constraint_definition(): +{} +{ + "ADD" domain_constraint() +} + +void drop_domain_constraint_definition(): +{} +{ + "DROP" "CONSTRAINT" schema_qualified_name() +} + +void drop_domain_statement(): +{} +{ + "DROP" "DOMAIN" schema_qualified_name() drop_behavior() +} + +void character_set_definition(): +{} +{ + "CREATE" "CHARACTER" "SET" character_set_name() [ "AS" ] + character_set_source() [ collate_clause() ] +} + +void character_set_source(): +{} +{ + "GET" character_set_specification() +} + +void drop_character_set_statement(): +{} +{ + "DROP" "CHARACTER" "SET" character_set_name() +} + +void collation_definition(): +{} +{ + "CREATE" "COLLATION" schema_qualified_name() "FOR" character_set_specification() + "FROM" schema_qualified_name() [ pad_characteristic() ] +} + +void pad_characteristic(): +{} +{ + "NO" "PAD" + | "PAD" "SPACE" +} + +void drop_collation_statement(): +{} +{ + "DROP" "COLLATION" schema_qualified_name() drop_behavior() +} + +void transliteration_definition(): +{} +{ + "CREATE" "TRANSLATION" schema_qualified_name() "FOR" source_character_set_specification() + "TO" target_character_set_specification() "FROM" transliteration_source() +} + +void source_character_set_specification(): +{} +{ + character_set_specification() +} + +void target_character_set_specification(): +{} +{ + character_set_specification() +} + +void transliteration_source(): +{} +{ + schema_qualified_name() + | transliteration_routine() +} + + +void transliteration_routine(): +{} +{ + specific_routine_designator() +} + +void drop_transliteration_statement(): +{} +{ + "DROP" "TRANSLATION" schema_qualified_name() +} + +void assertion_definition(): +{} +{ + "CREATE" "ASSERTION" schema_qualified_name() + "CHECK" "(" search_condition() ")" + [ constraint_characteristics() ] +} + +void drop_assertion_statement(): +{} +{ + "DROP" "ASSERTION" schema_qualified_name() [ drop_behavior() ] +} + +void trigger_definition(): +{} +{ + "CREATE" "TRIGGER" schema_qualified_name() trigger_action_time() trigger_event() + "ON" table_name() [ "REFERENCING" transition_table_or_variable_list() ] + triggered_action() +} + +void trigger_action_time(): +{} +{ + "BEFORE" + | "AFTER" + | "INSTEAD" "OF" +} + +void trigger_event(): +{} +{ + "INSERT" + | "DELETE" + | "UPDATE" [ "OF" trigger_column_list() ] +} + +void trigger_column_list(): +{} +{ + column_name_list() +} + +void triggered_action(): +{} +{ + [ "FOR" "EACH" ( "ROW" | "STATEMENT" ) ] + [ triggered_when_clause() ] + triggered_SQL_statement() +} + +void triggered_when_clause(): +{} +{ + "WHEN" "(" search_condition() ")" +} + +void triggered_SQL_statement(): +{} +{ + SQL_procedure_statement() + | "BEGIN" "ATOMIC" ( SQL_procedure_statement() ";" )+ "END" +} + +void transition_table_or_variable_list(): +{} +{ + ( transition_table_or_variable() )+ +} + +void transition_table_or_variable(): +{} +{ + "OLD" [ "ROW" ] [ "AS" ] identifier() + | "NEW" [ "ROW" ] [ "AS" ] identifier() + | "OLD" "TABLE" [ "AS" ] identifier() + | "NEW" "TABLE" [ "AS" ] identifier() +} + +void drop_trigger_statement(): +{} +{ + "DROP" "TRIGGER" schema_qualified_name() +} + +void user_defined_type_definition(): +{} +{ + "CREATE" "TYPE" user_defined_type_body() +} + +void user_defined_type_body(): +{} +{ + schema_resolved_user_defined_type_name() + [ subtype_clause() ] + [ "AS" representation() ] + [ user_defined_type_option_list() ] + [ method_specification_list() ] +} + +void user_defined_type_option_list(): +{} +{ + user_defined_type_option() ( user_defined_type_option() )* +} + +void user_defined_type_option(): +{} +{ + instantiable_clause() + | finality() + | reference_type_specification() + | cast_to_ref() + | cast_to_type() + | cast_to_distinct() + | cast_to_source() +} + +void subtype_clause(): +{} +{ + "UNDER" supertype_name() +} + +void supertype_name(): +{} +{ + path_resolved_user_defined_type_name() +} + +void representation(): +{} +{ + predefined_type() + | data_type() // TODO(kaikalur): fixit --collection_type() + | member_list() +} + +void member_list(): +{} +{ + "(" member() ( "," member() )* ")" +} + +void member(): +{} +{ + attribute_definition() +} + +void instantiable_clause(): +{} +{ + "INSTANTIABLE" + | "NOT" "INSTANTIABLE" +} + +void finality(): +{} +{ + "FINAL" + | "NOT" "FINAL" +} + +void reference_type_specification(): +{} +{ + user_defined_representation() + | derived_representation() + | system_generated_representation() +} + +void user_defined_representation(): +{} +{ + "REF" "USING" predefined_type() +} + +void derived_representation(): +{} +{ + "REF" "FROM" list_of_attributes() +} + +void system_generated_representation(): +{} +{ + "REF" "IS" "SYSTEM" "GENERATED" +} + +void cast_to_ref(): +{} +{ + "CAST" "(" "SOURCE" "AS" "REF" ")" "WITH" identifier() +} + +void cast_to_type(): +{} +{ + "CAST" "(" "REF" "AS" "SOURCE" ")" "WITH" identifier() +} + +void list_of_attributes(): +{} +{ + "(" identifier() ( "," identifier() )* ")" +} + +void cast_to_distinct(): +{} +{ + "CAST" "(" "SOURCE" "AS" "DISTINCT" ")" + "WITH" identifier() +} + +void cast_to_source(): +{} +{ + "CAST" "(" "DISTINCT" "AS" "SOURCE" ")" + "WITH" identifier() +} + +void method_specification_list(): +{} +{ + method_specification() ( "," method_specification() )* +} + +void method_specification(): +{} +{ + original_method_specification() + | overriding_method_specification() +} + +void original_method_specification(): +{} +{ + partial_method_specification() [ "SELF" "AS" "RESULT" ] [ "SELF" "AS" "LOCATOR" ] + [ method_characteristics() ] +} + +void overriding_method_specification(): +{} +{ + "OVERRIDING" partial_method_specification() +} + +void partial_method_specification(): +{} +{ + [ "INSTANCE" | "STATIC" | "CONSTRUCTOR" ] + "METHOD" identifier() SQL_parameter_declaration_list() + returns_clause() + [ "SPECIFIC" specific_identifier() ] +} + +void specific_identifier(): +{} +{ + [ schema_name() "." ]identifier() +} + +void method_characteristics(): +{} +{ + ( method_characteristic() )+ +} + +void method_characteristic(): +{} +{ + language_clause() + | parameter_style_clause() + | deterministic_characteristic() + | SQL_data_access_indication() + | null_call_clause() +} + +void attribute_definition(): +{} +{ + identifier() data_type() + [ attribute_default() ] + [ collate_clause() ] +} + +void attribute_default(): +{} +{ + default_clause() +} + +void alter_type_statement(): +{} +{ + "ALTER" "TYPE" schema_resolved_user_defined_type_name() alter_type_action() +} + +void alter_type_action(): +{} +{ + add_attribute_definition() + | drop_attribute_definition() + | add_original_method_specification() + | add_overriding_method_specification() + | drop_method_specification() +} + +void add_attribute_definition(): +{} +{ + "ADD" "ATTRIBUTE" attribute_definition() +} + +void drop_attribute_definition(): +{} +{ + "DROP" "ATTRIBUTE" identifier() "RESTRICT" +} + +void add_original_method_specification(): +{} +{ + "ADD" original_method_specification() +} + +void add_overriding_method_specification(): +{} +{ + "ADD" overriding_method_specification() +} + +void drop_method_specification(): +{} +{ + "DROP" specific_method_specification_designator() "RESTRICT" +} + +void specific_method_specification_designator(): +{} +{ + [ "INSTANCE" | "STATIC" | "CONSTRUCTOR" ] + "METHOD" identifier() data_type_list() +} + +void drop_data_type_statement(): +{} +{ + "DROP" "TYPE" schema_resolved_user_defined_type_name() drop_behavior() +} + +void SQL_invoked_routine(): +{} +{ + schema_routine() +} + +void schema_routine(): +{} +{ + schema_procedure() + | schema_function() +} + +void schema_procedure(): +{} +{ + "CREATE" SQL_invoked_procedure() +} + +void schema_function(): +{} +{ + "CREATE" + [ or_replace() ] + SQL_invoked_function() +} + +void SQL_invoked_procedure(): +{} +{ + "PROCEDURE" schema_qualified_name() SQL_parameter_declaration_list() + routine_characteristics() + routine_body() +} + +void SQL_invoked_function(): +{} +{ + ( function_specification() | method_specification_designator() ) routine_body() +} + +void SQL_parameter_declaration_list(): +{} +{ + "(" [ SQL_parameter_declaration() + ( "," SQL_parameter_declaration() )* ] ")" +} + +void SQL_parameter_declaration(): +{} +{ + [ parameter_mode() ] + [ identifier() ] + parameter_type() [ "RESULT" ] + [ "DEFAULT" parameter_default() ] +} + +void parameter_default(): +{} +{ + value_expression() + | contextually_typed_value_specification() +} + +void parameter_mode(): +{} +{ + "IN" + | "OUT" + | "INOUT" +} + +void parameter_type(): +{} +{ + data_type() [ locator_indication() ] +} + +void locator_indication(): +{} +{ + "AS" "LOCATOR" +} + +void function_specification(): +{} +{ + "FUNCTION" schema_qualified_name() SQL_parameter_declaration_list() + returns_clause() + [ routine_description() ] + routine_characteristics() + [ dispatch_clause() ] +} + +void method_specification_designator(): +{} +{ + "SPECIFIC" "METHOD" specific_identifier() + | [ "INSTANCE" | "STATIC" | "CONSTRUCTOR" ] + "METHOD" identifier() SQL_parameter_declaration_list() + [ returns_clause() ] + "FOR" schema_resolved_user_defined_type_name() +} + +void routine_characteristics(): +{} +{ + ( routine_characteristic() )* +} + +void routine_characteristic(): +{} +{ + language_clause() + | parameter_style_clause() + | "SPECIFIC" schema_qualified_name() + | deterministic_characteristic() + | SQL_data_access_indication() + | null_call_clause() + | returned_result_sets_characteristic() + | savepoint_level_indication() +} + +void savepoint_level_indication(): +{} +{ + "NEW" "SAVEPOINT" "LEVEL" + | "OLD" "SAVEPOINT" "LEVEL" +} + +void returned_result_sets_characteristic(): +{} +{ + "DYNAMIC" "RESULT" "SETS" maximum_returned_result_sets() +} + +void parameter_style_clause(): +{} +{ + "PARAMETER" "STYLE" parameter_style() +} + +void dispatch_clause(): +{} +{ + "STATIC" "DISPATCH" +} + +void returns_clause(): +{} +{ + "RETURNS" returns_type() +} + +void returns_type(): +{} +{ + returns_data_type() [ result_cast() ] + | returns_table_type() +} + +void returns_table_type(): +{} +{ + "TABLE" table_function_column_list() +} + +void table_function_column_list(): +{} +{ + "(" table_function_column_list_element() + ( "," table_function_column_list_element() )* ")" +} + +void table_function_column_list_element(): +{} +{ + identifier() data_type() +} + +void result_cast(): +{} +{ + "CAST" "FROM" result_cast_from_type() +} + +void result_cast_from_type(): +{} +{ + data_type() [ locator_indication() ] +} + +void returns_data_type(): +{} +{ + data_type() [ locator_indication() ] +} + +void routine_body(): +{} +{ + SQL_routine_spec() + | external_body_reference() +} + +void SQL_routine_spec(): +{} +{ + [ rights_clause() ] SQL_routine_body() +} + +void rights_clause(): +{} +{ + "SQL" "SECURITY" "INVOKER" + | "SQL" "SECURITY" "DEFINER" +} + +void SQL_routine_body(): +{} +{ + SQL_procedure_statement() +} + +void external_body_reference(): +{} +{ + "EXTERNAL" [ "NAME" external_routine_name() ] + [ parameter_style_clause() ] + [ transform_group_specification() ] + [ external_security_clause() ] +} + +void external_security_clause(): +{} +{ + "EXTERNAL" "SECURITY" "DEFINER" + | "EXTERNAL" "SECURITY" "INVOKER" + | "EXTERNAL" "SECURITY" "IMPLEMENTATION" "DEFINED" +} + +void parameter_style(): +{} +{ + "SQL" + | "GENERAL" +} + +void deterministic_characteristic(): +{} +{ + "DETERMINISTIC" + | "NOT" "DETERMINISTIC" +} + +void SQL_data_access_indication(): +{} +{ + "NO" "SQL" + | "CONTAINS" "SQL" + | "READS" "SQL" "DATA" + | "MODIFIES" "SQL" "DATA" +} + +void null_call_clause(): +{} +{ + "RETURNS" "NULL" "ON" "NULL" "INPUT" + | "CALLED" "ON" "NULL" "INPUT" +} + +void maximum_returned_result_sets(): +{} +{ + <unsigned_integer> +} + +void transform_group_specification(): +{} +{ + "TRANSFORM" "GROUP" ( single_group_specification() | multiple_group_specification() ) +} + +void single_group_specification(): +{} +{ + identifier() +} + +void multiple_group_specification(): +{} +{ + group_specification() ( "," group_specification() )* +} + +void group_specification(): +{} +{ + identifier() "FOR" "TYPE" path_resolved_user_defined_type_name() +} + +void alter_routine_statement(): +{} +{ + "ALTER" specific_routine_designator() + alter_routine_characteristics() alter_routine_behavior() +} + +void alter_routine_characteristics(): +{} +{ + ( alter_routine_characteristic() )+ +} + +void alter_routine_characteristic(): +{} +{ + language_clause() + | parameter_style_clause() + | SQL_data_access_indication() + | null_call_clause() + | returned_result_sets_characteristic() + | "NAME" external_routine_name() +} + +void alter_routine_behavior(): +{} +{ + "RESTRICT" +} + +void drop_routine_statement(): +{} +{ + "DROP" specific_routine_designator() drop_behavior() +} + +void user_defined_cast_definition(): +{} +{ + "CREATE" "CAST" "(" source_data_type() "AS" target_data_type() ")" + "WITH" cast_function() + [ "AS" "ASSIGNMENT" ] +} + +void cast_function(): +{} +{ + specific_routine_designator() +} + +void source_data_type(): +{} +{ + data_type() +} + +void target_data_type(): +{} +{ + data_type() +} + +void drop_user_defined_cast_statement(): +{} +{ + "DROP" "CAST" "(" source_data_type() "AS" target_data_type() ")" + drop_behavior() +} + +void user_defined_ordering_definition(): +{} +{ + "CREATE" "ORDERING" "FOR" schema_resolved_user_defined_type_name() ordering_form() +} + +void ordering_form(): +{} +{ + equals_ordering_form() + | full_ordering_form() +} + +void equals_ordering_form(): +{} +{ + "EQUALS" "ONLY" "BY" ordering_category() +} + +void full_ordering_form(): +{} +{ + "ORDER" "FULL" "BY" ordering_category() +} + +void ordering_category(): +{} +{ + relative_category() + | map_category() + | state_category() +} + +void relative_category(): +{} +{ + "RELATIVE" "WITH" relative_function_specification() +} + +void map_category(): +{} +{ + "MAP" "WITH" map_function_specification() +} + +void state_category(): +{} +{ + "STATE" [ schema_qualified_name() ] +} + +void relative_function_specification(): +{} +{ + specific_routine_designator() +} + +void map_function_specification(): +{} +{ + specific_routine_designator() +} + +void drop_user_defined_ordering_statement(): +{} +{ + "DROP" "ORDERING" "FOR" schema_resolved_user_defined_type_name() drop_behavior() +} + +void transform_definition(): +{} +{ + "CREATE" ( "TRANSFORM" | "TRANSFORMS" ) "FOR" + schema_resolved_user_defined_type_name() ( transform_group() )+ +} + +void transform_group(): +{} +{ + identifier() "(" transform_element_list() ")" +} + +void transform_element_list(): +{} +{ + transform_element() [ "," transform_element() ] +} + +void transform_element(): +{} +{ + to_sql() + | from_sql() +} + +void to_sql(): +{} +{ + "TO" "SQL" "WITH" to_sql_function() +} + +void from_sql(): +{} +{ + "FROM" "SQL" "WITH" from_sql_function() +} + +void to_sql_function(): +{} +{ + specific_routine_designator() +} + +void from_sql_function(): +{} +{ + specific_routine_designator() +} + +void alter_transform_statement(): +{} +{ + "ALTER" ( "TRANSFORM" | "TRANSFORMS" ) + "FOR" schema_resolved_user_defined_type_name() ( alter_group() )+ +} + +void alter_group(): +{} +{ + identifier() "(" alter_transform_action_list() ")" +} + +void alter_transform_action_list(): +{} +{ + alter_transform_action() ( "," alter_transform_action() )* +} + +void alter_transform_action(): +{} +{ + add_transform_element_list() + | drop_transform_element_list() +} + +void add_transform_element_list(): +{} +{ + "ADD" "(" transform_element_list() ")" +} + +void drop_transform_element_list(): +{} +{ + "DROP" "(" transform_kind() + [ "," transform_kind() ] drop_behavior() ")" +} + +void transform_kind(): +{} +{ + "TO" "SQL" + | "FROM" "SQL" +} + +void drop_transform_statement(): +{} +{ + "DROP" ( "TRANSFORM" | "TRANSFORMS" ) transforms_to_be_dropped() + "FOR" schema_resolved_user_defined_type_name() drop_behavior() +} + +void transforms_to_be_dropped(): +{} +{ + "ALL" + | transform_group_element() +} + +void transform_group_element(): +{} +{ + identifier() +} + +void sequence_generator_definition(): +{} +{ + "CREATE" "SEQUENCE" schema_qualified_name() [ sequence_generator_options() ] +} + +void sequence_generator_options(): +{} +{ + ( sequence_generator_option() )+ +} + +void sequence_generator_option(): +{} +{ + sequence_generator_data_type_option() + | common_sequence_generator_options() +} + +void common_sequence_generator_options(): +{} +{ + ( common_sequence_generator_option() )+ +} + +void common_sequence_generator_option(): +{} +{ + sequence_generator_start_with_option() + | basic_sequence_generator_option() +} + +void basic_sequence_generator_option(): +{} +{ + sequence_generator_increment_by_option() + | sequence_generator_maxvalue_option() + | sequence_generator_minvalue_option() + | sequence_generator_cycle_option() +} + +void sequence_generator_data_type_option(): +{} +{ + "AS" data_type() +} + +void sequence_generator_start_with_option(): +{} +{ + "START" "WITH" sequence_generator_start_value() +} + +void sequence_generator_start_value(): +{} +{ + signed_numeric_literal() +} + +void sequence_generator_increment_by_option(): +{} +{ + "INCREMENT" "BY" sequence_generator_increment() +} + +void sequence_generator_increment(): +{} +{ + signed_numeric_literal() +} + +void sequence_generator_maxvalue_option(): +{} +{ + "MAXVALUE" sequence_generator_max_value() + | "NO" "MAXVALUE" +} + +void sequence_generator_max_value(): +{} +{ + signed_numeric_literal() +} + +void sequence_generator_minvalue_option(): +{} +{ + "MINVALUE" sequence_generator_min_value() + | "NO" "MINVALUE" +} + +void sequence_generator_min_value(): +{} +{ + signed_numeric_literal() +} + +void sequence_generator_cycle_option(): +{} +{ + "CYCLE" + | "NO" "CYCLE" +} + +void alter_sequence_generator_statement(): +{} +{ + "ALTER" "SEQUENCE" schema_qualified_name() alter_sequence_generator_options() +} + +void alter_sequence_generator_options(): +{} +{ + ( alter_sequence_generator_option() )+ +} + +void alter_sequence_generator_option(): +{} +{ + alter_sequence_generator_restart_option() + | basic_sequence_generator_option() +} + +void alter_sequence_generator_restart_option(): +{} +{ + "RESTART" [ "WITH" sequence_generator_restart_value() ] +} + +void sequence_generator_restart_value(): +{} +{ + signed_numeric_literal() +} + +void drop_sequence_generator_statement(): +{} +{ + "DROP" "SEQUENCE" schema_qualified_name() drop_behavior() +} + +void grant_statement(): +{} +{ + grant_privilege_statement() + | grant_role_statement() +} + +void grant_privilege_statement(): +{} +{ + "GRANT" privileges() "TO" grantee() ( "," grantee() )* + [ "WITH" "HIERARCHY" "OPTION" ] + [ "WITH" "GRANT" "OPTION" ] + [ "GRANTED" "BY" grantor() ] +} + +void privileges(): +{} +{ + object_privileges() "ON" object_name() +} + +void object_name(): +{} +{ + [ "TABLE" ] table_name() + | "DOMAIN" schema_qualified_name() + | "COLLATION" schema_qualified_name() + | "CHARACTER" "SET" character_set_name() + | "TRANSLATION" schema_qualified_name() + | "TYPE" schema_resolved_user_defined_type_name() + | "SEQUENCE" schema_qualified_name() + | specific_routine_designator() +} + +void object_privileges(): +{} +{ + "ALL" "PRIVILEGES" + | action() ( "," action() )* +} + +void action(): +{} +{ + "SELECT" + | "SELECT" "(" privilege_column_list() ")" + | "SELECT" "(" privilege_method_list() ")" + | "DELETE" + | "INSERT" [ "(" privilege_column_list() ")" ] + | "UPDATE" [ "(" privilege_column_list() ")" ] + | "REFERENCES" [ "(" privilege_column_list() ")" ] + | "USAGE" + | "TRIGGER" + | "UNDER" + | "EXECUTE" +} + +void privilege_method_list(): +{} +{ + specific_routine_designator() ( "," specific_routine_designator() )* +} + +void privilege_column_list(): +{} +{ + column_name_list() +} + +void grantee(): +{} +{ + "PUBLIC" + | identifier() +} + +void grantor(): +{} +{ + "CURRENT_USER" + | "CURRENT_ROLE" +} + +void role_definition(): +{} +{ + "CREATE" "ROLE" identifier() [ "WITH" "ADMIN" grantor() ] +} + +void grant_role_statement(): +{} +{ + "GRANT" identifier() ( "," identifier() )* + "TO" grantee() ( "," grantee() )* + [ "WITH" "ADMIN" "OPTION" ] + [ "GRANTED" "BY" grantor() ] +} + +void drop_role_statement(): +{} +{ + "DROP" "ROLE" identifier() +} + +void revoke_statement(): +{} +{ + revoke_privilege_statement() + | revoke_role_statement() +} + +void revoke_privilege_statement(): +{} +{ + "REVOKE" [ revoke_option_extension() ] privileges() + "FROM" grantee() ( "," grantee() )* + [ "GRANTED" "BY" grantor() ] + drop_behavior() +} + +void revoke_option_extension(): +{} +{ + "GRANT" "OPTION" "FOR" + | "HIERARCHY" "OPTION" "FOR" +} + +void revoke_role_statement(): +{} +{ + "REVOKE" [ "ADMIN" "OPTION" "FOR" ] identifier() ( "," identifier() )* + "FROM" grantee() ( "," grantee() )* + [ "GRANTED" "BY" grantor() ] + drop_behavior() +} + +void SQL_client_module_definition(): +{} +{ + module_name_clause() language_clause() module_authorization_clause() + [ module_path_specification() ] + [ module_transform_group_specification() ] + [ module_collations() ] + ( temporary_table_declaration() )* + ( module_contents() )+ +} + +void module_authorization_clause(): +{} +{ + "SCHEMA" schema_name() + | "AUTHORIZATION" identifier() + [ "FOR" "STATIC" ( "ONLY" | "AND" "DYNAMIC" ) ] + | "SCHEMA" schema_name() "AUTHORIZATION" identifier() + [ "FOR" "STATIC" ( "ONLY" | "AND" "DYNAMIC" ) ] +} + +void module_path_specification(): +{} +{ + path_specification() +} + +void module_transform_group_specification(): +{} +{ + transform_group_specification() +} + +void module_collations(): +{} +{ + ( module_collation_specification() )+ +} + +void module_collation_specification(): +{} +{ + "COLLATION" schema_qualified_name() [ "FOR" character_set_specification_list() ] +} + +void character_set_specification_list(): +{} +{ + character_set_specification() ( "," character_set_specification() )* +} + +void module_contents(): +{} +{ + declare_cursor() + | dynamic_declare_cursor() + | externally_invoked_procedure() +} + +void module_name_clause(): +{} +{ + "MODULE" [ identifier() ] [ module_character_set_specification() ] +} + +void module_character_set_specification(): +{} +{ + "NAMES" "ARE" character_set_specification() +} + +void externally_invoked_procedure(): +{} +{ + "PROCEDURE" identifier() host_parameter_declaration_list() ";" + SQL_procedure_statement() ";" +} + +void host_parameter_declaration_list(): +{} +{ + "(" host_parameter_declaration() + ( "," host_parameter_declaration() )* ")" +} + +void host_parameter_declaration(): +{} +{ + host_parameter_name() host_parameter_data_type() + | status_parameter() +} + +void host_parameter_data_type(): +{} +{ + data_type() [ locator_indication() ] +} + +void status_parameter(): +{} +{ + "SQLSTATE" +} + +void SQL_procedure_statement(): +{} +{ + SQL_executable_statement() +} + +void SQL_executable_statement(): +{} +{ + SQL_schema_statement() + | SQL_data_statement() + | SQL_control_statement() + | SQL_transaction_statement() + | SQL_connection_statement() + | SQL_session_statement() + | SQL_diagnostics_statement() + | SQL_dynamic_statement() +} + +void SQL_schema_statement(): +{} +{ + SQL_schema_definition_statement() + | SQL_schema_manipulation_statement() +} + +void SQL_schema_definition_statement(): +{} +{ + schema_definition() + | table_definition() + | LOOKAHEAD(4) view_definition() + | SQL_invoked_routine() + | grant_statement() + | role_definition() + | domain_definition() + | character_set_definition() + | collation_definition() + | transliteration_definition() + | assertion_definition() + | trigger_definition() + | user_defined_type_definition() + | user_defined_cast_definition() + | user_defined_ordering_definition() + | transform_definition() + | sequence_generator_definition() +} + +void SQL_schema_manipulation_statement(): +{} +{ + drop_schema_statement() + | alter_table_statement() + | drop_table_statement() + | drop_view_statement() + | alter_routine_statement() + | drop_routine_statement() + | drop_user_defined_cast_statement() + | revoke_statement() + | drop_role_statement() + | alter_domain_statement() + | drop_domain_statement() + | drop_character_set_statement() + | drop_collation_statement() + | drop_transliteration_statement() + | drop_assertion_statement() + | drop_trigger_statement() + | alter_type_statement() + | drop_data_type_statement() + | drop_user_defined_ordering_statement() + | alter_transform_statement() + | drop_transform_statement() + | alter_sequence_generator_statement() + | drop_sequence_generator_statement() +} + +void SQL_data_statement(): +{} +{ + open_statement() + | fetch_statement() + | close_statement() + | select_statement_single_row() + | SQL_data_change_statement() + + //TODO(kaikalur):fix the next two + //| free_locator_statement() + //| hold_locator_statement() +} + +void SQL_data_change_statement(): +{} +{ + delete_statement_positioned() + | delete_statement_searched() + | insert_statement() + | update_statement_positioned() + | update_statement_searched() + | truncate_table_statement() + | merge_statement() +} + +void SQL_control_statement(): +{} +{ + call_statement() + | return_statement() +} + +void SQL_transaction_statement(): +{} +{ + start_transaction_statement() + | set_transaction_statement() + | set_constraints_mode_statement() + | savepoint_statement() + | release_savepoint_statement() + | commit_statement() + | rollback_statement() +} + +void SQL_connection_statement(): +{} +{ + connect_statement() + | set_connection_statement() + | disconnect_statement() +} + +void SQL_session_statement(): +{} +{ + set_session_user_identifier_statement() + | set_role_statement() + | set_local_time_zone_statement() + | set_session_characteristics_statement() + | set_catalog_statement() + | set_schema_statement() + | set_names_statement() + | set_path_statement() + | set_transform_group_statement() + | set_session_collation_statement() +} + +void SQL_diagnostics_statement(): +{} +{ + get_diagnostics_statement() +} + +void SQL_dynamic_statement(): +{} +{ + SQL_descriptor_statement() + | prepare_statement() + | deallocate_prepared_statement() + | describe_statement() + | execute_statement() + | execute_immediate_statement() + | SQL_dynamic_data_statement() +} + +void SQL_dynamic_data_statement(): +{} +{ + allocate_cursor_statement() + | dynamic_open_statement() + | dynamic_fetch_statement() + | dynamic_close_statement() + | dynamic_delete_statement_positioned() + | dynamic_update_statement_positioned() +} + +void SQL_descriptor_statement(): +{} +{ + allocate_descriptor_statement() + | deallocate_descriptor_statement() + | set_descriptor_statement() + | get_descriptor_statement() +} + +void declare_cursor(): +{} +{ + "DECLARE" cursor_name() cursor_properties() + "FOR" cursor_specification() +} + +void cursor_properties(): +{} +{ + [ cursor_sensitivity() ] [ cursor_scrollability() ] "CURSOR" + [ cursor_holdability() ] + [ cursor_returnability() ] +} + +void cursor_sensitivity(): +{} +{ + "SENSITIVE" + | "INSENSITIVE" + | "ASENSITIVE" +} + +void cursor_scrollability(): +{} +{ + "SCROLL" + | "NO" "SCROLL" +} + +void cursor_holdability(): +{} +{ + "WITH" "HOLD" + | "WITHOUT" "HOLD" +} + +void cursor_returnability(): +{} +{ + "WITH" "RETURN" + | "WITHOUT" "RETURN" +} + +void cursor_specification(): +{} +{ + query_expression() [ updatability_clause() #Unsupported ] +} + +void updatability_clause(): +{} +{ + "FOR" ( "READ" "ONLY" | "UPDATE" [ "OF" column_name_list() ] ) +} + +void open_statement(): +{} +{ + "OPEN" cursor_name() +} + +void fetch_statement(): +{} +{ + "FETCH" [ [ fetch_orientation() ] "FROM" ] cursor_name() "INTO" fetch_target_list() +} + +void fetch_orientation(): +{} +{ + "NEXT" | "PRIOR" | "FIRST" | "LAST" | ( "ABSOLUTE" | "RELATIVE" ) simple_value_specification() +} + +void fetch_target_list(): +{} +{ + target_specification() ( "," target_specification() )* +} + +void close_statement(): +{} +{ + "CLOSE" cursor_name() +} + +void select_statement_single_row(): +{} +{ + "SELECT" [ set_quantifier() ] select_list() + [ "INTO" select_target_list() ] //TODO(kaikalur): check optional + [ table_expression() ] //TODO(kaikalur): check optional +} + +void select_target_list(): +{} +{ + target_specification() ( "," target_specification() )* +} + +void delete_statement_positioned(): +{} +{ + "DELETE" "FROM" target_table() [ [ "AS" ] identifier() ] + "WHERE" "CURRENT" "OF" cursor_name() +} + +void target_table(): +{} +{ + table_name() + | "ONLY" "(" table_name() ")" +} + +void delete_statement_searched(): +{} +{ + "DELETE" "FROM" target_table() [ [ "AS" ] identifier() ] + [ "WHERE" search_condition() ] +} + +void truncate_table_statement(): +{} +{ + "TRUNCATE" "TABLE" target_table() [ identity_column_restart_option() ] +} + +void identity_column_restart_option(): +{} +{ + "CONTINUE" "IDENTITY" + | "RESTART" "IDENTITY" +} + +void insert_statement() #Insert: +{} +{ + "INSERT" "INTO" insertion_target() insert_columns_and_source() +} + +void insertion_target(): +{} +{ + table_name() +} + +void insert_columns_and_source(): +{} +{ + from_subquery() + | from_constructor() + | from_default() +} + +void from_subquery(): +{} +{ + [ "(" insert_column_list() ")" ] + [ override_clause() ] + query_expression() +} + +void from_constructor(): +{} +{ + [ "(" insert_column_list() ")" ] + [ override_clause() ] + contextually_typed_table_value_constructor() +} + +void override_clause(): +{} +{ + "OVERRIDING" "USER" "VALUE" + | "OVERRIDING" "SYSTEM" "VALUE" +} + +void from_default(): +{} +{ + "DEFAULT" "VALUES" +} + +void insert_column_list(): +{} +{ + column_name_list() +} + +void merge_statement(): +{} +{ + "MERGE" "INTO" target_table() [ [ "AS" ] identifier() ] + "USING" table_reference() + "ON" search_condition() merge_operation_specification() +} + +void merge_operation_specification(): +{} +{ + ( merge_when_clause() )+ +} + +void merge_when_clause(): +{} +{ + merge_when_matched_clause() + | merge_when_not_matched_clause() +} + +void merge_when_matched_clause(): +{} +{ + "WHEN" "MATCHED" [ "AND" search_condition() ] + "THEN" merge_update_or_delete_specification() +} + +void merge_update_or_delete_specification(): +{} +{ + merge_update_specification() + | merge_delete_specification() +} + +void merge_when_not_matched_clause(): +{} +{ + "WHEN" "NOT" "MATCHED" [ "AND" search_condition() ] + "THEN" merge_insert_specification() +} + +void merge_update_specification(): +{} +{ + "UPDATE" "SET" set_clause_list() +} + +void merge_delete_specification(): +{} +{ + "DELETE" +} + +void merge_insert_specification(): +{} +{ + "INSERT" [ "(" insert_column_list() ")" ] + [ override_clause() ] + "VALUES" merge_insert_value_list() +} + +void merge_insert_value_list(): +{} +{ + "(" + merge_insert_value_element() ( "," merge_insert_value_element() )* + ")" +} + +void merge_insert_value_element(): +{} +{ + value_expression() + | contextually_typed_value_specification() +} + +void update_statement_positioned(): +{} +{ + "UPDATE" target_table() [ [ "AS" ] identifier() ] + "SET" set_clause_list() + "WHERE" "CURRENT" "OF" cursor_name() +} + +void update_statement_searched(): +{} +{ + "UPDATE" target_table() [ [ "AS" ] identifier() ] + "SET" set_clause_list() + [ "WHERE" search_condition() ] +} + +void set_clause_list(): +{} +{ + set_clause() ( "," set_clause() )* +} + +void set_clause(): +{} +{ + multiple_column_assignment() + | set_target() "=" update_source() +} + +void set_target(): +{} +{ + update_target() + | mutated_set_clause() +} + +void multiple_column_assignment(): +{} +{ + set_target_list() "=" assigned_row() +} + +void set_target_list(): +{} +{ + "(" set_target() ( "," set_target() )* ")" +} + +void assigned_row(): +{} +{ + contextually_typed_row_value_expression() +} + +void update_target(): +{} +{ + identifier() | identifier() left_bracket_or_trigraph() simple_value_specification() right_bracket_or_trigraph() +} + +void mutated_set_clause(): +{} +{ + // TODO(kaikalur): fixit mutated_target() "." identifier() + identifier() ( "." identifier() )+ +} + +void mutated_target(): +{} +{ + identifier() + | mutated_set_clause() +} + +void update_source(): +{} +{ + value_expression() + | contextually_typed_value_specification() +} + +void temporary_table_declaration(): +{} +{ + "DECLARE" "LOCAL" "TEMPORARY" "TABLE" table_name() table_element_list() + [ "ON" "COMMIT" table_commit_action() "ROWS" ] +} + +void call_statement(): +{} +{ + "CALL" routine_invocation() +} + +void return_statement(): +{} +{ + "RETURN" return_value() +} + +void return_value(): +{} +{ + value_expression() + | "NULL" +} + +void start_transaction_statement(): +{} +{ + "START" "TRANSACTION" [ transaction_characteristics() ] +} + +void set_transaction_statement(): +{} +{ + "SET" [ "LOCAL" ] "TRANSACTION" [ transaction_characteristics() ] +} + +void transaction_characteristics(): +{} +{ + transaction_mode() ( "," transaction_mode() )* +} + +void transaction_mode(): +{} +{ + isolation_level() + | transaction_access_mode() + | diagnostics_size() +} + +void transaction_access_mode(): +{} +{ + "READ" "ONLY" + | "READ" "WRITE" +} + +void isolation_level(): +{} +{ + "ISOLATION" "LEVEL" level_of_isolation() +} + +void level_of_isolation(): +{} +{ + "READ" "UNCOMMITTED" + | "READ" "COMMITTED" + | "REPEATABLE" "READ" + | "SERIALIZABLE" +} + +void diagnostics_size(): +{} +{ + "DIAGNOSTICS" "SIZE" simple_value_specification() +} + +void set_constraints_mode_statement(): +{} +{ + "SET" "CONSTRAINTS" constraint_name_list() ( "DEFERRED" | "IMMEDIATE" ) +} + +void constraint_name_list(): +{} +{ + "ALL" + | schema_qualified_name() ( "," schema_qualified_name() )* +} + +void savepoint_statement(): +{} +{ + "SAVEPOINT" savepoint_specifier() +} + +void savepoint_specifier(): +{} +{ + identifier() +} + +void release_savepoint_statement(): +{} +{ + "RELEASE" "SAVEPOINT" savepoint_specifier() +} + +void commit_statement(): +{} +{ + "COMMIT" [ "WORK" ] [ "AND" [ "NO" ] "CHAIN" ] +} + +void rollback_statement(): +{} +{ + "ROLLBACK" [ "WORK" ] [ "AND" [ "NO" ] "CHAIN" ] [ savepoint_clause() ] +} + +void savepoint_clause(): +{} +{ + "TO" "SAVEPOINT" savepoint_specifier() +} + +void connect_statement(): +{} +{ + "CONNECT" "TO" connection_target() +} + +void connection_target(): +{} +{ + simple_value_specification() [ "AS" simple_value_specification() ] [ "USER" simple_value_specification() ] + | "DEFAULT" +} + +void set_connection_statement(): +{} +{ + "SET" "CONNECTION" connection_object() +} + +void connection_object(): +{} +{ + "DEFAULT" + | simple_value_specification() +} + +void disconnect_statement(): +{} +{ + "DISCONNECT" disconnect_object() +} + +void disconnect_object(): +{} +{ + connection_object() + | "ALL" + | "CURRENT" +} + +void set_session_characteristics_statement(): +{} +{ + "SET" "SESSION" "CHARACTERISTICS" "AS" session_characteristic_list() +} + +void session_characteristic_list(): +{} +{ + session_characteristic() ( "," session_characteristic() )* +} + +void session_characteristic(): +{} +{ + session_transaction_characteristics() +} + +void session_transaction_characteristics(): +{} +{ + "TRANSACTION" transaction_mode() ( "," transaction_mode() )* +} + +void set_session_user_identifier_statement(): +{} +{ + "SET" "SESSION" "AUTHORIZATION" value_specification() +} + +void set_role_statement(): +{} +{ + "SET" "ROLE" role_specification() +} + +void role_specification(): +{} +{ + value_specification() + | "NONE" +} + +void set_local_time_zone_statement(): +{} +{ + "SET" "TIME" "ZONE" set_time_zone_value() +} + +void set_time_zone_value(): +{} +{ + interval_value_expression() + | "LOCAL" +} + +void set_catalog_statement(): +{} +{ + "SET" catalog_name_characteristic() +} + +void catalog_name_characteristic(): +{} +{ + "CATALOG" value_specification() +} + +void set_schema_statement(): +{} +{ + "SET" schema_name_characteristic() +} + +void schema_name_characteristic(): +{} +{ + "SCHEMA" value_specification() +} + +void set_names_statement(): +{} +{ + "SET" character_set_name_characteristic() +} + +void character_set_name_characteristic(): +{} +{ + "NAMES" value_specification() +} + +void set_path_statement(): +{} +{ + "SET" SQL_path_characteristic() +} + +void SQL_path_characteristic(): +{} +{ + "PATH" value_specification() +} + +void set_transform_group_statement(): +{} +{ + "SET" transform_group_characteristic() +} + +void transform_group_characteristic(): +{} +{ + "DEFAULT" "TRANSFORM" "GROUP" value_specification() + | "TRANSFORM" "GROUP" "FOR" "TYPE" path_resolved_user_defined_type_name() value_specification() +} + +void set_session_collation_statement(): +{} +{ + "SET" "COLLATION" collation_specification() [ "FOR" character_set_specification_list() ] + | "SET" "NO" "COLLATION" [ "FOR" character_set_specification_list() ] +} + +void collation_specification(): +{} +{ + value_specification() +} + +void allocate_descriptor_statement(): +{} +{ + "ALLOCATE" [ "SQL" ] "DESCRIPTOR" descriptor_name() [ "WITH" "MAX" simple_value_specification() ] +} + +void deallocate_descriptor_statement(): +{} +{ + "DEALLOCATE" [ "SQL" ] "DESCRIPTOR" descriptor_name() +} + +void get_descriptor_statement(): +{} +{ + "GET" [ "SQL" ] "DESCRIPTOR" descriptor_name() get_descriptor_information() +} + +void get_descriptor_information(): +{} +{ + get_header_information() ( "," get_header_information() )* + | "VALUE" simple_value_specification() get_item_information() + ( "," get_item_information() )* +} + +void get_header_information(): +{} +{ + simple_target_specification_1() "=" header_item_name() +} + +void header_item_name(): +{} +{ + "COUNT" + | "KEY_TYPE" + | "DYNAMIC_FUNCTION" + | "DYNAMIC_FUNCTION_CODE" + | "TOP_LEVEL_COUNT" +} + +void get_item_information(): +{} +{ + simple_target_specification_2() "=" descriptor_item_name() +} + +void simple_target_specification_1(): +{} +{ + simple_target_specification() +} + +void simple_target_specification_2(): +{} +{ + simple_target_specification() +} + +void descriptor_item_name(): +{} +{ + "CARDINALITY" + | "CHARACTER_SET_CATALOG" + | "CHARACTER_SET_NAME" + | "CHARACTER_SET_SCHEMA" + | "COLLATION_CATALOG" + | "COLLATION_NAME" + | "COLLATION_SCHEMA" + | "DATA" + | "DATETIME_INTERVAL_CODE" + | "DATETIME_INTERVAL_PRECISION" + | "DEGREE" + | "INDICATOR" + | "KEY_MEMBER" + | "LENGTH" + | "LEVEL" + | "NAME" + | "NULLABLE" + | "OCTET_LENGTH" + | "PARAMETER_MODE" + | "PARAMETER_ORDINAL_POSITION" + | "PARAMETER_SPECIFIC_CATALOG" + | "PARAMETER_SPECIFIC_NAME" + | "PARAMETER_SPECIFIC_SCHEMA" + | "PRECISION" + | "RETURNED_CARDINALITY" + | "RETURNED_LENGTH" + | "RETURNED_OCTET_LENGTH" + | "SCALE" + | "SCOPE_CATALOG" + | "SCOPE_NAME" + | "SCOPE_SCHEMA" + | "TYPE" + | "UNNAMED" + | "USER_DEFINED_TYPE_CATALOG" + | "USER_DEFINED_TYPE_NAME" + | "USER_DEFINED_TYPE_SCHEMA" + | "USER_DEFINED_TYPE_CODE" +} + +void set_descriptor_statement(): +{} +{ + "SET" [ "SQL" ] "DESCRIPTOR" descriptor_name() set_descriptor_information() +} + +void set_descriptor_information(): +{} +{ + set_header_information() ( "," set_header_information() )* + | "VALUE" simple_value_specification() set_item_information() + ( "," set_item_information() )* +} + +void set_header_information(): +{} +{ + header_item_name() "=" simple_value_specification() +} + +void set_item_information(): +{} +{ + descriptor_item_name() "=" simple_value_specification() +} + +void prepare_statement(): +{} +{ + "PREPARE" SQL_identifier() [ attributes_specification() ] + "FROM" simple_value_specification() +} + +void attributes_specification(): +{} +{ + "ATTRIBUTES" simple_value_specification() +} + +void preparable_statement(): +{} +{ + preparable_SQL_data_statement() + | preparable_SQL_schema_statement() + | preparable_SQL_transaction_statement() + | preparable_SQL_control_statement() + | preparable_SQL_session_statement() + | preparable_implementation_defined_statement() +} + +void preparable_SQL_data_statement(): +{} +{ + delete_statement_searched() + | dynamic_single_row_select_statement() + | insert_statement() + | dynamic_select_statement() + | update_statement_searched() + | truncate_table_statement() + | merge_statement() + | preparable_dynamic_delete_statement_positioned() + | preparable_dynamic_update_statement_positioned() + //TODO(kaikalur):fix the next two + //| hold_locator_statement() + //| free_locator_statement() +} + +void preparable_SQL_schema_statement(): +{} +{ + SQL_schema_statement() +} + +void preparable_SQL_transaction_statement(): +{} +{ + SQL_transaction_statement() +} + +void preparable_SQL_control_statement(): +{} +{ + SQL_control_statement() +} + +void preparable_SQL_session_statement(): +{} +{ + SQL_session_statement() +} + +void dynamic_select_statement(): +{} +{ + cursor_specification() +} + +void preparable_implementation_defined_statement(): +{} +{ + //!! See the Syntax Rules. + character_string_literal() // temp +} + +void cursor_attributes(): +{} +{ + ( cursor_attribute() )+ +} + +void cursor_attribute(): +{} +{ + cursor_sensitivity() + | cursor_scrollability() + | cursor_holdability() + | cursor_returnability() +} + +void deallocate_prepared_statement(): +{} +{ + "DEALLOCATE" "PREPARE" SQL_identifier() +} + +void describe_statement(): +{} +{ + describe_input_statement() + | describe_output_statement() +} + +void describe_input_statement(): +{} +{ + "DESCRIBE" "INPUT" SQL_identifier() using_descriptor() [ nesting_option() ] +} + +void describe_output_statement(): +{} +{ + "DESCRIBE" [ "OUTPUT" ] described_object() using_descriptor() [ nesting_option() ] +} + +void nesting_option(): +{} +{ + "WITH" "NESTING" + | "WITHOUT" "NESTING" +} + +void using_descriptor(): +{} +{ + "USING" [ "SQL" ] "DESCRIPTOR" descriptor_name() +} + +void described_object(): +{} +{ + SQL_identifier() + | "CURSOR" extended_cursor_name() "STRUCTURE" +} + +void input_using_clause(): +{} +{ + using_arguments() + | using_input_descriptor() +} + +void using_arguments(): +{} +{ + "USING" using_argument() ( "," using_argument() )* +} + +void using_argument(): +{} +{ + general_value_specification() +} + +void using_input_descriptor(): +{} +{ + using_descriptor() +} + +void output_using_clause(): +{} +{ + into_arguments() + | into_descriptor() +} + +void into_arguments(): +{} +{ + "INTO" into_argument() ( "," into_argument() )* +} + +void into_argument(): +{} +{ + target_specification() +} + +void into_descriptor(): +{} +{ + "INTO" [ "SQL" ] "DESCRIPTOR" descriptor_name() +} + +void execute_statement(): +{} +{ + "EXECUTE" SQL_identifier() [ result_using_clause() ] [ parameter_using_clause() ] +} + +void result_using_clause(): +{} +{ + output_using_clause() +} + +void parameter_using_clause(): +{} +{ + input_using_clause() +} + +void execute_immediate_statement(): +{} +{ + "EXECUTE" "IMMEDIATE" simple_value_specification() +} + +void dynamic_declare_cursor(): +{} +{ + "DECLARE" cursor_name() + cursor_properties() + "FOR" identifier() +} + +void allocate_cursor_statement(): +{} +{ + "ALLOCATE" extended_cursor_name() cursor_intent() +} + +void cursor_intent(): +{} +{ + statement_cursor() + | result_set_cursor() +} + +void statement_cursor(): +{} +{ + cursor_properties() + "FOR" extended_identifier() +} + +void result_set_cursor(): +{} +{ + [ "CURSOR" ] "FOR" "PROCEDURE" specific_routine_designator() +} + +void dynamic_open_statement(): +{} +{ + "OPEN" dynamic_cursor_name() [ input_using_clause() ] +} + +void dynamic_fetch_statement(): +{} +{ + "FETCH" [ [ fetch_orientation() ] "FROM" ] dynamic_cursor_name() output_using_clause() +} + +void dynamic_single_row_select_statement(): +{} +{ + query_specification() +} + +void dynamic_close_statement(): +{} +{ + "CLOSE" dynamic_cursor_name() +} + +void dynamic_delete_statement_positioned(): +{} +{ + "DELETE" "FROM" target_table() "WHERE" "CURRENT" "OF" dynamic_cursor_name() +} + +void dynamic_update_statement_positioned(): +{} +{ + "UPDATE" target_table() "SET" set_clause_list() + "WHERE" "CURRENT" "OF" dynamic_cursor_name() +} + +void preparable_dynamic_delete_statement_positioned(): +{} +{ + "DELETE" [ "FROM" target_table() ] + "WHERE" "CURRENT" "OF" preparable_dynamic_cursor_name() +} + +void preparable_dynamic_cursor_name(): +{} +{ + [ scope_option() ] cursor_name() +} + +void preparable_dynamic_update_statement_positioned(): +{} +{ + "UPDATE" [ target_table() ] "SET" set_clause_list() + "WHERE" "CURRENT" "OF" preparable_dynamic_cursor_name() +} + +void direct_SQL_statement() #DirectSqlStatement(true): +{} +{ + directly_executable_statement() ";" +} + +void directly_executable_statement(): +{} +{ + direct_SQL_data_statement() + | SQL_schema_statement() + | SQL_transaction_statement() + | SQL_connection_statement() + | SQL_session_statement() + | direct_implementation_defined_statement() + | use_statement() // Non-standard +} + +void direct_SQL_data_statement(): +{} +{ + delete_statement_searched() + | direct_select_statement_multiple_rows() + | insert_statement() + | update_statement_searched() + | truncate_table_statement() + | merge_statement() + | temporary_table_declaration() +} + +void direct_implementation_defined_statement(): +{} +{ + //!! See the Syntax Rules. + character_string_literal() // temp +} + +void direct_select_statement_multiple_rows(): +{} +{ + cursor_specification() +} + +void get_diagnostics_statement(): +{} +{ + "GET" "DIAGNOSTICS" SQL_diagnostics_information() +} + +void SQL_diagnostics_information(): +{} +{ + LOOKAHEAD(3) statement_information() + | condition_information() + | all_information() +} + +void statement_information(): +{} +{ + statement_information_item() ( "," statement_information_item() )* +} + +void statement_information_item(): +{} +{ + simple_target_specification() "=" statement_information_item_name() +} + +void statement_information_item_name(): +{} +{ + "NUMBER" + | "MORE" + | "COMMAND_FUNCTION" + | "COMMAND_FUNCTION_CODE" + | "DYNAMIC_FUNCTION" + | "DYNAMIC_FUNCTION_CODE" + | "ROW_COUNT" + | "TRANSACTIONS_COMMITTED" + | "TRANSACTIONS_ROLLED_BACK" + | "TRANSACTION_ACTIVE" +} + +void condition_information(): +{} +{ + "CONDITION" simple_value_specification() condition_information_item() + ( "," condition_information_item() )* +} + +void condition_information_item(): +{} +{ + simple_target_specification() "=" condition_information_item_name() +} + +void condition_information_item_name(): +{} +{ + "CATALOG_NAME" + | "CLASS_ORIGIN" + | "COLUMN_NAME" + | "CONDITION_NUMBER" + | "CONNECTION_NAME" + | "CONSTRAINT_CATALOG" + | "CONSTRAINT_NAME" + | "CONSTRAINT_SCHEMA" + | "CURSOR_NAME" + | "MESSAGE_LENGTH" + | "MESSAGE_OCTET_LENGTH" + | "MESSAGE_TEXT" + | "PARAMETER_MODE" + | "PARAMETER_NAME" + | "PARAMETER_ORDINAL_POSITION" + | "RETURNED_SQLSTATE" + | "ROUTINE_CATALOG" + | "ROUTINE_NAME" + | "ROUTINE_SCHEMA" + | "SCHEMA_NAME" + | "SERVER_NAME" + | "SPECIFIC_NAME" + | "SUBCLASS_ORIGIN" + | "TABLE_NAME" + | "TRIGGER_CATALOG" + | "TRIGGER_NAME" + | "TRIGGER_SCHEMA" +} + +void all_information(): +{} +{ + all_info_target() "=" "ALL" [ all_qualifier() ] +} + +void all_info_target(): +{} +{ + simple_target_specification() +} + +void all_qualifier(): +{} +{ + "STATEMENT" + | "CONDITION" [ simple_value_specification() ] +} +void use_statement() #UseStatement: +{} +{ + "USE" identifier_chain() +} + +void lambda() #Lambda(2): +{} +{ + lambda_params() lambda_body() +} + +void lambda_body() #LambdaBody: +{} +{ + "->" value_expression() +} + +void lambda_params() #LambdaParams: +{} +{ + ( actual_identifier() )#LambdaParam(0) + | "(" [ ( actual_identifier() )#LambdaParam(0) ( "," ( actual_identifier() #LambdaParam(0) ) )* ] ")" +} + +void if_not_exists(): +{} +{ + "IF" "NOT" "EXISTS" +} + +void identifier_suffix_chain(): +{} +{ + ( ( "@" | ":" ) [ actual_identifier() ] )+ +} + +void limit_clause() #LimitClause: +{} +{ + "LIMIT" ( <unsigned_integer> | "ALL" ) +} + +void presto_generic_type(): +{} +{ + presto_array_type() + | presto_map_type() + | ( <regular_identifier> "(" data_type() ( "," data_type() )* ")" )#ParameterizedType +} + +void presto_array_type() #ArrayType(): +{} +{ + "ARRAY" "<" data_type() ">" // Non-standard + | "ARRAY" "(" data_type() ")" // Non-standard +} + +void presto_map_type() #MapType(): +{} +{ + "MAP" "<" data_type() "," data_type() ">" // Non-standard + | "MAP" "(" data_type() "," data_type() ")" // Non-standard +} + +void percent_operator(): +{} +{ + <PERCENT: "%"> +} + +void distinct(): +{} +{ + "DISTINCT" +} + +void grouping_expression(): +{} +{ + value_expression() +} + +void count(): +{} +{ + "COUNT" "(" ")" + | "\"COUNT\"" "(" [ set_quantifier() ] [ value_expression() | "*" ] ")" // Just weird +} + +void table_description(): +{} +{ + "COMMENT" character_string_literal() +} + +void routine_description(): +{} +{ + "COMMENT" character_string_literal() +} + +void column_description(): +{} +{ + "COMMENT" character_string_literal() +} + +void presto_aggregation_function(): +{} +{ + "NUMERIC_HISTOGRAM" + | "HISTOGRAM" + | "APPROEX_PERCENTILE" + | "MAP_AGG" + | "SET_AGG" + | "MAP_UNION" +} + +void presto_aggregations(): +{} +{ + presto_aggregation_function() + "(" [ [ set_quantifier() ] value_expression() ( "," value_expression() )* ] ")" +} + +void try_cast() #TryExpression: +{} +{ + "TRY_CAST" ( "(" cast_operand() "AS" cast_target() ")" )#CastExpression +} + +void varbinary(): +{} +{ + "VARBINARY" +} + +void table_attributes(): +{} +{ + "(" actual_identifier() "=" value_expression() ( "," actual_identifier() "=" value_expression() )* ")" // Non-standard +} + +void or_replace(): +{} +{ + "OR" "REPLACE" +} + +void udaf_filter(): +{} +{ + filter_clause() +} + +void extra_args_to_agg(): +{} +{ + ( "," value_expression() )+ +} + +void weird_identifiers(): +{} +{ + "_" +} + +TOKEN: +{ + <identifier_starting_with_underscore: ("_")+ (<regular_identifier>)? > { setKindToIdentifier(matchedToken); } + | <generic_unicode: "U&'" ( ~["'"] | ("''") )* "'"> { setUnicodeLiteralType(matchedToken); } +} +TOKEN: +{ +/* + <#SQL_terminal_character() ::= +SQL_language_character() +; + +| <#SQL_language_character() ::= +simple_Latin_letter() +| digit() +| SQL_special_character() +; + +| <#simple_Latin_letter() ::= +simple_Latin_upper_case_letter() +| simple_Latin_lower_case_letter() +; + +| <#simple_Latin_upper_case_letter() ::= +["A"-"Z"] +; + +| <#simple_Latin_lower_case_letter() ::= +["a"-"z"] +; + +| <#SQL_special_character() ::= +space() +| "\"" +| "%" +| "&" +| "'" +| left_paren() +| right_paren() +| asterisk() +| plus_sign() +| comma() +| minus_sign() +| period() +| solidus() +| colon() +| semicolon() +| less_than_operator() +| equals_operator() +| greater_than_operator() +| question_mark() +| "[" +| "]" +| "^" +| "_" +| "|" +| "{" +| "}" +; +; + +token() ::= +nondelimiter_token() +| delimiter_token() +; + +nondelimiter_token() ::= +regular_identifier() +| key_word() +| unsigned_numeric_literal() +| national_character_string_literal() +| binary_string_literal() +| large_object_length_token() +| Unicode_delimited_identifier() +| Unicode_character_string_literal() +| SQL_language_identifier() +; + +*/ + + +<regular_identifier: <identifier_body> > + +| <#identifier_body: <identifier_start> ( <identifier_part> )* > + +| <#identifier_part: <identifier_start> | <identifier_extend> > + +| <#identifier_start: ["a"-"z"] // temp +/*!! See the Syntax Rules.*/ +> + +| <#identifier_extend: ["\u00B7", "0"-"9", "_"] // temp +//!! See the Syntax Rules. +> + +| <large_object_length_token: ( <digit> )+ <multiplier> > + +| <multiplier: ["K", "M", "G", "T", "P"]> + +| <delimited_identifier: "\"" (<delimited_identifier_body>)? "\"" > // Presto allows empty string as an id - yikes! + +| <#delimited_identifier_body: ( <delimited_identifier_part> )+ > + +| <#delimited_identifier_part: <nondoublequote_character> | <doublequote_symbol> > + +| <Unicode_delimited_identifier: "U" "&" "\"" <Unicode_delimiter_body> "\"" ( <Unicode_escape_specifier> )? > + +| <#Unicode_escape_specifier: "UESCAPE" "'" <Unicode_escape_character> "'" > + +| <#Unicode_delimiter_body: ( <Unicode_identifier_part> )+ > + +| <#Unicode_identifier_part: <delimited_identifier_part> | <Unicode_escape_value> > + +| <#Unicode_escape_value: <Unicode_4_digit_escape_value> | <Unicode_6_digit_escape_value> | <Unicode_character_escape_value> > + +| <#Unicode_4_digit_escape_value: <Unicode_escape_character> <hexit> <hexit> <hexit> <hexit> > + +| <#Unicode_6_digit_escape_value: <Unicode_escape_character> "+" <hexit> <hexit> <hexit> <hexit> <hexit> <hexit> > + +| <#Unicode_character_escape_value: <Unicode_escape_character> <Unicode_escape_character> > + +| <#Unicode_escape_character: ~["a"-"z", "0"-"9", "+", "'", "\"", "\n", "\t", " "] // temp +//17) If the source language character set contains <reverse solidus>, then let D +//!! See the Syntax Rules.*/ +> + +| <#nondoublequote_character: ~["\""] +//!! See the Syntax Rules. +> + +| <#doublequote_symbol: "\"\"" > + +/* +delimiter_token: +<character_string_literal> +| <date_string> +| <time_string> +| <timestamp_string> +| <interval_string> +| <delimited_identifier> +| <SQL_special_character> +| <"> " +| ">=" +| "<=" +| "||" +| "->" +| "??(" +| "??)" +| "::" +| ".." +| "=>" +> +*/ +} + +SPECIAL_TOKEN: +{ +<white_space: <newline> | [ " ", "\t" ] // temp +//!! See the Syntax Rules. +> + +| <#newline: (["\n", "\r"])+ +//!! See the Syntax Rules. +> + +//| <comment: <simple_comment> | <bracketed_comment> > +| <comment: <simple_comment> > +| <#simple_comment: <simple_comment_introducer> ( <comment_character> )* (<newline>)? > + +| <#simple_comment_introducer: "--" > + +//| <#bracketed_comment: <bracketed_comment_introducer> <bracketed_comment_contents> <bracketed_comment_terminator> > + + +//| <#bracketed_comment_terminator: "*/" > + +//| <#bracketed_comment_contents: ( <comment_character> | <separator> )* +////!! See the Syntax Rules. +//> + +//| <#comment_character: <nonquote_character> | "'" > +| <#comment_character: (~["\n", "\r"]) | "'" > + +| <skip_separator: (<white_space>)+ > + +//| <#key_word: <reserved_word> | <non_reserved_word> > > +} + + +MORE: +{ +<bracketed_comment_introducer: "/*" > : comment_contents +} + +<comment_contents>MORE: +{ + "*/" : match_comment + | <~[]> +} + +<match_comment>SPECIAL_TOKEN: +{ + <coment_end: ""> { StoreImage(matchedToken); } : DEFAULT +} + +TOKEN: +{ + <#separator: ( + //TODO(kaikalur): fixit -- <comment> | <white_space> )+ > + <white_space> )+ > +| + <#digit: ["0"-"9"] > +| <#character_representation: <nonquote_character> | <quote_symbol> > + +| <#nonquote_character: ~["'"] +//!! See the Syntax Rules. +> + +| <#quote_symbol: "''" > + +| <quoted_string: "'" ( <character_representation> )* "'" > +| <national_character_string_literal: "N" "'" ( <character_representation> )* "'" ( <separator> "'" ( <character_representation> )* "'" )* > + +| <unicode_literal: "U" "&" "'" ( <Unicode_representation> )* "'" ( <separator> "'" ( <Unicode_representation> )* "'" )* <Unicode_escape_specifier> > // TODO(kaikalur) - fixit + +| <#Unicode_representation: <character_representation> | <Unicode_escape_value> > + +//TODO(kaikalur): fixit +| <#space: " "> // temp +| <binary_string_literal: "X" "'" ( <space> )* ( <hexit> ( <space> )* <hexit> ( <space> )* )* "'" ( <separator> "'" ( <space> )* ( <hexit> ( <space> )* <hexit> ( <space> )* )* "'" )* > + +| <#hexit: ["a"-"f", "0"-"9"] > + + +//| <exact_numeric_literal: <unsigned_integer> ( "." ( <unsigned_integer> )? )? | "." <unsigned_integer> > + +//| <sign: [ "+", "-" ] > + +| <unsigned_integer: ( <digit> )+ > +| <float_literal: <unsigned_integer> ( "." ( <unsigned_integer> )? ) | "." <unsigned_integer> > + +| <approximate_numeric_literal: <mantissa> "E" <exponent> > + +| <#mantissa: <unsigned_integer> | <float_literal> > + +| <#exponent: <signed_integer> > + +| <#signed_integer: ( [ "+", "-" ] )? <unsigned_integer> > + + +| <SQL_language_identifier: <SQL_language_identifier_start> ( <SQL_language_identifier_part> )* > + +// TODO(srenei): fixit +| <#simple_Latin_letter: ["a"-"z"]> +| <#SQL_language_identifier_start: <simple_Latin_letter> > + +| <#SQL_language_identifier_part: <simple_Latin_letter> | <digit> | "_" > +} + +<DEFAULT>TOKEN: +{ + <illegal_input_char: ~[]> : DEFAULT +} diff --git a/parser/pom.xml b/parser/pom.xml index 4f0430e..4542050 100644 --- a/parser/pom.xml +++ b/parser/pom.xml @@ -167,29 +167,6 @@ <version>1.8</version> </plugin> - <plugin> - <groupId>io.airlift.maven.plugins</groupId> - <artifactId>sphinx-maven-plugin</artifactId> - <version>2.1</version> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-enforcer-plugin</artifactId> - <configuration> - <rules> - <requireUpperBoundDeps> - <excludes combine.children="append"> - <!-- TODO: fix this in Airlift resolver --> - <exclude>org.alluxio:alluxio-shaded-client</exclude> - <exclude>org.codehaus.plexus:plexus-utils</exclude> - <exclude>com.google.guava:guava</exclude> - </excludes> - </requireUpperBoundDeps> - </rules> - </configuration> - </plugin> - <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> diff --git a/parser/src/test/java/com/manticore/jsqlformatter/Comment.java b/parser/src/test/java/com/facebook/coresql/parser/Comment.java similarity index 96% rename from parser/src/test/java/com/manticore/jsqlformatter/Comment.java rename to parser/src/test/java/com/facebook/coresql/parser/Comment.java index 7705f45..758e895 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/Comment.java +++ b/parser/src/test/java/com/facebook/coresql/parser/Comment.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.manticore.jsqlformatter; +package com.facebook.coresql.parser; public class Comment implements Comparable<Comment> diff --git a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java b/parser/src/test/java/com/facebook/coresql/parser/CommentMap.java similarity index 99% rename from parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java rename to parser/src/test/java/com/facebook/coresql/parser/CommentMap.java index 9a847e6..a4b80b3 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/CommentMap.java +++ b/parser/src/test/java/com/facebook/coresql/parser/CommentMap.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.manticore.jsqlformatter; +package com.facebook.coresql.parser; import java.util.ArrayList; import java.util.Iterator; diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java b/parser/src/test/java/com/facebook/coresql/parser/SQLKeyEntry.java similarity index 97% rename from parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java rename to parser/src/test/java/com/facebook/coresql/parser/SQLKeyEntry.java index c7fe833..d9014e6 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/SQLKeyEntry.java +++ b/parser/src/test/java/com/facebook/coresql/parser/SQLKeyEntry.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.manticore.jsqlformatter; +package com.facebook.coresql.parser; import java.io.File; import java.util.Map; diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java b/parser/src/test/java/com/facebook/coresql/parser/SimpleFileTest.java similarity index 97% rename from parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java rename to parser/src/test/java/com/facebook/coresql/parser/SimpleFileTest.java index 15f2861..75a4a10 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java +++ b/parser/src/test/java/com/facebook/coresql/parser/SimpleFileTest.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.manticore.jsqlformatter; +package com.facebook.coresql.parser; import java.io.BufferedReader; import java.io.File; @@ -25,7 +25,7 @@ public class SimpleFileTest extends StandardFileTest { - public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/simple"; + public static final String TEST_FOLDER_STR = "src/test/resources/com/facebook/coresql/parser/simple"; public static Stream<Entry<SQLKeyEntry, String>> getSqlMap() { diff --git a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTestIT.java b/parser/src/test/java/com/facebook/coresql/parser/SimpleFileTestIT.java similarity index 93% rename from parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTestIT.java rename to parser/src/test/java/com/facebook/coresql/parser/SimpleFileTestIT.java index 0584977..2f8e4a7 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTestIT.java +++ b/parser/src/test/java/com/facebook/coresql/parser/SimpleFileTestIT.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.manticore.jsqlformatter; +package com.facebook.coresql.parser; import java.io.File; import java.util.LinkedHashMap; @@ -25,7 +25,7 @@ public class SimpleFileTestIT extends SimpleFileTest { - public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/simpleIT"; + public static final String TEST_FOLDER_STR = "src/test/resources/com/facebook/coresql/parser/simpleIT"; public static Stream<Map.Entry<SQLKeyEntry, String>> getSqlMap() { diff --git a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java b/parser/src/test/java/com/facebook/coresql/parser/StandardFileTest.java similarity index 96% rename from parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java rename to parser/src/test/java/com/facebook/coresql/parser/StandardFileTest.java index 9aa52b5..5cddc7a 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTest.java +++ b/parser/src/test/java/com/facebook/coresql/parser/StandardFileTest.java @@ -11,9 +11,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.manticore.jsqlformatter; +package com.facebook.coresql.parser; -import com.facebook.coresql.parser.ParseException; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -38,7 +37,7 @@ public class StandardFileTest public static final Pattern COMMENT_PATTERN = Pattern.compile( "'[^']*+'|\"[^\"]*+\"|(^/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/\\s?\\n?|/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/|--.*?\\r?[\\n])", Pattern.DOTALL | Pattern.MULTILINE | Pattern.UNIX_LINES); - public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/standard"; + public static final String TEST_FOLDER_STR = "src/test/resources/com/facebook/coresql/parser/standard"; public static final FilenameFilter FILENAME_FILTER = new FilenameFilter() { @Override diff --git a/parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java b/parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java new file mode 100644 index 0000000..d83da8e --- /dev/null +++ b/parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java @@ -0,0 +1,89 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.facebook.coresql.parser; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.stream.Stream; + +/** + * This Class is used for Fail Safe Integration Tests only + * It will test Real Life SQLs not supported by the Parser yet + */ +public class StandardFileTestIT + extends StandardFileTest +{ + public static final String TEST_FOLDER_STR = "src/test/resources/com/facebook/coresql/parser/standardIT"; + + public static Stream<Map.Entry<SQLKeyEntry, String>> getSqlMap() + { + LinkedHashMap<SQLKeyEntry, String> sqlMap = new LinkedHashMap<>(); + for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { +<<<<<<<< HEAD:parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java + extractIntoMap(sqlMap, file); + } + return sqlMap.entrySet().stream(); + } + + protected static void extractIntoMap(LinkedHashMap<SQLKeyEntry, String> sqlMap, File file) + { + try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( + fileReader)) { + boolean start = false; + boolean end; + StringBuilder stringBuilder = new StringBuilder(); + String line; + String k = ""; + boolean afterHeader = false; + while ((line = bufferedReader.readLine()) != null) { + if (!afterHeader && line.startsWith("--")) { + continue; + } + else { + afterHeader = true; + } + if (!start && line.startsWith("--") && !line.startsWith("-- @")) { + k = line.substring(3).trim().toUpperCase(); + } + start = start || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; + end = start && line.trim().endsWith(";"); + if (start) { + stringBuilder.append(line).append("\n"); + } + if (end) { + sqlMap.put(new SQLKeyEntry(file, k), stringBuilder.toString().trim()); + stringBuilder.setLength(0); + start = false; + } +======== + try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( + fileReader)) { + extractIntoMap(sqlMap, file, bufferedReader); +>>>>>>>> main:parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java + } + } +<<<<<<<< HEAD:parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java + catch (IOException ex) { + LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); + } +======== + return sqlMap.entrySet().stream(); +>>>>>>>> main:parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java + } +} diff --git a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java b/parser/src/test/java/com/facebook/coresql/parser/TestUtils.java similarity index 92% rename from parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java rename to parser/src/test/java/com/facebook/coresql/parser/TestUtils.java index 56916a2..80d905e 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/TestUtils.java +++ b/parser/src/test/java/com/facebook/coresql/parser/TestUtils.java @@ -11,14 +11,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.manticore.jsqlformatter; +package com.facebook.coresql.parser; -import com.facebook.coresql.parser.AstNode; -import com.facebook.coresql.parser.ParseException; -import com.facebook.coresql.parser.SimpleCharStream; -import com.facebook.coresql.parser.SqlParser; -import com.facebook.coresql.parser.SqlParserTokenManager; -import com.facebook.coresql.parser.Unparser; import hu.webarticum.treeprinter.SimpleTreeNode; import hu.webarticum.treeprinter.TreeNode; import hu.webarticum.treeprinter.printer.listing.ListingTreePrinter; diff --git a/parser/src/test/java/com/manticore/jsqlformatter/expression/ParameterTest.java b/parser/src/test/java/com/facebook/coresql/parser/expression/ParameterTest.java similarity index 94% rename from parser/src/test/java/com/manticore/jsqlformatter/expression/ParameterTest.java rename to parser/src/test/java/com/facebook/coresql/parser/expression/ParameterTest.java index 7614c97..7e64de3 100644 --- a/parser/src/test/java/com/manticore/jsqlformatter/expression/ParameterTest.java +++ b/parser/src/test/java/com/facebook/coresql/parser/expression/ParameterTest.java @@ -11,12 +11,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.manticore.jsqlformatter.expression; +package com.facebook.coresql.parser.expression; import com.facebook.coresql.parser.AstNode; import com.facebook.coresql.parser.ParseException; +import com.facebook.coresql.parser.TestUtils; import com.facebook.coresql.parser.Unparser; -import com.manticore.jsqlformatter.TestUtils; import org.junit.jupiter.api.Test; public class ParameterTest diff --git a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTestIT.java b/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTestIT.java deleted file mode 100644 index 52a6d13..0000000 --- a/parser/src/test/java/com/manticore/jsqlformatter/StandardFileTestIT.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.manticore.jsqlformatter; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.logging.Level; -import java.util.stream.Stream; - -/** - * This Class is used for Fail Safe Integration Tests only - * It will test Real Life SQLs not supported by the Parser yet - */ -public class StandardFileTestIT - extends StandardFileTest -{ - public static final String TEST_FOLDER_STR = "src/test/resources/com/manticore/jsqlformatter/standardIT"; - - public static Stream<Map.Entry<SQLKeyEntry, String>> getSqlMap() - { - LinkedHashMap<SQLKeyEntry, String> sqlMap = new LinkedHashMap<>(); - for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { - try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( - fileReader)) { - extractIntoMap(sqlMap, file, bufferedReader); - } - catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); - } - } - return sqlMap.entrySet().stream(); - } -} diff --git a/parser/src/test/resources/com/facebook/coresql/parser/ignore/BracketQuotationTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/ignore/BracketQuotationTest.sql new file mode 100644 index 0000000..5027d37 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/ignore/BracketQuotationTest.sql @@ -0,0 +1,57 @@ +-- +-- 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. +-- + +-- BRACKETS 1 +SELECT columnname +FROM [server-name\\server-instance]..schemaname.tablename +; + +-- BRACKETS 2 +SELECT columnname +FROM [server-name\\server-instance]..[schemaName].[table Name] +; + +-- BRACKETS 3 +SELECT columnname +FROM [server-name\\server-instance]..[schemaName].[table-Name] +; + +-- BRACKETS 4 +SELECT columnname +FROM [schemaName].[tableName] +; + +-- BRACKETS 5 +SELECT columnname +FROM schemaname.[tableName] +; + +-- BRACKETS 6 +SELECT columnname +FROM [schemaName].tablename +; + +-- READ INSTRUMENT TRANSACTIONS WITH COLLATERAL ONLY +SELECT a.* +FROM [cfe].[TRANSACTION] a + INNER JOIN cfe.instrument b + ON a.id_instrument = b.id_instrument +WHERE a.id_instrument >= ? + AND a.id_instrument <= ? + AND EXISTS ( SELECT 1 + FROM cfe.instrument_ref b + INNER JOIN cfe.instrument_collateral_hst c + ON b.id_instrument_ref = c.id_instrument_ref + WHERE b.id_instrument = a.id_instrument ) +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/ignore/H2OrderedAggregateTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/ignore/H2OrderedAggregateTest.sql new file mode 100644 index 0000000..9ef7f4e --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/ignore/H2OrderedAggregateTest.sql @@ -0,0 +1,45 @@ +-- +-- 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. +-- + +-- LISTAGG 1 +SELECT LISTAGG(NAME, ', ') WITHIN GROUP (ORDER BY ID) +; + + +-- LISTAGG 2 +SELECT LISTAGG(COALESCE(NAME, 'null'), ', ') WITHIN GROUP (ORDER BY ID) +; + + +-- LISTAGG 3 +/* Unsupported: SELECT LISTAGG(ID, ', ') WITHIN GROUP (ORDER BY ID) OVER (ORDER BY ID); */ +SELECT 1 +FROM dual +; + +-- ARRAY_AGG 1 +SELECT Array_Agg( name ) +; + + +-- ARRAY_AGG 2 +SELECT ARRAY_AGG(NAME ORDER BY ID) FILTER (WHERE NAME IS NOT NULL) +; + + +-- ARRAY_AGG 3 +/* SELECT ARRAY_AGG(ID ORDER BY ID) OVER (ORDER BY ID); */ +SELECT 1 +FROM dual +; \ No newline at end of file diff --git a/parser/src/test/resources/com/facebook/coresql/parser/ignore/MeanChallenges.sql b/parser/src/test/resources/com/facebook/coresql/parser/ignore/MeanChallenges.sql new file mode 100644 index 0000000..9a3b369 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/ignore/MeanChallenges.sql @@ -0,0 +1,74 @@ +-- +-- 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. +-- + + +-- SELECT Date Ranges of available data +WITH p + AS (SELECT DISTINCT value_date + FROM risk.migration_data_v + WHERE (:1 IS NULL OR :2 ='' OR id_portfolio = Decode (:3 , '001', 'IFRS1', + '002', 'IFRS2', + '003', 'IFRS3', + '004', 'IFRS4', + '005', 'IFRS5', + '006', 'IFRS6', + :4 )) + AND value_date >= :5 + AND value_date <= :6 ), + ri + AS (SELECT a.id_risk_indicator + , Greatest((SELECT Min(value_date) + FROM p + WHERE value_date >= :7 ), (SELECT Max(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :8 )) min_ri_date + , Greatest((SELECT Min(value_date) + FROM p + WHERE value_date >= :9 ), (SELECT Min(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :10 )) min_ri_date_1 + , Least((SELECT Max(value_date) + FROM p + WHERE value_date <= :11 ), (SELECT Min(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :12 )) max_ri_date + , Least((SELECT Max(value_date) + FROM p + WHERE value_date <= :13 ), (SELECT Max(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :14 )) max_ri_date_1 + FROM risk.risk_indicator a + WHERE a.id_status = 'C' + AND a.id_risk_indicator_ref = (SELECT Max(id_risk_indicator_ref) + FROM risk.risk_indicator + WHERE id_status = 'C' + AND id_risk_indicator = a.id_risk_indicator) + AND ( ( :15 IS NULL + OR id_risk_indicator = :16 ) + )) +SELECT /*+parallel*/ ri.id_risk_indicator + , Min(p.value_date) "Min. Observation Date" + , Max(p.value_date) "Max. Observation Date" +FROM ri + , p +WHERE p.value_date >= Nvl(ri.min_ri_date, ri.min_ri_date_1) + AND p.value_date <= Nvl(ri.max_ri_date, ri.max_ri_date_1) +GROUP BY ri.id_risk_indicator +order by 1 +; + diff --git a/parser/src/test/resources/com/facebook/coresql/parser/ignore/MsSqlServerTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/ignore/MsSqlServerTest.sql new file mode 100644 index 0000000..088eb89 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/ignore/MsSqlServerTest.sql @@ -0,0 +1,44 @@ +-- +-- 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. +-- + +-- DELETE INSTRUMENT ATTRIBUTE HST AFTER VALUE_DATE_P +DELETE a FROM cfe.instrument_attribute_hst2 a + INNER JOIN ( SELECT value_date + , posting_date + FROM cfe.execution + WHERE posting_date > ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) + OR ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) IS NULL ) b + ON a.value_date = b.value_date + AND b.posting_date = b.posting_date +; + +-- READ INSTRUMENT TRANSACTIONS WITH COLLATERAL ONLY1 +SELECT a.* +FROM [cfe].[TRANSACTION] a + INNER JOIN cfe.instrument b + ON a.id_instrument = b.id_instrument +WHERE a.id_instrument >= ? + AND a.id_instrument <= ? + AND EXISTS ( SELECT 1 + FROM cfe.instrument_ref b + INNER JOIN cfe.instrument_collateral_hst c + ON b.id_instrument_ref = c.id_instrument_ref + WHERE b.id_instrument = a.id_instrument ) +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/ignore/MySQLTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/ignore/MySQLTest.sql new file mode 100644 index 0000000..147e25b --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/ignore/MySQLTest.sql @@ -0,0 +1,45 @@ +-- +-- 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. +-- + +-- GROUP_CONCAT +SELECT Group_Concat( DISTINCT Trim( Concat( m.title, ' ', m.firstname + , ' ', m.lastname ) ) + ORDER BY p2m.manufacturer_type_id ASC + SEPARATOR ' ' ) AS manufacturer_name +FROM product_to_manufacturer p2m + LEFT JOIN manufacturer m + ON m.manufacturer_id = p2m.manufacturer_id +WHERE p2m.product_id = 574768 +; + +-- WITHOUT A FROM ITEM +-- @JSQLFormatter(indentWidth=2, keywordSpelling=LOWER, functionSpelling=CAMEL, objectSpelling=LOWER, separation=BEFORE) +select case + when ( select ccp.campaign_id + from campaign_constraint_product ccp + inner join campaign_free_shipping_products_visibility cfspv + on cfspv.campaign_id = ccp.campaign_id + where ccp.product_id = 530729 + and cfspv.status = 1 + union + select cap.campaign_id + from campaign_action_product cap + inner join campaign_free_shipping_products_visibility cfspv + on cfspv.campaign_id = cap.campaign_id + where cap.product_id = 530729 + and cfspv.status = 1 ) is not null + then 1 + else 0 + end as is_free_shipping +; \ No newline at end of file diff --git a/parser/src/test/resources/com/facebook/coresql/parser/simple/SQLFileTest_1.sql b/parser/src/test/resources/com/facebook/coresql/parser/simple/SQLFileTest_1.sql new file mode 100644 index 0000000..8bd2b21 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/simple/SQLFileTest_1.sql @@ -0,0 +1,29 @@ +-- +-- 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. +-- + + +SELECT * +FROM schedule_info info +WHERE ( info.employee_id, info.schedule_date ) IN ( ( 1, '2019-10-01' ), ( 1, '2019-10-02' ) ) +; + + +SELECT * +FROM table_a +WHERE other_id IN ( ( SELECT id + FROM table_b + WHERE name LIKE '%aa%' ), ( SELECT id + FROM table_b + WHERE name LIKE '%bb%' ) ) +; \ No newline at end of file diff --git a/parser/src/test/resources/com/facebook/coresql/parser/simple/SQLFileTest_short.sql b/parser/src/test/resources/com/facebook/coresql/parser/simple/SQLFileTest_short.sql new file mode 100644 index 0000000..aeb36d9 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/simple/SQLFileTest_short.sql @@ -0,0 +1,17 @@ +-- +-- 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. +-- + +DELETE FROM cfe.ledger_branch_balance +WHERE a=b and c=d +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/EmptyStatementTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/EmptyStatementTest.sql new file mode 100644 index 0000000..d702ba8 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/EmptyStatementTest.sql @@ -0,0 +1,13 @@ +-- +-- 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. +-- diff --git a/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest.sql new file mode 100644 index 0000000..94e3061 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest.sql @@ -0,0 +1,96 @@ +-- +-- 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. +-- + +SELECT osuser + , sl.sql_id + , sl.sql_hash_value + , opname + , target + , elapsed_seconds + , time_remaining +FROM v$session_longops sl + INNER JOIN v$session s + ON sl.sid = s.sid + AND sl.serial# = s.serial# +WHERE time_remaining > 0 +; + +CREATE VIEW sys.running_sql + AS SELECT s.username + , sl.sid + , sq.executions + , sl.last_update_time + , sl.sql_id + , sl.sql_hash_value + , opname + , target + , elapsed_seconds + , time_remaining + , sq.sql_fulltext + FROM v$session_longops sl + INNER JOIN v$sql sq + ON sq.sql_id = sl.sql_id + INNER JOIN v$session s + ON sl.sid = s.sid + AND sl.serial# = s.serial# + WHERE time_remaining > 0 +; + + +SET pagesize 55 +; + + +SET linesize 170 +; + + +/* +something crazy; +something crazy; +something crazy; +something crazy; +*/ + + +-- something crazy; +SELECT Substr( v$session.username, 1, 8 ) username + , v$session.osuser osuser + , Decode( v$session.server + , 'DEDICATED', 'D' + , 'SHARED', 'S' + , 'O' ) server + , v$sqlarea.disk_reads disk_reads + , v$sqlarea.buffer_gets buffer_gets + , Substr( v$session.lockwait, 1, 10 ) lockwait + , v$session.process pid + , v$session_wait.event event + , v$sqlarea.sql_text sql +FROM v$session_wait + , v$sqlarea + , v$session +WHERE v$session.sql_address = v$sqlarea.address + AND v$session.sql_hash_value = v$sqlarea.hash_value + AND v$session.sid = v$session_wait.sid + AND v$session.status = 'ACTIVE' + AND v$session_wait.event != 'client message' +ORDER BY v$session.lockwait ASC + , v$session.username +; + + +SELECT 'exec DBMS_SHARED_POOL.PURGE (''' || address || ',' || hash_value || ''', ''C'');' +FROM v$sqlarea +WHERE sql_id LIKE '9z1ufprvt2pk2' +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest_1.sql b/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest_1.sql new file mode 100644 index 0000000..7e97c32 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest_1.sql @@ -0,0 +1,419 @@ +-- +-- 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. +-- + +-- GET OBSERVATION PERIOD FOR ID_PORTFOLIO AND ID_RISK_INDICATOR +WITH p AS ( + SELECT DISTINCT + value_date + FROM risk.migration_data_v + WHERE ( :ID_PORTFOLIO IS NULL + OR :ID_PORTFOLIO = '' + OR id_portfolio = Decode( :ID_PORTFOLIO + , '001', 'IFRS1' + , '002', 'IFRS2' + , '003', 'IFRS3' + , '004', 'IFRS4' + , '005', 'IFRS5' + , '006', 'IFRS6' + , :ID_PORTFOLIO ) ) + AND value_date >= :FROM + AND value_date <= :TO ) + , ri AS ( + SELECT a.id_risk_indicator + , Greatest( ( SELECT Min( value_date ) + FROM p + WHERE value_date >= :FROM ), ( SELECT Max( value_date ) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :FROM ) ) min_ri_date + , Greatest( ( SELECT Min( value_date ) + FROM p + WHERE value_date >= :FROM ), ( SELECT Min( value_date ) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :FROM ) ) min_ri_date_1 + , Least( ( SELECT Max( value_date ) + FROM p + WHERE value_date <= :TO ), ( SELECT Min( value_date ) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :TO ) ) max_ri_date + , Least( ( SELECT Max( value_date ) + FROM p + WHERE value_date <= :TO ), ( SELECT Max( value_date ) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :TO ) ) max_ri_date_1 + FROM risk.risk_indicator a + WHERE a.id_status = 'C' + AND a.id_risk_indicator_ref = ( SELECT Max( id_risk_indicator_ref ) + FROM risk.risk_indicator + WHERE id_status = 'C' + AND id_risk_indicator = a.id_risk_indicator ) + AND ( ( :id_risk_indicator IS NULL + OR id_risk_indicator = :id_risk_indicator ) ) ) +SELECT /*+ PARALLEL */ + ri.id_risk_indicator + , Min( p.value_date ) "Min. Observation Date" + , Max( p.value_date ) "Max. Observation Date" +FROM ri + , p +WHERE p.value_date >= Nvl( ri.min_ri_date, ri.min_ri_date_1 ) + AND p.value_date <= Nvl( ri.max_ri_date, ri.max_ri_date_1 ) +GROUP BY ri.id_risk_indicator +ORDER BY 1 +; + +INSERT INTO cfe.ext_eab +SELECT /*+ PARALLEL DRIVING_SITE(A) */ a.* +FROM tbaadm.eod_acct_bal_table@finnacle a +WHERE end_eod_date >= Add_Months( To_Date( :VALUE_DATE, 'mm/dd/yy' ), - 4 ) +; + +WITH ex AS ( + SELECT value_date + , posting_date + FROM cfe.execution x + WHERE id_status = 'R' + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status = 'R' ) + AND posting_date = ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = x.value_date ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + WHERE f.value_date <= ( SELECT value_date + FROM ex ) + AND f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into ) + AND id_currency_into = 'NGN' + UNION ALL + SELECT 'NGN' + , 1 + FROM dual ) + , p AS ( + SELECT t.* + FROM cfe.portfolio_coll_impairment_hst t + INNER JOIN ex + ON Trunc( valid_date ) <= ex.value_date + WHERE valid_date = ( SELECT Max( valid_date ) + FROM cfe.portfolio_coll_impairment_hst + WHERE id_portfolio = t.id_portfolio + AND Trunc( valid_date ) <= ex.value_date ) ) + , coll AS ( + SELECT id_instrument_ref + , 'group_concat(description SEPARATOR CHR(10))' description + FROM ( SELECT Concat( Rpad( c.id_collateral, 20 ), ' ', Rpad( Trim( d.description ), 40 ) + , ' ', Rpad( Substr( Trim( c.description ), 0, 24 ), 24 ), ' ' + , To_Char( a1.amount, '9,999,999,999' ), ' ', a1.id_currency + , ' ', To_Char( d.hair_cut * 100, '9,99' ), '%' ) description + , a1.id_instrument_ref + FROM cfe.instr_coll_recovery_hst a1 + INNER JOIN ex + ON a1.valid_date = ex.value_date + INNER JOIN cfe.collateral_ref b + ON a1.id_collateral_ref = b.id_collateral_ref + INNER JOIN cfe.collateral c + ON b.id_collateral = c.id_collateral + INNER JOIN common.collateral_type d + ON c.id_collateral_type = d.id_collateral_type + AND d.id_status = 'C' + AND d.id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_collateral_type = d.id_collateral_type + AND id_status = 'C' ) ) t + GROUP BY id_instrument_ref ) + , cp AS ( + SELECT b.foracid id_instrument + , b.cif_id id_counterparty + , Convert( a.description, varchar ) description + FROM risk.counterparty a + INNER JOIN cfe.ext_gam b + ON a.id_counterparty = b.cif_id + AND a.id_status = 'C' ) +SELECT Coalesce( cp.id_counterparty, g2.attribute_value ) id_counterparty + , Coalesce( Convert( cp1.description, varchar ), cp.description, h2.attribute_value ) description + , b.id_instrument + , a.id_instrument_type + , f2.attribute_value product + , a.start_date + , a.end_date + , k2.attribute_value gl_code + , c.yield + , a.id_currency + , c.amortised_cost_dirty + , c.amortised_cost_dirty_bc + , c.nominal_balance + + c.receivable_principal nominal_balance + , c.nominal_balance_bc + + c.receivable_principal_bc nominal_balance_bc + , c.open_commitment + , c.open_commitment_bc + , coll.description collaterals + , p1.rate_pd pd_1y + , CASE + WHEN c.amortised_cost_dirty_bc < 0 + OR ( c.amortised_cost_dirty_bc = 0 + AND c.open_commitment_bc < 0 ) + THEN Greatest( 1 + Round( Nvl( ( SELECT Sum( a1.amount * fxr.fxrate * Exp( - Nvl( c.yield, 0 ) * d.workout_period / 365 ) ) recovery_amount + FROM cfe.instr_coll_recovery_hst a1 + INNER JOIN ex + ON a1.valid_date = ex.value_date + INNER JOIN fxr + ON a1.id_currency = fxr.id_currency_from + INNER JOIN cfe.collateral_ref b + ON a1.id_collateral_ref = b.id_collateral_ref + INNER JOIN cfe.collateral c + ON b.id_collateral = c.id_collateral + INNER JOIN common.collateral_type d + ON c.id_collateral_type = d.id_collateral_type + AND d.id_status = 'C' + AND d.id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_collateral_type = d.id_collateral_type + AND id_status = 'C' ) + WHERE a1.id_instrument_ref = a.id_instrument_ref ), 0 ), 2 ) / ( Nvl( c.amortised_cost_dirty_bc, 0 ) + Nvl( c.open_commitment_bc, 0 ) * Nvl( e.ccf, 0.25 ) ), 0 ) + ELSE 0 + END lgd_1y + , p2.rate_pd pd_2y + , p2.rate_lgd lgd_2y + , p3.rate_pd pd_3y + , p3.rate_lgd lgd_3y + , p10.rate_pd pd_10y + , p10.rate_lgd lgd_10y + , CASE + WHEN e.impairment_stage = 3 + AND d.impairment_is_specific = '0' + THEN 'D' + ELSE Decode( d.impairment_is_specific + , '1', 'S' + , '0', 'C' ) + END impairment_is_specific + , d.impairment + + d.impairment_spec impairment + , d.impairment_bc + + d.impairment_spec_bc impairment_bc + , d.impairment_contingent impairment_contingent + , d.impairment_contingent_bc impairment_contingent_bc + , d.unwinding unwinding + , d.unwinding_bc unwinding_bc + , d.impairment_spec_d + + d.unwinding_d impairment_spec_d + , d.impairment_spec_d_bc + + d.unwinding_d_bc impairment_spec_d_bc + , d.impairment_d + + d.impairment_contingent_d impairment_d + , d.impairment_d_bc + + d.impairment_contingent_d_bc impairment_d_bc + , d.unwinding_d unwinding_d + , d.unwinding_d_bc unwinding_d_bc + , e.id_portfolio + , e.master_rating + , Nvl( e.impairment_stage, 1 ) impairment_stage + , e.overdue_days + , e.risk_classification +FROM ex + INNER JOIN cfe.instrument_hst a + ON ex.value_date = a.value_date + AND ex.posting_date = a.posting_date + INNER JOIN cfe.instrument_ref b + ON a.id_instrument_ref = b.id_instrument_ref + LEFT JOIN coll + ON a.id_instrument_ref = coll.id_instrument_ref + LEFT JOIN cp + ON b.id_instrument = cp.id_instrument + INNER JOIN cfe.instrument_measure_balance c + ON ex.value_date = c.value_date + AND ex.posting_date = c.posting_date + AND b.id_instrument_ref = c.id_instrument_ref + AND c.asset_liability_flag = 'A' + LEFT JOIN cfe.instrument_measure_impairment d + ON ex.value_date = d.value_date + AND ex.posting_date = d.posting_date + AND b.id_instrument_ref = d.id_instrument_ref + AND d.asset_liability_flag = '9' + LEFT JOIN cfe.impairment e + ON b.id_instrument = e.id_instrument + LEFT JOIN ( cfe.instrument_attribute_hst2 f + INNER JOIN cfe.attribute_ref f1 + ON f1.id_attribute_ref = f.id_attribute_ref + AND f1.id_attribute = 'product' + INNER JOIN cfe.attribute_value_ref f2 + ON f2.id_attribute_value_ref = f.id_attribute_value_ref ) + ON f.value_date = ex.value_date + AND f.posting_date = ex.posting_date + AND f.id_instrument_ref = d.id_instrument_ref + LEFT JOIN ( cfe.instrument_attribute_hst2 g + INNER JOIN cfe.attribute_ref g1 + ON g1.id_attribute_ref = g.id_attribute_ref + AND g1.id_attribute = 'cust_id' + INNER JOIN cfe.attribute_value_ref g2 + ON g2.id_attribute_value_ref = g.id_attribute_value_ref ) + ON g.value_date = ex.value_date + AND g.posting_date = ex.posting_date + AND g.id_instrument_ref = a.id_instrument_ref + LEFT JOIN ( cfe.instrument_attribute_hst2 h + INNER JOIN cfe.attribute_ref h1 + ON h1.id_attribute_ref = h.id_attribute_ref + AND h1.id_attribute = 'cust_name' + INNER JOIN cfe.attribute_value_ref h2 + ON h2.id_attribute_value_ref = h.id_attribute_value_ref ) + ON h.value_date = ex.value_date + AND h.posting_date = ex.posting_date + AND h.id_instrument_ref = a.id_instrument_ref + LEFT JOIN ( cfe.instrument_attribute_hst2 k + INNER JOIN cfe.attribute_ref k1 + ON k1.id_attribute_ref = k.id_attribute_ref + AND k1.id_attribute = 'gl_code' + INNER JOIN cfe.attribute_value_ref k2 + ON k2.id_attribute_value_ref = k.id_attribute_value_ref ) + ON k.value_date = ex.value_date + AND k.posting_date = ex.posting_date + AND k.id_instrument_ref = a.id_instrument_ref + LEFT JOIN risk.counterparty cp1 + ON cp1.id_counterparty = Coalesce( cp.id_counterparty, g2.attribute_value ) + AND cp1.id_status = 'C' + LEFT JOIN p p1 + ON e.id_portfolio || '_ifrs9' = p1.id_portfolio + AND ( ( p1.period_scalar = 1 + AND p1.id_period_type = 'Y' ) + OR ( p1.period_scalar = 12 + AND p1.id_period_type = 'M' ) ) + LEFT JOIN p p2 + ON e.id_portfolio || '_ifrs9' = p2.id_portfolio + AND ( ( p2.period_scalar = 2 + AND p2.id_period_type = 'Y' ) + OR ( p2.period_scalar = 24 + AND p2.id_period_type = 'M' ) ) + LEFT JOIN p p3 + ON e.id_portfolio || '_ifrs9' = p3.id_portfolio + AND ( ( p3.period_scalar = 3 + AND p3.id_period_type = 'Y' ) + OR ( p3.period_scalar = 36 + AND p3.id_period_type = 'M' ) ) + LEFT JOIN p p10 + ON e.id_portfolio || '_ifrs9' = p10.id_portfolio + AND ( ( p10.period_scalar = 10 + AND p10.id_period_type = 'Y' ) + OR ( p10.period_scalar = 360 + AND p10.id_period_type = 'M' ) ) +WHERE ( amortised_cost_dirty < 0 + OR ( amortised_cost_dirty = 0 + AND open_commitment <= 0 ) + OR impairment != 0 + OR impairment_d != 0 + OR impairment_spec != 0 + OR impairment_spec_d != 0 + OR impairment_contingent != 0 + OR impairment_contingent_d != 0 ) + AND NOT ( id_instrument_type IN ( 'own_acc', 'sec_hft', 'sec_hft_set' ) + OR ( f2.attribute_value IS NOT NULL + AND f2.attribute_value IN ( 'GOVBONDS', 'TBILL' /*CBN Issues*/ ) ) + OR ( g2.attribute_value IS NOT NULL + AND g2.attribute_value IN ( '271', '7614' ) ) /*CBN*/ ) +; + + +SELECT * +FROM schedule_info info +WHERE ( info.employee_id, info.schedule_date ) IN ( ( 1, '2019-10-01' ), ( 1, '2019-10-02' ) ) +; + + +SELECT * +FROM table_a +WHERE other_id IN ( ( SELECT id + FROM table_b + WHERE name LIKE '%aa%' ), ( SELECT id + FROM table_b + WHERE name LIKE '%bb%' ) ) +; + + +SELECT * +FROM table1 +UNION +SELECT * +FROM table2 +ORDER BY col +LIMIT 4 +OFFSET 5 +; + + +-- ORACLE LONGOPS +SELECT l.inst_id + , l.sid + , l.serial# + , l.sql_id + , l.opname + , l.username + , l.target + , l.sofar + , l.totalwork + , l.start_time + , l.last_update_time + , Round( l.time_remaining / 60, 2 ) "REMAIN MINS" + , Round( l.elapsed_seconds / 60, 2 ) "ELAPSED MINS" + , Round( ( l.time_remaining + l.elapsed_seconds ) / 60, 2 ) "TOTAL MINS" + , Round( l.sofar / l.totalwork * 100, 2 ) "%_COMPLETE" + , l.message + , s.sql_text +FROM gv$session_longops l + LEFT OUTER JOIN v$sql s + ON s.hash_value = l.sql_hash_value + AND s.address = l.sql_address + AND s.child_number = 0 +WHERE l.opname NOT LIKE 'RMAN%' + AND l.opname NOT LIKE '%aggregate%' + AND l.totalwork != 0 + AND l.sofar <> l.totalwork + AND l.time_remaining > 0 +; + + +-- Old Oracle Outer Joins (+) +SELECT * +FROM foo + , bar +WHERE foo.id = bar.id(+) +; + + +SELECT * +FROM foo + , bar +WHERE foo.id(+) = bar.id +; + + +SELECT v.lname + , v.function + , d.name +FROM ( SELECT e.dept_id + , e.lname + , j.function + FROM employee e + , job j + WHERE e.job_id(+) = j.job_id ) v + , department d +WHERE v.dept_id(+) = d.dept_id +; + diff --git a/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest_short.sql b/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest_short.sql new file mode 100644 index 0000000..87ac206 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/simpleIT/SQLFileTest_short.sql @@ -0,0 +1,26 @@ +-- +-- 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. +-- + +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date, something_else + , value_date, posting_date, something_else ) = ( SELECT value_date + , posting_date + , something_else + , value_date + , posting_date + , something_else + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardDeleteTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardDeleteTest.sql new file mode 100644 index 0000000..969a7e3 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardDeleteTest.sql @@ -0,0 +1,22 @@ +-- +-- 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. +-- + +-- DELETE LEDGER BRANCH BALANCE +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date ) = ( SELECT value_date + , posting_date + FROM cfe.execution + WHERE id_status = 'R' ) +; + diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardInsertTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardInsertTest.sql new file mode 100644 index 0000000..f38ecc4 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardInsertTest.sql @@ -0,0 +1,30 @@ +-- +-- 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. +-- + +-- INSERT RATIO COLLECTION RATIOS +INSERT INTO risk.counterparty_ratio +VALUES ( ?, ?, ? ) +; + +-- APPEND ATTRIBUTE VALUE REF +INSERT INTO cfe.attribute_value_ref +SELECT cfe.id_attribute_value_ref.nextval + , attribute_value +FROM ( SELECT DISTINCT + a.attribute_value + FROM cfe.instrument_attribute a + LEFT JOIN cfe.attribute_value_ref b + ON a.attribute_value = b.attribute_value + WHERE b.attribute_value IS NULL ) a +; diff --git a/parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardSelectTest.sql similarity index 100% rename from parser/src/test/resources/com/manticore/jsqlformatter/standard/StandardSelectTest.sql rename to parser/src/test/resources/com/facebook/coresql/parser/standard/StandardSelectTest.sql diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardUpdateTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardUpdateTest.sql new file mode 100644 index 0000000..47c6629 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standard/StandardUpdateTest.sql @@ -0,0 +1,76 @@ +-- +-- 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. +-- + +-- UPDATE COLLATERAL_TYPE +UPDATE common.collateral_type +SET hair_cut = least +WHERE id_collateral_type_ref IN ( SELECT id_collateral_type_ref + FROM common.collateral_type a + WHERE id_status IN ( 'C', 'H', 'C' + , 'H', 'C', 'H' + , 'C', 'H' ) + AND id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_status IN ( 'C', 'H' ) + AND id_collateral_type = a.id_collateral_type ) ) +; + +-- UPDATE COUNTERPARTY_INSTRUMENT +UPDATE risk.counterparty_instrument a1 +SET ( priority + , type + , description + , limit_amout + , id_currency + , end_date ) = ( SELECT a.priority + , a.type + , a.description + , a.limit_amout + , a.id_currency + , a.end_date + FROM risk.imp_counterparty_instrument a + INNER JOIN risk.counterparty b + ON a.id_counterparty = b.id_counterparty + AND b.id_status = 'C' + INNER JOIN risk.instrument c + ON a.id_instrument_beneficiary = c.id_instrument + AND c.id_status = 'C' + INNER JOIN risk.counterparty_instrument e + ON b.id_counterparty_ref = e.id_counterparty_ref + AND e.id_instrument_beneficiary = a.id_instrument_beneficiary + AND e.id_instrument_guarantee = a.id_instrument_guarantee + WHERE e.id_counterparty_ref = a1.id_counterparty_ref + AND e.id_instrument_beneficiary = a1.id_instrument_beneficiary + AND e.id_instrument_guarantee = a1.id_instrument_guarantee ) +WHERE EXISTS ( SELECT a.priority + , a.type + , a.description + , a.limit_amout + , a.id_currency + , a.end_date + FROM risk.imp_counterparty_instrument a + INNER JOIN risk.counterparty b + ON a.id_counterparty = b.id_counterparty + AND b.id_status = 'C' + INNER JOIN risk.instrument c + ON a.id_instrument_beneficiary = c.id_instrument + AND c.id_status = 'C' + INNER JOIN risk.counterparty_instrument e + ON b.id_counterparty_ref = e.id_counterparty_ref + AND e.id_instrument_beneficiary = a.id_instrument_beneficiary + AND e.id_instrument_guarantee = a.id_instrument_guarantee + WHERE e.id_counterparty_ref = a1.id_counterparty_ref + AND e.id_instrument_beneficiary = a1.id_instrument_beneficiary + AND e.id_instrument_guarantee = a1.id_instrument_guarantee ) +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/H2OrderedAggregateTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/H2OrderedAggregateTest.sql new file mode 100644 index 0000000..9ef7f4e --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/H2OrderedAggregateTest.sql @@ -0,0 +1,45 @@ +-- +-- 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. +-- + +-- LISTAGG 1 +SELECT LISTAGG(NAME, ', ') WITHIN GROUP (ORDER BY ID) +; + + +-- LISTAGG 2 +SELECT LISTAGG(COALESCE(NAME, 'null'), ', ') WITHIN GROUP (ORDER BY ID) +; + + +-- LISTAGG 3 +/* Unsupported: SELECT LISTAGG(ID, ', ') WITHIN GROUP (ORDER BY ID) OVER (ORDER BY ID); */ +SELECT 1 +FROM dual +; + +-- ARRAY_AGG 1 +SELECT Array_Agg( name ) +; + + +-- ARRAY_AGG 2 +SELECT ARRAY_AGG(NAME ORDER BY ID) FILTER (WHERE NAME IS NOT NULL) +; + + +-- ARRAY_AGG 3 +/* SELECT ARRAY_AGG(ID ORDER BY ID) OVER (ORDER BY ID); */ +SELECT 1 +FROM dual +; \ No newline at end of file diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/MeanChallenges.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/MeanChallenges.sql new file mode 100644 index 0000000..9a3b369 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/MeanChallenges.sql @@ -0,0 +1,74 @@ +-- +-- 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. +-- + + +-- SELECT Date Ranges of available data +WITH p + AS (SELECT DISTINCT value_date + FROM risk.migration_data_v + WHERE (:1 IS NULL OR :2 ='' OR id_portfolio = Decode (:3 , '001', 'IFRS1', + '002', 'IFRS2', + '003', 'IFRS3', + '004', 'IFRS4', + '005', 'IFRS5', + '006', 'IFRS6', + :4 )) + AND value_date >= :5 + AND value_date <= :6 ), + ri + AS (SELECT a.id_risk_indicator + , Greatest((SELECT Min(value_date) + FROM p + WHERE value_date >= :7 ), (SELECT Max(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :8 )) min_ri_date + , Greatest((SELECT Min(value_date) + FROM p + WHERE value_date >= :9 ), (SELECT Min(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :10 )) min_ri_date_1 + , Least((SELECT Max(value_date) + FROM p + WHERE value_date <= :11 ), (SELECT Min(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date >= :12 )) max_ri_date + , Least((SELECT Max(value_date) + FROM p + WHERE value_date <= :13 ), (SELECT Max(value_date) + FROM risk.risk_indicator_value + WHERE id_risk_indicator_ref = a.id_risk_indicator_ref + AND value_date <= :14 )) max_ri_date_1 + FROM risk.risk_indicator a + WHERE a.id_status = 'C' + AND a.id_risk_indicator_ref = (SELECT Max(id_risk_indicator_ref) + FROM risk.risk_indicator + WHERE id_status = 'C' + AND id_risk_indicator = a.id_risk_indicator) + AND ( ( :15 IS NULL + OR id_risk_indicator = :16 ) + )) +SELECT /*+parallel*/ ri.id_risk_indicator + , Min(p.value_date) "Min. Observation Date" + , Max(p.value_date) "Max. Observation Date" +FROM ri + , p +WHERE p.value_date >= Nvl(ri.min_ri_date, ri.min_ri_date_1) + AND p.value_date <= Nvl(ri.max_ri_date, ri.max_ri_date_1) +GROUP BY ri.id_risk_indicator +order by 1 +; + diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardAlterTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardAlterTest.sql new file mode 100644 index 0000000..7677431 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardAlterTest.sql @@ -0,0 +1,74 @@ +-- +-- 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. +-- + +-- ALTER TABLE ADD FOREIGN KEY +ALTER TABLE cfe.ledger_acc_entry_manual + ADD FOREIGN KEY (id_manual_posting_batch) + REFERENCES manual_posting_batch (id_manual_posting_batch) +; + +-- ALTER TABLE DROP COLUMN +ALTER TABLE risk.collateral + DROP COLUMN id_status +; + +-- ORACLE DROP MULTIPLE COLUMNS +ALTER TABLE risk.collateral + DROP (id_status, city ) +; + +-- ORACLE DROP MANY MULTIPLE COLUMNS +ALTER TABLE risk.collateral + DROP ( id_status + , city + , column3 + , column4 ) +; + +-- ALTER TABLE ADD COLUMN +ALTER TABLE risk.collateral + ADD COLUMN id_status VARCHAR (1) NULL +; + +-- ALTER TABLE ALTER COLUMN +ALTER TABLE risk.collateral + ALTER COLUMN id_status VARCHAR (1) NOT NULL +; + +-- ORACLE ALTER TABLE ADD COLUMN +ALTER TABLE risk.collateral + ADD id_status VARCHAR (1) NULL +; + +-- ORACLE ALTER TABLE MODIFY +ALTER TABLE risk.collateral + MODIFY id_status VARCHAR (1) NOT NULL +; + +-- ORACLE ADD MULTIPLE COLUMNS +ALTER TABLE customers + ADD ( customer_name VARCHAR2 (45) + , city VARCHAR2 (40) DEFAULT 'SEATTLE') +; + +-- ORACLE MODIFY MULTIPLE COLUMNS +ALTER TABLE customers + MODIFY ( customer_name VARCHAR2 (100) NOT NULL + , city VARCHAR2 (75) DEFAULT 'SEATTLE' NOT NULL) +; + +-- RENAME +ALTER TABLE departments + RENAME COLUMN department_name TO dept_name +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCommentTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCommentTest.sql new file mode 100644 index 0000000..02ca57e --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCommentTest.sql @@ -0,0 +1,41 @@ +-- +-- 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. +-- + +-- UPDATE CALENDAR +UPDATE cfe.calendar +SET year_offset = ? /* year offset */ + , settlement_shift = ? /* settlement shift */ + , friday_is_holiday = ? /* friday is a holiday */ + , saturday_is_holiday = ? /* saturday is a holiday */ + , sunday_is_holiday = ? /* sunday is a holiday */ +WHERE id_calendar = ? +; + + +-- BOTH CLAUSES PRESENT 'with a string' AND "a field" +MERGE /*+ PARALLEL */ INTO test1 /*the target table*/ a + USING all_objects /*the source table*/ + ON ( /*joins in()!*/ a.object_id = b.object_id ) +-- INSERT CLAUSE +WHEN /*comments between keywords!*/ NOT MATCHED THEN + INSERT ( object_id /*ID Column*/ + , status /*Status Column*/ ) + VALUES ( b.object_id + , b.status ) +/* UPDATE CLAUSE +WITH A WHERE CONDITION */ +WHEN MATCHED THEN /* Lets rock */ + UPDATE SET a.status = '/*this is no comment!*/ and -- this ain''t either' + WHERE b."--status" != 'VALID' +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateIndexTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateIndexTest.sql new file mode 100644 index 0000000..67dcba0 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateIndexTest.sql @@ -0,0 +1,57 @@ +-- +-- 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. +-- + +-- SIMPLE +CREATE INDEX cfe.version_info_idx1 + ON cfe.version_info( major_version + , minor_version + , patch_level ) +; + +-- UNIQUE +CREATE UNIQUE INDEX cfe.interest_period_idx1 + ON cfe.interest_period( id_instrument, change_date ) +; + +-- MANY COLUMNS +CREATE UNIQUE INDEX cfe.version_info_idx2 + ON cfe.version_info( major_version + , minor_version + , patch_level + , major_version + , minor_version + , patch_level ) +; + +-- MANY COLUMNS WITH TAIL OPTIONS +CREATE UNIQUE INDEX cfe.version_info_idx2 + ON cfe.version_info( major_version + , minor_version + , patch_level + , major_version + , minor_version + , patch_level ) PARALLEL COMPRESS NOLOGGING +; + + +-- Z MANY COLUMNS WITH TAIL OPTIONS +-- @JSQLFormatter(indentWidth=2, keywordSpelling=LOWER, functionSpelling=KEEP, objectSpelling=UPPER, separation=AFTER) +create unique index CFE.VERSION_INFO_IDX2 + on CFE.VERSION_INFO( MAJOR_VERSION, + MINOR_VERSION, + PATCH_LEVEL, + MAJOR_VERSION, + MINOR_VERSION, + PATCH_LEVEL ) parallel compress nologging +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateTableTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateTableTest.sql new file mode 100644 index 0000000..b08a6d5 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateTableTest.sql @@ -0,0 +1,117 @@ +-- +-- 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. +-- + +-- CREATE TABLE CFE.INTEREST_PERIOD +CREATE TABLE cfe.interest_period ( + id_instrument VARCHAR (40) NOT NULL + , id_fixingmode NUMBER (5) DEFAULT 0 NOT NULL + , fixing_date DATE + , change_date DATE + , base_rate VARCHAR (12) + , base_margin_rate DECIMAL (12,9) + , par_rate VARCHAR (12) + , par_margin_rate DECIMAL (12,9) + , id_payment_convention VARCHAR (12) + , id_day_count_convention VARCHAR (12) + , id_day_incl_convention VARCHAR (12) + , fix_amount DECIMAL (23,5) + , id_currency_fix_amount VARCHAR (3) + , id_script VARCHAR (12) +) +; + +-- SIMPLE +CREATE TABLE employees ( + employee_number INT NOT NULL + , employee_name CHAR (50) NOT NULL + , department_id INT + , salary INT + , PRIMARY KEY ( employee_number ) + , UNIQUE ( employee_name ) + , FOREIGN KEY ( department_id ) + REFERENCES departments ( department_id ) +) PARALLEL COMPRESS NOLOGGING +; + +-- COMPLEX +CREATE TABLE employees ( + employee_number INT NOT NULL + , employee_name CHAR (50) NOT NULL + , department_id INT + , salary INT + , CONSTRAINT employees_pk + PRIMARY KEY ( employee_number ) + , CONSTRAINT fk_departments + FOREIGN KEY ( department_id ) + REFERENCES departments ( department_id ) +) PARALLEL COMPRESS NOLOGGING +; + +-- COMPLEX WITH MANY REFERENCES +CREATE TABLE employees ( + employee_number INT NOT NULL + , employee_name CHAR (50) NOT NULL + , department_id INT + , salary INT + , CONSTRAINT employees_pk + PRIMARY KEY ( employee_number + , employee_name + , department_id ) + , CONSTRAINT fk_departments + FOREIGN KEY ( employee_number + , employee_name + , department_id ) + REFERENCES departments ( employee_number + , employee_name + , department_id ) +) PARALLEL COMPRESS NOLOGGING +; + +-- CREATE TABLE CFE.RECONCILIATION_NOMINAL_HST 2 +CREATE TABLE cfe.reconciliation_nominal_hst PARALLEL COMPRESS NOLOGGING + AS ( SELECT /*+ PARALLEL */ + ( SELECT id_execution_ref + FROM cfe.execution_ref c + INNER JOIN cfe.execution_v d + ON c.value_date = d.value_date + AND c.posting_date = d.posting_date + AND d.flag = 'L' ) id_execution_ref + , b.id_instrument_ref + , a.value_date + , a.nominal_balance + FROM cfe.reconciliation_nominal a + INNER JOIN cfe.instrument_ref b + ON a.id_instrument = b.id_instrument ) +; + +-- Z COMPLEX WITH MANY REFERENCES +-- @JSQLFormatter(indentWidth=2, keywordSpelling=LOWER, functionSpelling=KEEP, objectSpelling=UPPER, separation=AFTER) +create table EMPLOYEES ( + EMPLOYEE_NUMBER int not null, + EMPLOYEE_NAME char (50) not null, + DEPARTMENT_ID int, + SALARY int, + constraint EMPLOYEES_PK + primary key ( EMPLOYEE_NUMBER, + EMPLOYEE_NAME, + DEPARTMENT_ID ), + constraint FK_DEPARTMENTS + foreign key ( EMPLOYEE_NUMBER, + EMPLOYEE_NAME, + DEPARTMENT_ID ) + references DEPARTMENTS ( EMPLOYEE_NUMBER, + EMPLOYEE_NAME, + DEPARTMENT_ID ) +) parallel compress nologging +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateViewTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateViewTest.sql new file mode 100644 index 0000000..bc69d2b --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardCreateViewTest.sql @@ -0,0 +1,100 @@ +-- +-- 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. +-- + +-- VIEW 1 +CREATE OR REPLACE VIEW cfe.interest_period_on_value_day + AS SELECT /*+ PARALLEL */ + a.value_date + , d.id_instrument + , d.id_fixingmode + , d.fixing_date + , Coalesce( d.change_date, b.end_date ) change_date + , d.base_rate + , d.base_margin_rate + , d.par_rate + , d.par_margin_rate + , d.id_payment_convention + , d.id_day_count_convention + , d.id_day_incl_convention + , d.fix_amount + , d.id_currency_fix_amount + , d.id_script + FROM ( SELECT value_date + , posting_date + FROM cfe.execution e + WHERE id_status = 'R' + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status = 'R' ) + AND posting_date = ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = e.value_date ) ) a + INNER JOIN cfe.instrument_hst b + ON a.value_date = b.value_date + AND a.posting_date = b.posting_date + INNER JOIN cfe.instrument_ref c + ON b.id_instrument_ref = c.id_instrument_ref + INNER JOIN cfe.interest_period d + ON d.id_instrument = c.id_instrument + AND a.value_date <= Coalesce( d.change_date, b.end_date ) + WHERE Coalesce( d.change_date, b.end_date ) = ( SELECT Min( Coalesce( change_date, b.end_date ) ) + FROM cfe.interest_period + WHERE id_instrument = d.id_instrument + AND a.value_date <= Coalesce( change_date, b.end_date ) ) + ORDER BY 2 + , 1 + , 4 +; + +-- VIEW 2 +CREATE OR REPLACE VIEW cfe.execution_v + AS SELECT /*+ PARALLEL */ + e.start_timestamp + , e.end_timestamp + , EXTRACT( hour FROM + e.end_timestamp + - e.start_timestamp ) || ':' + || Lpad( EXTRACT( minute FROM e.end_timestamp - e.start_timestamp ), 2, '0' ) duration + , e.value_date + , e.posting_date + , CASE + WHEN EXTRACT( year FROM e1.value_date ) > EXTRACT( year FROM e.value_date ) + THEN 'Y' + WHEN To_Char( e1.value_date, 'Q' ) > To_Char( e.value_date, 'Q' ) + THEN 'Q' + WHEN EXTRACT( month FROM e1.value_date ) > EXTRACT( month FROM e.value_date ) + THEN 'M' + WHEN To_Char( e1.value_date, 'IW' ) > To_Char( e.value_date, 'IW' ) + THEN 'W' + WHEN e1.value_date IS NULL + AND e.id_status = 'R' + THEN 'L' + END flag + , e.value_date_p + , e.value_date_pp + , e.id_status + FROM cfe.execution e + LEFT JOIN cfe.execution e1 + ON e.value_date < e1.value_date + AND e.id_status IN ( 'R', 'H' ) + AND e1.id_status IN ( 'R', 'H' ) + WHERE ( e1.value_date = ( SELECT Min( value_date ) + FROM cfe.execution + WHERE id_status IN ( 'R', 'H' ) + AND value_date > e.value_date ) + OR e1.value_date IS NULL ) + ORDER BY e.posting_date DESC + , e.value_date DESC +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardDeleteTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardDeleteTest.sql new file mode 100644 index 0000000..db36eb7 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardDeleteTest.sql @@ -0,0 +1,103 @@ +-- +-- 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. +-- + +-- DELETE LEDGER BRANCH BALANCE +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date ) = ( SELECT value_date + , posting_date + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; + +-- DELETE WITH MANY ITEMS +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date, something_else ) = ( SELECT value_date + , posting_date + , something_else + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; + +-- DELETE WITH MORE ITEMS +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date + , posting_date + , something_else + , value_date ) = ( SELECT value_date + , posting_date + , something_else + , value_date + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; + +-- DELETE WITH EVEN MORE ITEMS +DELETE FROM cfe.ledger_branch_balance +WHERE ( value_date, posting_date, something_else + , value_date, posting_date, something_else ) = ( SELECT value_date + , posting_date + , something_else + , value_date + , posting_date + , something_else + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = :VALUE_DATE ) +; + +-- DELETE INSTRUMENT HST AFTER VALUE_DATE_P +DELETE /*+ PARALLEL INDEX_FFS(A, INSTRUMENT_HST_IDX1) */ FROM cfe.instrument_hst a +WHERE ( value_date, posting_date ) IN ( SELECT value_date + , posting_date + FROM cfe.execution + WHERE posting_date > ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) + OR ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) IS NULL ) +; + +-- DELETE REDUNDANT INSTRUMENT COLLATERAL HST 2 +DELETE FROM cfe.instrument_collateral_hst t1 +WHERE EXISTS ( SELECT 1 + FROM cfe.instrument_collateral a + INNER JOIN cfe.collateral_ref b + ON a.id_collateral = b.id_collateral + INNER JOIN cfe.instrument_ref c + ON a.id_instrument = c.id_instrument + WHERE b.id_collateral_ref = t1.id_collateral_ref + AND c.id_instrument_ref = t1.id_instrument_ref + AND a.valid_date = t1.valid_date ) +; + +-- DELETE ACCOUNT ENTRIES AFTER VALUE_DATE_P +DELETE FROM cfe.ledger_account_entry a +WHERE posting_date IN ( SELECT posting_date + FROM cfe.execution + WHERE posting_date > ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) + OR ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND value_date <= :value_date_p ) IS NULL ) + AND reversed = '0' +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardInsertTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardInsertTest.sql new file mode 100644 index 0000000..51f8a19 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardInsertTest.sql @@ -0,0 +1,58 @@ +-- +-- 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. +-- + +-- INSERT COUNTERPARTY COUNTERPARTY RELATIONSHIP +INSERT INTO risk.counterparty_counterparty +VALUES ( :id_counterparty_ref, :id_counterparty_beneficiary, :id_instrument_guarantee + , :priority, :type, :description + , :limit_amout, :id_currency, :end_date ) +; + +-- INSERT RATIO COLLECTION RATIOS +INSERT INTO risk.counterparty_ratio +VALUES ( ?, ?, ? ) +; + +-- INSERT TMP_CCF +INSERT INTO risk.tmp_ccf ( + "ID_INSTRUMENT" + , "TENOR" + , "STATUS" + , "OBSERVATION_DATE" + , "BALANCE" + , "LIMIT" + , "DR_BALANCE" + , "OPEN_LIMIT" ) +SELECT '1000042339' /* ID_INSTRUMENT */ + , 0 /* TENOR */ + , 'DEFAULT' /* STATUS */ + , {d '2020-02-27'} /* OBSERVATION_DATE */ + , - 142574953.65 /* BALANCE */ + , 300000000 /* LIMIT */ + , - 142574953.65 /* DR_BALANCE */ + , 157425046.35 /* OPEN_LIMIT */ +FROM dual +; + +-- APPEND ATTRIBUTE VALUE REF +INSERT INTO cfe.attribute_value_ref +SELECT cfe.id_attribute_value_ref.nextval + , attribute_value +FROM ( SELECT DISTINCT + a.attribute_value + FROM cfe.instrument_attribute a + LEFT JOIN cfe.attribute_value_ref b + ON a.attribute_value = b.attribute_value + WHERE b.attribute_value IS NULL ) a +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardMergeTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardMergeTest.sql new file mode 100644 index 0000000..eecb71f --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardMergeTest.sql @@ -0,0 +1,229 @@ +-- +-- 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. +-- + +-- MERGE 1 +MERGE INTO cfe.impairment imp + USING ( WITH x AS ( + SELECT a.id_instrument + , a.id_currency + , a.id_instrument_type + , b.id_portfolio + , c.attribute_value product_code + , t.valid_date + , t.ccf + FROM cfe.instrument a + INNER JOIN cfe.impairment b + ON a.id_instrument = b.id_instrument + LEFT JOIN cfe.instrument_attribute c + ON a.id_instrument = c.id_instrument + AND c.id_attribute = 'product' + INNER JOIN cfe.ext_ccf t + ON ( a.id_currency LIKE t.id_currency ) + AND ( a.id_instrument_type LIKE t.id_instrument_type ) + AND ( b.id_portfolio LIKE t.id_portfolio + OR ( b.id_portfolio IS NULL + AND t.id_portfolio = '%' ) ) + AND ( c.attribute_value LIKE t.product_code + OR ( c.attribute_value IS NULL + AND t.product_code = '%' ) ) ) +SELECT /*+ PARALLEL */ * + FROM x x1 + WHERE x1.valid_date = ( SELECT max + FROM x + WHERE id_instrument = x1.id_instrument ) ) s + ON ( imp.id_instrument = s.id_instrument ) +WHEN MATCHED THEN + UPDATE SET imp.ccf = s.ccf +; + +-- MERGE 2 +MERGE INTO cfe.instrument_import_measure imp + USING ( WITH x AS ( + SELECT a.id_instrument + , a.id_currency + , a.id_instrument_type + , b.id_portfolio + , c.attribute_value product_code + , t.valid_date + , t.yield + FROM cfe.instrument a + INNER JOIN cfe.impairment b + ON a.id_instrument = b.id_instrument + LEFT JOIN cfe.instrument_attribute c + ON a.id_instrument = c.id_instrument + AND c.id_attribute = 'product' + INNER JOIN cfe.ext_yield t + ON ( a.id_currency = t.id_currency ) + AND ( a.id_instrument_type LIKE t.id_instrument_type ) + AND ( b.id_portfolio LIKE t.id_portfolio + OR ( b.id_portfolio IS NULL + AND t.id_portfolio = '%' ) ) + AND ( c.attribute_value LIKE t.product_code + OR ( c.attribute_value IS NULL + AND t.product_code = '%' ) ) ) +SELECT /*+ PARALLEL */ * + FROM x x1 + WHERE x1.valid_date = ( SELECT max + FROM x + WHERE id_instrument = x1.id_instrument + AND valid_date <= to_date ) ) s + ON ( imp.id_instrument = s.id_instrument + AND imp.measure = 'YIELD' ) +WHEN MATCHED THEN + UPDATE SET imp.value = s.yield +; + +-- MERGE 3 +MERGE INTO cfe.instrument_import_measure imp + USING s + ON ( imp.id_instrument = s.id_instrument + AND imp.measure = 'YIELD_P' + AND imp.id_instrument = s.id_instrument + AND imp.measure = 'YIELD_P' ) +WHEN MATCHED THEN + UPDATE SET imp.value = s.yield +; + +-- MERGE 4 +MERGE INTO cfe.instrument_import_measure imp + USING ( WITH x AS ( + SELECT a.id_instrument + , a.id_currency + , a.id_instrument_type + , b.id_portfolio + , c.attribute_value product_code + , t.valid_date + , t.yield + FROM cfe.instrument a + INNER JOIN cfe.impairment b + ON a.id_instrument = b.id_instrument + LEFT JOIN cfe.instrument_attribute c + ON a.id_instrument = c.id_instrument + AND c.id_attribute = 'product' + INNER JOIN cfe.ext_yield t + ON ( a.id_currency = t.id_currency ) + AND ( a.id_instrument_type LIKE t.id_instrument_type ) + AND ( b.id_portfolio LIKE t.id_portfolio + OR ( b.id_portfolio IS NULL + AND t.id_portfolio = '%' ) ) + AND ( c.attribute_value LIKE t.product_code + OR ( c.attribute_value IS NULL + AND t.product_code = '%' ) ) ) +SELECT /*+ PARALLEL */ * + FROM x x1 + WHERE x1.valid_date = ( SELECT max + FROM x + WHERE id_instrument = x1.id_instrument + AND valid_date <= to_date ) ) s + ON ( imp.id_instrument = s.id_instrument + AND imp.measure = 'YIELD_PP' ) +WHEN MATCHED THEN + UPDATE SET imp.value = s.yield +; + +-- MERGE DELETE WHERE +MERGE INTO empl_current tar + USING ( SELECT empno + , ename + , CASE + WHEN leavedate <= sysdate + THEN 'Y' + ELSE 'N' + END AS delete_flag + FROM empl ) src + ON ( tar.empno = src.empno ) +WHEN NOT MATCHED THEN + INSERT ( empno + , ename ) + VALUES ( src.empno + , src.ename ) +WHEN MATCHED THEN + UPDATE SET tar.ename = src.ename + WHERE delete_flag = 'N' + DELETE WHERE delete_flag = 'Y' +; + +-- BOTH CLAUSES PRESENT +MERGE INTO test1 a + USING all_objects + ON ( a.object_id = b.object_id ) +WHEN NOT MATCHED THEN + INSERT ( object_id + , status ) + VALUES ( b.object_id + , b.status ) +WHEN MATCHED THEN + UPDATE SET a.status = b.status + WHERE b.status != 'VALID' +; + +-- BOTH CLAUSES PRESENT 2 +MERGE INTO test1 a + USING all_objects + ON ( a.object_id = b.object_id ) +WHEN NOT MATCHED THEN + INSERT ( object_id + , status ) + VALUES ( b.object_id + , b.status ) + WHERE b.status != 'VALID' +WHEN MATCHED THEN + UPDATE SET a.status = b.status + WHERE b.status != 'VALID' +; + +-- INSERT WITHOUT COLUMNS +MERGE /*+ PARALLEL */ INTO cfe.tmp_eab a + USING ( SELECT /*+ PARALLEL DRIVING_SITE(C) */ c.* + FROM tbaadm.eab@finnacle c + INNER JOIN ( SELECT acid + , eod_date + FROM cfe.tmp_eab e + WHERE end_eod_date = ( SELECT Max( eod_date ) + FROM cfe.tmp_eab + WHERE acid = e.acid ) + AND end_eod_date < '31-Dec-2099' ) d + ON c.acid = d.acid + AND c.eod_date >= d.eod_date ) b + ON ( a.acid = b.acid + AND a.eod_date = b.eod_date ) +WHEN MATCHED THEN + UPDATE SET a.tran_date_bal = b.tran_date_bal + , a.tran_date_tot_tran = b.tran_date_tot_tran + , a.value_date_bal = b.value_date_bal + , a.value_date_tot_tran = b.value_date_tot_tran + , a.end_eod_date = b.end_eod_date + , a.lchg_user_id = b.lchg_user_id + , a.lchg_time = b.lchg_time + , a.rcre_user_id = b.rcre_user_id + , a.rcre_time = b.rcre_time + , a.ts_cnt = b.ts_cnt + , a.eab_crncy_code = b.eab_crncy_code + , a.bank_id = b.bank_id +WHEN NOT MATCHED THEN + INSERT VALUES ( b.acid + , b.eod_date + , b.tran_date_bal + , b.tran_date_tot_tran + , b.value_date_bal + , b.value_date_tot_tran + , b.end_eod_date + , b.lchg_user_id + , b.lchg_time + , b.rcre_user_id + , b.rcre_time + , b.ts_cnt + , b.eab_crncy_code + , b.bank_id ) +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardOffsetLimitTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardOffsetLimitTest.sql new file mode 100644 index 0000000..41284e2 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardOffsetLimitTest.sql @@ -0,0 +1,44 @@ +-- +-- 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. +-- + +-- SIMPLE LIMIT +SELECT p.* +FROM product p + LEFT JOIN product_description pd + ON ( p.product_id = pd.product_id ) + LEFT JOIN product_type_google_category ptgc + ON ( p.product_type_id = ptgc.product_type_id ) + LEFT JOIN product_google_custom_label pgcl + ON ( p.product_id = pgcl.product_id ) +WHERE p.status = 1 + AND pd.language_id = 2 + AND p.product_id IN ( SELECT product_id + FROM cj_googleshopping_products ) +ORDER BY date_available DESC + , p.purchased DESC +LIMIT 200000 +; + +-- LIMIT OFFSET EXPRESSIONS +SELECT p.* +FROM product p +LIMIT '200000' +OFFSET '5' +; + +-- MYSQL LIMIT OFFSET EXPRESSIONS +SELECT p.* +FROM product p +LIMIT 5, 2000 +; \ No newline at end of file diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardSelectTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardSelectTest.sql new file mode 100644 index 0000000..e6056a5 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardSelectTest.sql @@ -0,0 +1,476 @@ +-- +-- 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. +-- + +-- INSERT NEW LEDGER ACCOUNTS +SELECT /*+ PARALLEL */ + cfe.id_account_seq.nextval + , "a"."code" + , a."id_currency" + , a.id_fee_type + , current_date + , NULL + , id_accounting_scope_code +FROM ( SELECT * + FROM ( SELECT DISTINCT + c.code code + , d.id_currency + , NULL id_fee_type + , c1.id_accounting_scope_code + FROM cfe.ledger_branch c + INNER JOIN cfe.accounting_scope c1 + ON c1.id_accounting_scope = c.id_accounting_scope + AND c1.id_status = 'C' + , common.ledger_currency d + MINUS + SELECT DISTINCT + c.code + , d.id_currency + , NULL id_fee_type + , c.id_accounting_scope_code + FROM cfe.ledger_account c + INNER JOIN common.ledger_currency d + ON c.id_currency = d.id_currency ) + UNION + SELECT * + FROM ( SELECT DISTINCT + c.code + , d.id_currency + , NULL id_fee_type + , c1.id_accounting_scope_code + FROM cfe.ledger_branch c + INNER JOIN cfe.accounting_scope c1 + ON c1.id_accounting_scope = c.id_accounting_scope + AND c1.id_status = 'C' + , common.ledger_currency d + MINUS + SELECT DISTINCT + c.code + , d.id_currency + , NULL id_fee_type + , c.id_accounting_scope_code + FROM cfe.ledger_account c + INNER JOIN common.ledger_currency d + ON c.id_currency = d.id_currency ) + UNION + SELECT * + FROM ( SELECT DISTINCT + c.code code + , d.id_currency + , e.id_fee_type + , c1.id_accounting_scope_code + FROM cfe.ledger_branch c + INNER JOIN cfe.accounting_scope c1 + ON c1.id_accounting_scope = c.id_accounting_scope + AND c1.id_status = 'C' + , common.ledger_currency d + , cfe.fee_type e + MINUS + SELECT DISTINCT + c.code + , d.id_currency + , e.id_fee_type + , c.id_accounting_scope_code + FROM cfe.ledger_account c + INNER JOIN common.ledger_currency d + ON c.id_currency = d.id_currency + INNER JOIN cfe.fee_type e + ON c.id_fee_type = e.id_fee_type ) ) a +; + +-- INSERT INTO LEDGER BRANCH BALANCE +WITH scope AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = :SCOPE ) + , ex AS ( + SELECT * + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND ( :VALUE_DATE IS NULL + OR value_date <= :VALUE_DATE ) ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + INNER JOIN ex + ON f.value_date <= ex.value_date + WHERE f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into + AND value_date <= ex.value_date ) + AND id_currency_into = :BOOK_CURRENCY + UNION ALL + SELECT :BOOK_CURRENCY + , 1 + FROM dual ) +SELECT /*+ PARALLEL */ + scope.id_accounting_scope + , ex.value_date + , ex.posting_date + , a.gl_level + , a.code + , b.description + , c.balance_bc +FROM ex + , scope + INNER JOIN cfe.ledger_branch_branch a + ON a.id_accounting_scope = scope.id_accounting_scope + AND a.code = a.code_inferior + INNER JOIN cfe.ledger_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + AND b.code = a.code + INNER JOIN ( SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) balance_bc + FROM scope + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope.id_accounting_scope_code + INNER JOIN ( SELECT id_account + , Sum( amount ) balance + FROM ( SELECT id_account_credit id_account + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) + GROUP BY id_account ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from + GROUP BY b.code ) c + ON c.code = a.code +; + +-- INSERT INTO LEDGER BRANCH BALANCE NEW +WITH scope AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = :SCOPE ) + , ex AS ( + SELECT * + FROM cfe.execution + WHERE id_status = 'R' + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status = 'R' + AND ( :VALUE_DATE IS NULL + OR value_date <= :VALUE_DATE ) ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + INNER JOIN ex + ON f.value_date <= ex.value_date + WHERE f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into + AND value_date <= ex.value_date ) + AND id_currency_into = :BOOK_CURRENCY + UNION ALL + SELECT :BOOK_CURRENCY + , 1 + FROM dual ) +SELECT /*+ PARALLEL */ + scope.id_accounting_scope + , ex.value_date + , ex.posting_date + , a.gl_level + , a.code + , b.description + , c.balance_bc +FROM ex + , scope + INNER JOIN cfe.ledger_branch_branch a + ON a.id_accounting_scope = scope.id_accounting_scope + AND a.code = a.code_inferior + INNER JOIN cfe.ledger_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + AND b.code = a.code + INNER JOIN ( SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) + FROM scope + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope.id_accounting_scope_code + INNER JOIN ( SELECT id_account + , Sum( amount ) + FROM ( SELECT id_account_credit + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from ) c + ON c.code = a.code +; + +-- APPEND COLLATERAL REF +SELECT /*+ PARALLEL */ + cfe.id_collateral_ref.nextval + , id_collateral +FROM ( SELECT DISTINCT + a.id_collateral + FROM cfe.collateral a + LEFT JOIN cfe.collateral_ref b + ON a.id_collateral = b.id_collateral + WHERE b.id_collateral_ref IS NULL ) +; + +-- APPEND COUNTER PARTY REF +SELECT /*+ PARALLEL */ + cfe.id_counter_party_ref.nextval + , id_counter_party +FROM ( SELECT DISTINCT + a.id_counter_party + FROM cfe.collateral a + LEFT JOIN cfe.counter_party_ref b + ON a.id_counter_party = b.id_counter_party + WHERE a.id_counter_party IS NOT NULL + AND b.id_counter_party_ref IS NULL ) +; + +-- APPEND COLLATERAL HST +SELECT /*+ PARALLEL */ + b.id_collateral_ref + , c.id_counter_party_ref + , coalesce valid_date + , a.description + , d.id_collateral_type_ref + , a.fair_value + , a.forced_sale_value + , a.id_currency + , a.appraisal_date +FROM cfe.collateral a + INNER JOIN cfe.collateral_ref b + ON a.id_collateral = b.id_collateral + LEFT JOIN cfe.counter_party_ref c + ON a.id_counter_party = c.id_counter_party + INNER JOIN ( SELECT * + FROM common.collateral_type d1 + WHERE id_status IN ( 'C', 'H' ) + AND id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_status IN ( 'C', 'H' ) + AND id_collateral_type = d1.id_collateral_type ) ) d + ON a.id_collateral_type = d.id_collateral_type +; + +-- SELECT WITH COMPLEX ORDER +WITH ex AS ( + SELECT value_date + , posting_date + FROM cfe.execution x + WHERE id_status IN ( 'R', 'H' ) + AND value_date = ( SELECT Max( value_date ) + FROM cfe.execution + WHERE id_status IN ( 'R', 'H' ) ) + AND posting_date = ( SELECT Max( posting_date ) + FROM cfe.execution + WHERE id_status IN ( 'R', 'H' ) + AND value_date = x.value_date ) ) + , fxr AS ( + SELECT id_currency_from + , fxrate + FROM common.fxrate_hst f + WHERE f.value_date <= ( SELECT value_date + FROM ex ) + AND f.value_date = ( SELECT Max( value_date ) + FROM common.fxrate_hst + WHERE id_currency_from = f.id_currency_from + AND id_currency_into = f.id_currency_into ) + AND id_currency_into = 'NGN' + UNION ALL + SELECT 'NGN' + , 1 + FROM dual ) + , scope AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = 'INTERN' ) + , scope1 AS ( + SELECT * + FROM cfe.accounting_scope + WHERE id_status = 'C' + AND id_accounting_scope_code = 'NGAAP' ) + , c AS ( + SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) balance_bc + FROM scope + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope.id_accounting_scope_code + INNER JOIN ( SELECT id_account_credit id_account + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from + GROUP BY b.code ) + , c1 AS ( + SELECT b.code + , Round( d.amount * fxr.fxrate, 2 ) balance_bc + FROM scope1 + INNER JOIN cfe.ledger_branch_branch b + ON b.id_accounting_scope = scope1.id_accounting_scope + INNER JOIN cfe.ledger_account c + ON b.code_inferior = c.code + AND c.id_accounting_scope_code = scope1.id_accounting_scope_code + INNER JOIN ( SELECT id_account_credit id_account + , amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date + UNION ALL + SELECT id_account_debit + , - amount + FROM cfe.ledger_account_entry + INNER JOIN ex + ON ledger_account_entry.posting_date <= ex.posting_date ) d + ON c.id_account = d.id_account + INNER JOIN fxr + ON c.id_currency = fxr.id_currency_from + GROUP BY b.code ) +SELECT /*+ PARALLEL */ + a.code code + , Lpad( ' ', 4 * ( a.gl_level - 1 ), ' ' ) + || a.code format_code + , b.description + , c.balance_bc + , c1.balance_bc +FROM scope + INNER JOIN cfe.ledger_branch_branch a + ON a.code = a.code_inferior + AND a.id_accounting_scope = scope.id_accounting_scope + INNER JOIN cfe.ledger_branch b + ON a.id_accounting_scope = b.id_accounting_scope + AND a.code = b.code + LEFT JOIN c + ON a.code = c.code + LEFT OUTER JOIN c1 + ON a.code = c1.code +WHERE gl_level <= 3 + AND NOT ( c.balance_bc IS NULL + AND c1.balance_bc IS NULL ) +ORDER BY ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 1 ) NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 2 ) ASC NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 3 ) DESC NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 4 ) DESC + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 5 ) ASC + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 6 ) NULLS FIRST + , ( SELECT code + FROM cfe.ledger_branch_branch + WHERE id_accounting_scope = a.id_accounting_scope + AND code_inferior = a.code + AND gl_level = 7 ) NULLS FIRST + , code +; + +-- ALL COLUMNS FROM TABLE +SELECT a.* +FROM cfe.instrument a +; + +-- NESTED WITH +WITH teststmt1 AS ( + WITH teststmt2 AS ( + SELECT * + FROM my_table2 ) + SELECT col1 + , col2 + FROM teststmt2 ) +SELECT * +FROM teststmt +; + +( + SELECT __time + FROM traffic_protocol_stat_log + LIMIT 1 ) +UNION ALL ( + SELECT __time + FROM traffic_protocol_stat_log + ORDER BY __time + LIMIT 1 ) +; + +-- GROUP BY +SELECT a + , b + , c + , Sum( d ) +FROM t +GROUP BY a + , b + , c +HAVING Sum( d ) > 0 + AND Count( * ) > 1 +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardTruncateTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardTruncateTest.sql new file mode 100644 index 0000000..f82a7aa --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardTruncateTest.sql @@ -0,0 +1,21 @@ +-- +-- 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. +-- + +-- TRUNCATE 1 +TRUNCATE TABLE cfe.execution +; + +-- TRUNCATE 2 +TRUNCATE TABLE cfe.execution CASCADE +; \ No newline at end of file diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardUpdateTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardUpdateTest.sql new file mode 100644 index 0000000..c9c65d2 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardUpdateTest.sql @@ -0,0 +1,130 @@ +-- +-- 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. +-- + +-- UPDATE COUNTERPARTY +UPDATE risk.counterparty +SET id_counterparty = :id_counterparty + , label = :label + , description = :description + , id_counterparty_group_type = :id_counterparty_group_type + , id_counterparty_type = :id_counterparty_type + , id_counterparty_sub_type = :id_counterparty_sub_type + , id_country_group = :id_country_group + , id_country = :id_country + , id_country_state = :id_country_state + , id_district = :id_district + , id_city = :id_city + , id_industrial_sector = :id_industrial_sector + , id_industrial_sub_sector = :id_industrial_sub_sector + , block_auto_update_flag = :block_auto_update_flag + , id_user_editor = :id_user_editor + , id_organization_unit = :id_organization_unit + , id_status = :id_status + , update_timestamp = current_timestamp +WHERE id_counterparty_ref = :id_counterparty_ref +; + +-- UPDATE COLLATERAL_TYPE +UPDATE common.collateral_type +SET hair_cut = least +WHERE id_collateral_type_ref IN ( SELECT id_collateral_type_ref + FROM common.collateral_type a + WHERE id_status IN ( 'C', 'H', 'C' + , 'H', 'C', 'H' + , 'C', 'H' ) + AND id_collateral_type_ref = ( SELECT Max( id_collateral_type_ref ) + FROM common.collateral_type + WHERE id_status IN ( 'C', 'H' ) + AND id_collateral_type = a.id_collateral_type ) ) +; + +-- UPDATE COUNTERPARTY_INSTRUMENT +UPDATE risk.counterparty_instrument a1 +SET ( priority + , type + , description + , limit_amout + , id_currency + , end_date ) = ( SELECT a.priority + , a.type + , a.description + , a.limit_amout + , a.id_currency + , a.end_date + FROM risk.imp_counterparty_instrument a + INNER JOIN risk.counterparty b + ON a.id_counterparty = b.id_counterparty + AND b.id_status = 'C' + INNER JOIN risk.instrument c + ON a.id_instrument_beneficiary = c.id_instrument + AND c.id_status = 'C' + INNER JOIN risk.counterparty_instrument e + ON b.id_counterparty_ref = e.id_counterparty_ref + AND e.id_instrument_beneficiary = a.id_instrument_beneficiary + AND e.id_instrument_guarantee = a.id_instrument_guarantee + WHERE e.id_counterparty_ref = a1.id_counterparty_ref + AND e.id_instrument_beneficiary = a1.id_instrument_beneficiary + AND e.id_instrument_guarantee = a1.id_instrument_guarantee ) +WHERE EXISTS ( SELECT a.priority + , a.type + , a.description + , a.limit_amout + , a.id_currency + , a.end_date + FROM risk.imp_counterparty_instrument a + INNER JOIN risk.counterparty b + ON a.id_counterparty = b.id_counterparty + AND b.id_status = 'C' + INNER JOIN risk.instrument c + ON a.id_instrument_beneficiary = c.id_instrument + AND c.id_status = 'C' + INNER JOIN risk.counterparty_instrument e + ON b.id_counterparty_ref = e.id_counterparty_ref + AND e.id_instrument_beneficiary = a.id_instrument_beneficiary + AND e.id_instrument_guarantee = a.id_instrument_guarantee + WHERE e.id_counterparty_ref = a1.id_counterparty_ref + AND e.id_instrument_beneficiary = a1.id_instrument_beneficiary + AND e.id_instrument_guarantee = a1.id_instrument_guarantee ) +; + +-- UPDATE SETS ISSUE 1316 +UPDATE prpjpaymentbill b +SET ( b.packagecode + , b.packageremark + , b.agentcode ) = ( SELECT p.payrefreason + , p.classcode + , p.riskcode + FROM prpjcommbill p + WHERE p.policertiid = 'SDDH200937010330006366' ) /* this is supposed to be UpdateSet 1 */ + , b.payrefnotype = '05' /* this is supposed to be UpdateSet 2 */ + , b.packageunit = '4101170402' /* this is supposed to be UpdateSet 3 */ +WHERE b.payrefno = 'B370202091026000005' +; + +-- UPDATE START JOINS +UPDATE sc_borrower b + INNER JOIN sc_credit_apply a + ON a.borrower_id = b.id +SET b.name = '0.7505105896846266' + , a.credit_line = a.credit_line + 1 +WHERE b.id = 3 +; + +-- UPDATE JOINS +UPDATE table1 +SET columna = 5 +FROM table1 + LEFT JOIN table2 + ON col1 = col2 +; diff --git a/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardValueStatementTest.sql b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardValueStatementTest.sql new file mode 100644 index 0000000..0f54004 --- /dev/null +++ b/parser/src/test/resources/com/facebook/coresql/parser/standardIT/StandardValueStatementTest.sql @@ -0,0 +1,72 @@ +-- +-- 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. +-- + +-- PREPARE TABLE +CREATE TABLE sample_data ( + "DAY" INT + , "VALUE" INT +) +; + +-- SIMPLE EXPRESSION LIST WITH BRACKETS +WITH sample_data ( "DAY" ) + AS ( VALUES ( 0, 1, 2 ) ) +SELECT "DAY" +FROM sample_data +; + +-- MULTIPLE EXPRESSION LIST WITH BRACKETS +WITH sample_data ( "DAY", "VALUE" ) + AS ( VALUES ( ( 0, 13 ), ( 1, 12 ), ( 2, 15 ) + , ( 3, 4 ), ( 4, 8 ), ( 5, 16 ) ) ) +SELECT "DAY" + , "VALUE" +FROM sample_data +; + +-- SIMPLE EXPRESSION LIST WITHOUT BRACKETS +WITH sample_data ( "DAY" ) + AS ( VALUES 0, 1, 2 ) +SELECT "DAY" +FROM sample_data +; + +-- MULTIPLE EXPRESSION LIST WITHOUT BRACKETS +WITH sample_data ( "DAY", "VALUE" ) + AS ( VALUES ( 0, 13 ), ( 1, 12 ), ( 2, 15 ) + , ( 3, 4 ), ( 4, 8 ), ( 5, 16 ) ) +SELECT "DAY" + , "VALUE" +FROM sample_data +; + +-- VALUE LIST UNION SELECT +WITH split ( word + , str + , hascomma ) AS ( + VALUES ( '', 'Auto,A,1234444', 1 ) + UNION ALL + SELECT Substr( str, 0, CASE + WHEN Instr( str, ',' ) + THEN Instr( str, ',' ) + ELSE Length( str ) + 1 + END ) + , Ltrim( Substr( str, Instr( str, ',' ) ), ',' ) + , Instr( str, ',' ) + FROM split + WHERE hascomma ) +SELECT Trim( word ) +FROM split +WHERE word != '' +; \ No newline at end of file diff --git a/pom.xml b/pom.xml index 4019dde..7e8e1e3 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,8 @@ <parent> <groupId>io.airlift</groupId> <artifactId>airbase</artifactId> - <version>130</version> + <!-- last working version with Java 8, everything later forcefully adds a "release" option to "javac" --> + <version>100</version> </parent> <groupId>com.facebook.presto</groupId> @@ -18,9 +19,10 @@ <url>https://github.com/prestodb/sql</url> <properties> - <dep.airlift.version>219</dep.airlift.version> + <!-- 206 is the last Java 8 ByteCode 52 release, everything after depends on Java 11 ByteCode 55) --> + <dep.airlift.version>206</dep.airlift.version> <air.check.skip-pmd>false</air.check.skip-pmd> - <air.check.skip-enforcer>false</air.check.skip-enforcer> + <air.check.skip-enforcer>true</air.check.skip-enforcer> <air.check.skip-checkstyle>false</air.check.skip-checkstyle> <air.check.skip-dependency>false</air.check.skip-dependency> <air.check.skip-duplicate-finder>false</air.check.skip-duplicate-finder> @@ -77,14 +79,6 @@ </configuration> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <configuration combine.children="append"> - <fork>false</fork> - </configuration> - </plugin> - <plugin> <!-- <groupId>org.apache.maven.plugins</groupId> --> <artifactId>maven-pmd-plugin</artifactId> @@ -97,7 +91,7 @@ <groupId>com.github.spotbugs</groupId> <artifactId>spotbugs-maven-plugin</artifactId> <configuration> - <excludeFilterFile>${project.basedir}/../src/spotbugs/spotbugs-exclude.xml</excludeFilterFile> + <excludeFilterFile>config/spotbugs/spotbugs-exclude.xml</excludeFilterFile> </configuration> <executions> <execution> @@ -180,7 +174,18 @@ <formatAnnotations /> <!-- fixes formatting of type annotations, see below --> </java> </configuration> - </plugin> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-enforcer-plugin</artifactId> + <configuration> + <rules> + <requireJavaVersion> + <version>[1.8,)</version> + </requireJavaVersion> + </rules> + </configuration> + </plugin> </plugins> <pluginManagement> diff --git a/sphinx/src/_static/logo-presto-color.svg b/sphinx/src/_static/logo-presto-color.svg new file mode 100644 index 0000000..e4a0937 --- /dev/null +++ b/sphinx/src/_static/logo-presto-color.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="459.37" height="145.304" viewBox="0 0 459.37 145.304"><g data-name="Group 397" transform="translate(-1120.572 -211.071)"><path data-name="Path 173" d="M1144.955 336.563a24.29 24.29 0 01-14.536-4.806v24.618h-9.848v-79.246h8.322l.822 5.86c2.7-3.752 9.026-7.034 15.944-7.034 17.113 0 21.567 13.835 21.567 30.247.001 18.285-6.094 30.361-22.271 30.361zm-14.536-12.542a21.463 21.463 0 0013.128 4.571c11.371 0 13.832-8.907 13.832-22.505s-2.109-22.159-13.128-22.159a20.857 20.857 0 00-13.832 5.746zm78.538-38.686a70.4 70.4 0 00-18.17 6.1v43.841h-9.846v-58.142h8.089l1.053 6.8c3.518-3.514 9.966-6.914 17.585-7.619zm15.473 25.206c.588 12.307 3.635 18.167 15.474 18.167a49.442 49.442 0 0017.114-3.28l1.524 7.5a54.532 54.532 0 01-18.756 3.52c-20.983 0-25.2-14.3-25.2-30.6 0-16.761 5.509-29.893 23.329-29.893 15.825 0 22.389 11.137 22.389 25.087v9.5h-35.87zm0-7.736h26.375v-2.112c0-10.786-3.4-17.349-13.012-17.349-10.899 0-13.244 7.853-13.362 19.46zm63.768 33.643c-5.861 0-13.364-1.29-18.4-3.871l1.875-7.734a41.272 41.272 0 0016.061 3.635c7.734 0 11.84-2.111 11.84-8.676 0-6.215-4.22-8.087-12.075-9.965-12.777-3.045-17.582-7.5-17.582-17.465 0-10.9 5.978-16.412 19.574-16.412 5.626 0 11.607 1.056 15.708 2.928l-1.641 7.857a39.787 39.787 0 00-13.832-2.815c-7.386 0-10.2 1.993-10.2 7.855 0 6.1 2.814 7.268 11.136 9.5 11.37 3.048 18.521 6.681 18.521 17.82-.002 12.181-8.91 17.339-20.984 17.339zm62.949-1.76a43.723 43.723 0 01-11.954 1.756c-9.964 0-14.184-5.512-14.184-14.538v-36.8h-10.081v-7.975h10.081v-14.187l9.846-1.4v15.588h16.528l-.82 7.975h-15.708v36.337c0 5.39 1.29 7.034 6.681 7.034a43.2 43.2 0 008.792-1.177l.82 7.387zm32.586 1.76c-16.881 0-24.5-12.659-24.5-30.244s7.62-30.245 24.5-30.245 24.5 12.659 24.5 30.245-7.619 30.24-24.499 30.24zm0-52.52c-12.191 0-14.655 9.964-14.655 22.275s2.464 22.274 14.655 22.274 14.653-9.967 14.653-22.274-2.461-22.276-14.652-22.276z"/><circle data-name="Ellipse 154" cx="6.674" cy="6.674" r="6.674" transform="rotate(-45 1017.63 -1703.906)" fill="#5d88d6"/><circle data-name="Ellipse 155" cx="7.415" cy="7.415" r="7.415" transform="rotate(-45 1048.426 -1715.615)" fill="#5d88d6"/><circle data-name="Ellipse 156" cx="8.155" cy="8.155" r="8.155" transform="rotate(-45 1079.227 -1727.321)" fill="#5d88d6"/><circle data-name="Ellipse 157" cx="8.896" cy="8.896" r="8.896" transform="rotate(-45 1109.991 -1739.02)" fill="#5d88d6"/><circle data-name="Ellipse 158" cx="5.934" cy="5.934" r="5.934" transform="rotate(-45 999.815 -1660.898)" fill="#32dbfc"/><circle data-name="Ellipse 159" cx="6.674" cy="6.674" r="6.674" transform="rotate(-45 1030.611 -1672.607)" fill="#32dbfc"/><circle data-name="Ellipse 160" cx="7.415" cy="7.415" r="7.415" transform="rotate(-45 1061.38 -1684.304)" fill="#32dbfc"/><circle data-name="Ellipse 161" cx="8.155" cy="8.155" r="8.155" transform="rotate(-45 1092.161 -1696.009)" fill="#32dbfc"/><circle data-name="Ellipse 162" cx="8.896" cy="8.896" r="8.896" transform="rotate(-45 1122.976 -1707.717)" fill="#32dbfc"/><circle data-name="Ellipse 163" cx="5.193" cy="5.193" r="5.193" transform="rotate(-45 982.035 -1617.905)"/><circle data-name="Ellipse 164" cx="5.934" cy="5.934" r="5.934" transform="rotate(-45 1012.783 -1629.595)"/><circle data-name="Ellipse 165" cx="6.674" cy="6.674" r="6.674" transform="rotate(-45 1043.598 -1641.308)"/><circle data-name="Ellipse 166" cx="7.415" cy="7.415" r="7.415" transform="rotate(-45 1074.378 -1653.01)"/><circle data-name="Ellipse 167" cx="8.155" cy="8.155" r="8.155" transform="rotate(-45 1105.164 -1664.71)"/><circle data-name="Ellipse 168" cx="8.896" cy="8.896" r="8.896" transform="rotate(-45 1135.91 -1676.41)"/><circle data-name="Ellipse 169" cx="5.934" cy="5.934" r="5.934" transform="rotate(-45 1088.355 -1624.227)" fill="#5d88d6"/><circle data-name="Ellipse 170" cx="5.934" cy="5.934" transform="translate(1451.396 306.262)" fill="#5d88d6" r="5.934"/><circle data-name="Ellipse 171" cx="5.934" cy="5.934" transform="translate(1433.064 324.612)" fill="#5d88d6" r="5.934"/><circle data-name="Ellipse 172" cx="5.934" cy="5.934" transform="translate(1469.734 324.602)" fill="#5d88d6" r="5.934"/><circle data-name="Ellipse 173" cx="5.934" cy="5.934" r="5.934" transform="rotate(-45 1150.986 -1650.161)" fill="#5d88d6"/><circle data-name="Ellipse 174" cx="5.934" cy="5.934" r="5.934" transform="rotate(-45 1119.657 -1637.194)" fill="#5d88d6"/></g></svg> \ No newline at end of file diff --git a/sphinx/src/changelog.rst b/sphinx/src/changelog.rst index 4686a78..c1c5420 100644 --- a/sphinx/src/changelog.rst +++ b/sphinx/src/changelog.rst @@ -4,24 +4,42 @@ Changelog ************************ -Latest Changes since |JSQLPARSER_VERSION| +Latest Changes since |PRESTO_SQL_PARSER_VERSION| ============================================================= - * **build: Gradle Build and Rail Road Diagrams** + * **build: restore Java 8 compatibility** + + Andreas Reichel, 2023-01-04 + * **build: restore Java 8 compatibility** + + Andreas Reichel, 2023-01-04 + * **build: restore Java 8 compatibility** + + Andreas Reichel, 2023-01-04 + * **doc: fix pages** Andreas Reichel, 2023-01-03 - * **test: Add many more Real Life SQL statements** + * **merge** - Andreas Reichel, 2022-12-27 - * **style: Tune the Eclipse Formatter Configuration** + Andreas Reichel, 2023-01-03 + * **Squashed commit of the following:** - Andreas Reichel, 2022-12-27 + Andreas Reichel, 2022-12-26 * **doc: Update the readme** Andreas Reichel, 2022-12-26 * **fix: Try using native GIT** + Andreas Reichel, 2022-12-26 + * **fix: Try using native GIT** + + Andreas Reichel, 2022-12-26 + * **fix: Gradle Wrapper is not needed** + + Andreas Reichel, 2022-12-26 + * **fix: Gradle Wrapper is needed** + Andreas Reichel, 2022-12-26 * **fix: Git Branch is MAIN** diff --git a/sphinx/src/conf.py b/sphinx/src/conf.py index ebc7900..efe53fb 100644 --- a/sphinx/src/conf.py +++ b/sphinx/src/conf.py @@ -6,7 +6,7 @@ # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information -project = 'presto-sql' +project = 'Presto SQL Parser' copyright = '2022, Andreas Reichel' author = 'Andreas Reichel' release = '0.2' @@ -30,4 +30,5 @@ html_theme = 'alabaster' html_static_path = ['_static'] +html_logo = '_static/logo-presto-color.svg' diff --git a/sphinx/src/contribution.rst b/sphinx/src/contribution.rst index e0b334f..3696598 100644 --- a/sphinx/src/contribution.rst +++ b/sphinx/src/contribution.rst @@ -8,14 +8,14 @@ Error Reports Please report any issue to the `GitHub Issue Tracker <https://github.com/prestodb/sql/issues>`_: 1) Provide the **Sample SQL** (shortened and simplified, properly formatted) - 2) State the exact **Version of the Java SQL:2016 Parser** + 2) State the exact **Version of the Presto SQL:2016 Parser** 3) State the **RDBMS** in use and point on the applicable Grammar specification 4) Please write in **English** and post **Plain Text only** (avoiding screen shots or bitmap pictures). Feature Requests ============================== -**Java SQL:2016 Parser** is a demand-driven software library, where many contributors have shared solutions for their own needs. Requests for new features have a good chance to get implemented when +**Presto SQL:2016 Parser** is a demand-driven software library, where many contributors have shared solutions for their own needs. Requests for new features have a good chance to get implemented when 1) the request is about a commonly used feature for one of the major RDBMS 2) or the request is backed by a sponsor or a bounty, which may attract developers to spend their time on it. @@ -23,7 +23,7 @@ Feature Requests Implementing new Features ============================== -The team around **Java SQL:2016 Parser** warmly welcomes Code Contributions and Pull Requests. Please follow the guidance below and do not hesitate to ask us for assistance. +The team around **Presto SQL:2016 Parser** warmly welcomes Code Contributions and Pull Requests. Please follow the guidance below and do not hesitate to ask us for assistance. Create a new Git Branch ------------------------------ @@ -63,7 +63,7 @@ The **Java SQL:2016 Parser** is generated by ``JavaCC`` based on the provided Gr Manage Reserved Keywords ------------------------------ -Since **Java SQL:2016 Parser** is built by JavaCC from a Token based Grammar, ``Reserved Keywords`` need a special treatment. All Tokens of the Grammar would become ``Reserved Keywords`` -- unless explicitly allowed and white-listened. +Since **Presto SQL:2016 Parser** is built by JavaCC from a Token based Grammar, ``Reserved Keywords`` need a special treatment. All Tokens of the Grammar would become ``Reserved Keywords`` -- unless explicitly allowed and white-listened. .. code-block:: sql :caption: White-list Keyword example diff --git a/sphinx/src/index.rst b/sphinx/src/index.rst index ab95984..08caa30 100644 --- a/sphinx/src/index.rst +++ b/sphinx/src/index.rst @@ -1,6 +1,6 @@ -############################ -Java SQL:2016 Parser Library -############################ +############################## +Presto SQL:2016 Parser Library +############################## .. toctree:: :maxdepth: 2 @@ -21,17 +21,17 @@ Java SQL:2016 Parser Library .. image:: https://www.javadoc.io/badge/com.facebook.presto/presto-coresql.svg :alt: Java Docs -**Java SQL:2016 Parser** is a SQL statement parser built from JavaCC. It translates SQLs in a traversable hierarchy of Java classes. +**Presto SQL:2016 Parser** is a SQL statement parser built from JavaCC. It translates SQLs in a traversable hierarchy of Java classes. -Latest stable release: |JSQLPARSER_STABLE_VERSION_LINK| +Latest stable release: |PRESTO_SQL_PARSER_STABLE_VERSION_LINK| -Development version: |JSQLPARSER_SNAPSHOT_VERSION_LINK| +Development version: |PRESTO_SQL_PARSER_SNAPSHOT_VERSION_LINK| ****************************** SQL Dialects ****************************** -**JSqlParser** is SQL:2016 compliant and provides support various RDBMS such as: +**Presto SQL:2016 Parser** is SQL:2016 compliant and provides support various RDBMS such as: * Oracle Database * MS SqlServer @@ -52,7 +52,8 @@ Features * Nested Expressions (e.g. Sub-Selects) * ``WITH`` clauses - * De-Parser for a Statement AST Node, which writes a SQL from Java Objects + * Un-Parser for a Statement AST Node + * Can generate both Java and C++ Parser/Unparser diff --git a/sphinx/src/keywords.rst b/sphinx/src/keywords.rst index b785b4b..15d3913 100644 --- a/sphinx/src/keywords.rst +++ b/sphinx/src/keywords.rst @@ -2,10 +2,10 @@ Restricted Keywords *********************** -The following Keywords are **restricted** in Version |JSQLPARSER_VERSION| and must not be used for **Naming Objects**: +The following Keywords are **restricted** in Version |PRESTO_SQL_PARSER_VERSION| and must not be used for **Naming Objects**: +----------------------+-------------+-----------+ -| **Keyword** | JSQL Parser | SQL:2016 | +| **Keyword** | Parser | SQL:2016 | +----------------------+-------------+-----------+ | ABSENT | Yes | Yes | +----------------------+-------------+-----------+ diff --git a/sphinx/src/usage.rst b/sphinx/src/usage.rst index f2b9ffa..7171a6d 100644 --- a/sphinx/src/usage.rst +++ b/sphinx/src/usage.rst @@ -41,7 +41,7 @@ Maven Artifacts <dependency> <groupId>com.facebook.presto</groupId> <artifactId>presto-coresql</artifactId> - <version>|JSQLPARSER_VERSION|</version> + <version>|PRESTO_SQL_PARSER_VERSION|</version> </dependency> .. tab:: Development Snapshot @@ -61,7 +61,7 @@ Maven Artifacts <dependency> <groupId>com.facebook.presto</groupId> <artifactId>presto-coresql</artifactId> - <version>|JSQLPARSER_SNAPSHOT_VERSION|</version> + <version>|PRESTO_SQL_PARSER_SNAPSHOT_VERSION|</version> </dependency> From 4ff85329322cf3c7063d0aa31b6ebaae5d8de30e Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Wed, 4 Jan 2023 18:10:06 +0700 Subject: [PATCH 12/16] doc: fix 2 more name references Signed-off-by: Andreas Reichel <andreas@manticore-projects.com> --- sphinx/src/contribution.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sphinx/src/contribution.rst b/sphinx/src/contribution.rst index 3696598..2cee697 100644 --- a/sphinx/src/contribution.rst +++ b/sphinx/src/contribution.rst @@ -28,7 +28,7 @@ The team around **Presto SQL:2016 Parser** warmly welcomes Code Contributions an Create a new Git Branch ------------------------------ -When starting afresh, clone the **Java SQL:2016 Parser** from the `GitHub` repository: +When starting afresh, clone the **Presto SQL:2016 Parser** from the `GitHub` repository: .. code-block:: Bash @@ -47,7 +47,7 @@ When having a local repository already, then pull/merge from the `GitHub` reposi Amend the Code ------------------------------ -The **Java SQL:2016 Parser** is generated by ``JavaCC`` based on the provided Grammar. The Grammar defines how a SQL Text is read and translated into Java Objects. Thus any contribution will depend on the following steps: +The **Presto SQL:2016 Parser** is generated by ``JavaCC`` based on the provided Grammar. The Grammar defines how a SQL Text is read and translated into Java Objects. Thus any contribution will depend on the following steps: 1) Edit the ``JavaCC`` Grammar at ``sql/parser/grammar`` 2) Add or edit the Java Classes at ``sql/parser/src/main/java/com/facebook/coresql/parser/`` to facilitate this Grammar. @@ -70,7 +70,7 @@ Since **Presto SQL:2016 Parser** is built by JavaCC from a Token based Grammar, -- <OVERLAPS:"OVERLAPS"> is a Token, recently defined in the Grammar -- Although it is not restricted by the SQL Standard and could be used for Column, Table and Alias names - -- Explicitly white-listing OVERLAPS by adding it to the RelObjectNameWithoutValue() Production will allow for parsing the following statement + -- Explicitly white-listing OVERLAPS by adding it to the NonReservedKeywords() Production will allow for parsing the following statement SELECT Overlaps( overlaps ) AS overlaps FROM overlaps.overlaps overlaps From 1cee025c56b6caecd938343c12a9a041d91e45c9 Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Wed, 4 Jan 2023 22:05:47 +0700 Subject: [PATCH 13/16] doc: US compliant wording Signed-off-by: Andreas Reichel <andreas@manticore-projects.com> --- sphinx/src/contribution.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sphinx/src/contribution.rst b/sphinx/src/contribution.rst index 2cee697..2be3d63 100644 --- a/sphinx/src/contribution.rst +++ b/sphinx/src/contribution.rst @@ -63,14 +63,14 @@ The **Presto SQL:2016 Parser** is generated by ``JavaCC`` based on the provided Manage Reserved Keywords ------------------------------ -Since **Presto SQL:2016 Parser** is built by JavaCC from a Token based Grammar, ``Reserved Keywords`` need a special treatment. All Tokens of the Grammar would become ``Reserved Keywords`` -- unless explicitly allowed and white-listened. +Since **Presto SQL:2016 Parser** is built by JavaCC from a Token based Grammar, ``Reserved Keywords`` need a special treatment. All Tokens of the Grammar would become ``Reserved Keywords`` -- unless explicitly allowed. .. code-block:: sql - :caption: White-list Keyword example + :caption: Allow Keyword example -- <OVERLAPS:"OVERLAPS"> is a Token, recently defined in the Grammar -- Although it is not restricted by the SQL Standard and could be used for Column, Table and Alias names - -- Explicitly white-listing OVERLAPS by adding it to the NonReservedKeywords() Production will allow for parsing the following statement + -- Explicitly allowing OVERLAPS by adding it to the NonReservedKeywords() Production will allow for parsing the following statement SELECT Overlaps( overlaps ) AS overlaps FROM overlaps.overlaps overlaps @@ -78,7 +78,7 @@ Since **Presto SQL:2016 Parser** is built by JavaCC from a Token based Grammar, AND (CURRENT_TIME, INTERVAL '1' HOUR) OVERLAPS (CURRENT_TIME, INTERVAL -'1' HOUR) ; -So we will need to define and white-list any Keywords which may be allowed for Object Names (such as `Schema`, `Table`, `Column`, `Function`, `Alias`). This White-List must be updated whenever the Tokens of the Grammar change (e. |_| g. when adding a new Token or Production). +So we will need to define and allow any Keywords which may be allowed for Object Names (such as `Schema`, `Table`, `Column`, `Function`, `Alias`). This White-List must be updated whenever the Tokens of the Grammar change (e. |_| g. when adding a new Token or Production). Otherwise any new Token or Production will become a ``Reserved Keyword`` automatically and can't be used for Object Names without quoting. From 09f73d06c12c446a910f88169f8b95d8794e3105 Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Sat, 7 Jan 2023 17:38:11 +0700 Subject: [PATCH 14/16] doc: better RR Diagram integration Signed-off-by: Andreas Reichel <andreas@manticore-projects.com> --- .github/workflows/sphinx.yml | 6 +- build.gradle | 11 +- .../coresql/parser/StandardFileTestIT.java | 47 +- sphinx/src/_static/pygments.css | 74 + sphinx/src/_static/svg.css | 34 + sphinx/src/_static/tabs.css | 89 + sphinx/src/changelog.rst | 30 + sphinx/src/conf.py | 4 +- sphinx/src/syntax.rst | 30084 +++++++++++++++- sphinx/xhtml2rst.xsl | 95 + 10 files changed, 30419 insertions(+), 55 deletions(-) create mode 100644 sphinx/src/_static/pygments.css create mode 100644 sphinx/src/_static/svg.css create mode 100644 sphinx/src/_static/tabs.css create mode 100644 sphinx/xhtml2rst.xsl diff --git a/.github/workflows/sphinx.yml b/.github/workflows/sphinx.yml index 33b9524..4906b2c 100644 --- a/.github/workflows/sphinx.yml +++ b/.github/workflows/sphinx.yml @@ -5,9 +5,11 @@ jobs: docs: runs-on: ubuntu-latest steps: - - uses: actions/setup-python@v2 + - uses: actions/setup-python@v4 + - name: Install XSLT Processor + run: sudo apt-get install xsltproc sphinx-common - name: Install dependencies - run: pip install sphinx sphinx_rtd_theme myst_parser sphinx-prompt sphinx_substitution_extensions sphinx_issues sphinx_tabs pygments + run: pip install sphinx_rtd_theme sphinx-book-theme myst_parser sphinx-prompt sphinx_substitution_extensions sphinx_issues sphinx_tabs pygments - name: Checkout project sources uses: actions/checkout@v2 with: diff --git a/build.gradle b/build.gradle index 645bc79..fc883ae 100644 --- a/build.gradle +++ b/build.gradle @@ -122,10 +122,15 @@ task renderRR() { "-width:800", //"-png", //"-out:target/rr/PRESTO_SQL_PARSERCC.zip", - "-out:$buildDir/site/sphinx/_static/syntax.xhtml", + "-out:$buildDir/rr/syntax.xhtml", "$buildDir/rr/syntax.ebnf" ] } + + //@todo: a Java based solution may be more appropriate here + exec { + commandLine "sh", "-c", "xsltproc sphinx/xhtml2rst.xsl $buildDir/rr/syntax.xhtml > sphinx/src/syntax.rst" + } } } @@ -165,7 +170,7 @@ Version {{name}} } task sphinx(type: Exec) { - dependsOn(gitChangelogTask) + dependsOn(gitChangelogTask, renderRR) String PROLOG = """ .. |_| unicode:: U+00A0 @@ -203,7 +208,5 @@ task sphinx(type: Exec) { ext.output = { return standardOutput.toString() } - - finalizedBy renderRR } diff --git a/parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java b/parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java index d83da8e..50afc0f 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java +++ b/parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java @@ -35,55 +35,14 @@ public static Stream<Map.Entry<SQLKeyEntry, String>> getSqlMap() { LinkedHashMap<SQLKeyEntry, String> sqlMap = new LinkedHashMap<>(); for (File file : new File(TEST_FOLDER_STR).listFiles(FILENAME_FILTER)) { -<<<<<<<< HEAD:parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java - extractIntoMap(sqlMap, file); - } - return sqlMap.entrySet().stream(); - } - - protected static void extractIntoMap(LinkedHashMap<SQLKeyEntry, String> sqlMap, File file) - { - try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( - fileReader)) { - boolean start = false; - boolean end; - StringBuilder stringBuilder = new StringBuilder(); - String line; - String k = ""; - boolean afterHeader = false; - while ((line = bufferedReader.readLine()) != null) { - if (!afterHeader && line.startsWith("--")) { - continue; - } - else { - afterHeader = true; - } - if (!start && line.startsWith("--") && !line.startsWith("-- @")) { - k = line.substring(3).trim().toUpperCase(); - } - start = start || (!line.startsWith("--") || line.startsWith("-- @")) && line.trim().length() > 0; - end = start && line.trim().endsWith(";"); - if (start) { - stringBuilder.append(line).append("\n"); - } - if (end) { - sqlMap.put(new SQLKeyEntry(file, k), stringBuilder.toString().trim()); - stringBuilder.setLength(0); - start = false; - } -======== try (FileReader fileReader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader( fileReader)) { extractIntoMap(sqlMap, file, bufferedReader); ->>>>>>>> main:parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java + } + catch (IOException ex) { + LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); } } -<<<<<<<< HEAD:parser/src/test/java/com/manticore/jsqlformatter/SimpleFileTest.java - catch (IOException ex) { - LOGGER.log(Level.SEVERE, "Failed to read " + file.getAbsolutePath(), ex); - } -======== return sqlMap.entrySet().stream(); ->>>>>>>> main:parser/src/test/java/com/facebook/coresql/parser/StandardFileTestIT.java } } diff --git a/sphinx/src/_static/pygments.css b/sphinx/src/_static/pygments.css new file mode 100644 index 0000000..8a76dc5 --- /dev/null +++ b/sphinx/src/_static/pygments.css @@ -0,0 +1,74 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #fff; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #208050 } /* Literal.Number.Bin */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #06287e } /* Name.Function.Magic */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/sphinx/src/_static/svg.css b/sphinx/src/_static/svg.css new file mode 100644 index 0000000..919a09e --- /dev/null +++ b/sphinx/src/_static/svg.css @@ -0,0 +1,34 @@ +div .ebnf +{ + display: block; + padding: 2pt; + margin-bottom: 22pt; + font:10px 'Roboto-Mono',monospace; +} + +@namespace "http://www.w3.org/2000/svg"; + .line {fill: none; stroke: #001133; stroke-width: 1;} + .bold-line {stroke: #000714; shape-rendering: crispEdges; stroke-width: 2;} + .thin-line {stroke: #000A1F; shape-rendering: crispEdges;} + .filled {fill: #001133; stroke: none;} + text.terminal {font-family: Roboto, Sans-serif; + font-size: 10px; + fill: #000714; + font-weight: bold; + } + text.nonterminal {font-family: Roboto, Sans-serif; + font-size: 10px; + fill: #00091A; + font-weight: normal; + } + text.regexp {font-family: Roboto, Sans-serif; + font-size: 10px; + fill: #000A1F; + font-weight: normal; + } + rect, circle, polygon {fill: #001133; stroke: #001133;} + rect.terminal {fill: #4D88FF; stroke: #001133; stroke-width: 1;} + rect.nonterminal {fill: #9EBFFF; stroke: #001133; stroke-width: 1;} + rect.text {fill: none; stroke: none;} + polygon.regexp {fill: #C7DAFF; stroke: #001133; stroke-width: 1;} + diff --git a/sphinx/src/_static/tabs.css b/sphinx/src/_static/tabs.css new file mode 100644 index 0000000..3710248 --- /dev/null +++ b/sphinx/src/_static/tabs.css @@ -0,0 +1,89 @@ +.sphinx-tabs { + margin-bottom: 1rem; +} + +[role="tablist"] { + border-bottom: 1px solid rgb(3, 1, 70); +} + +.sphinx-tabs-tab { + position: relative; + font-family: Roboto,sans-serif; + color: rgb(3, 1, 70); + line-height: 24px; + margin: 0; + font-size: 16px; + font-weight: 400; + background-color: rgba(255, 255, 255, 0); + border-radius: 5px 5px 0 0; + border: 0; + padding: 1rem 1.5rem; + margin-bottom: 0; +} + +.sphinx-tabs-tab[aria-selected="true"] { + font-weight: 700; + border: 1px solid rgb(3, 1, 70); + border-bottom: 1px solid white; + margin: -1px; + background-color: white; +} + +.sphinx-tabs-tab:focus { + z-index: 1; + outline-offset: 1px; +} + +.sphinx-tabs-panel { + position: relative; + padding: 1rem; + border: 1px solid rgb(3, 1, 70); + margin: 0px -1px -1px -1px; + border-radius: 0 0 5px 5px; + border-top: 0; + background: white; +} + +.sphinx-tabs-panel.code-tab { + padding: 0.4rem; +} + +.sphinx-tab img { + margin-bottom: 24 px; +} + +/* Dark theme preference styling */ + +@media (prefers-color-scheme: dark) { + body[data-theme="auto"] .sphinx-tabs-panel { + color: white; + background-color: rgb(3, 1, 70); + } + + body[data-theme="auto"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); + } + + body[data-theme="auto"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 1px solid rgb(3, 1, 70); + background-color: rgb(3, 1, 70); + } +} + +/* Explicit dark theme styling */ + +body[data-theme="dark"] .sphinx-tabs-panel { + color: white; + background-color: rgb(3, 1, 70); +} + +body[data-theme="dark"] .sphinx-tabs-tab { + color: white; + background-color: rgba(255, 255, 255, 0.05); +} + +body[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] { + border-bottom: 2px solid rgb(3, 1, 70); + background-color: rgb(3, 1, 70); +} diff --git a/sphinx/src/changelog.rst b/sphinx/src/changelog.rst index c1c5420..96537f7 100644 --- a/sphinx/src/changelog.rst +++ b/sphinx/src/changelog.rst @@ -8,6 +8,36 @@ Latest Changes since |PRESTO_SQL_PARSER_VERSION| ============================================================= + * **chore: remove name reference** + + Andreas Reichel, 2023-01-06 + * **Update sphinx.yml** + + manticore-projects, 2023-01-06 + * **Update sphinx.yml** + + manticore-projects, 2023-01-06 + * **Update sphinx.yml** + + manticore-projects, 2023-01-06 + * **Update sphinx.yml** + + manticore-projects, 2023-01-06 + * **Update sphinx.yml** + + manticore-projects, 2023-01-06 + * **build: fix Github Action** + + Andreas Reichel, 2023-01-06 + * **doc: better Railroad diagrams** + + Andreas Reichel, 2023-01-06 + * **doc: US compliant wording** + + Andreas Reichel, 2023-01-06 + * **doc: fix links and names** + + Andreas Reichel, 2023-01-04 * **build: restore Java 8 compatibility** Andreas Reichel, 2023-01-04 diff --git a/sphinx/src/conf.py b/sphinx/src/conf.py index efe53fb..3c37daf 100644 --- a/sphinx/src/conf.py +++ b/sphinx/src/conf.py @@ -28,7 +28,9 @@ # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = 'alabaster' +html_theme = 'sphinx_book_theme' +html_theme_path = ["_themes"] html_static_path = ['_static'] html_logo = '_static/logo-presto-color.svg' +html_css_files = ["svg.css"] diff --git a/sphinx/src/syntax.rst b/sphinx/src/syntax.rst index cca03ad..514aef1 100644 --- a/sphinx/src/syntax.rst +++ b/sphinx/src/syntax.rst @@ -1,11 +1,30087 @@ -*********************** + +******************** Supported SQL Syntax -*********************** +******************** The EBNF and Railroad Diagrams for the supported SQL Syntax. -Kindly provided by Gunther Rademacher. + +====================================================================================================================== + CompilationUnit +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" height="42"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#direct-sql-statement" xlink:title="direct_SQL_statement" shape="rect"> + <rect x="43" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">direct_SQL_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#eof" xlink:title="EOF" shape="rect"> + <rect x="183" y="22" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="187" y="34">EOF</text></a><path class="line" d="m17 31 h2 m20 0 h10 m0 0 h110 m-140 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m120 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-120 0 h4 m112 0 h4 m20 21 h4 m28 0 h4 m3 0 h-3"/> + <polygon points="225 31 233 27 233 35"/> + <polygon points="225 31 217 27 217 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#compilationunit" title="CompilationUnit" shape="rect">CompilationUnit</a></div> + <div>         ::= <a href="#direct-sql-statement" title="direct_SQL_statement" shape="rect">direct_SQL_statement</a>* <a href="#eof" title="EOF" shape="rect">EOF</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + non_reserved_word +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="295" height="9625"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">A</text> + <rect x="43" y="29" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">ABSOLUTE</text> + <rect x="43" y="57" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">ACTION</text> + <rect x="43" y="85" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">ADA</text> + <rect x="43" y="113" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">ADD</text> + <rect x="43" y="141" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">ADMIN</text> + <rect x="43" y="169" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">AFTER</text> + <rect x="43" y="197" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">ALWAYS</text> + <rect x="43" y="225" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">ASC</text> + <rect x="43" y="253" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">ASSERTION</text> + <rect x="43" y="281" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">ASSIGNMENT</text> + <rect x="43" y="309" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">ATTRIBUTE</text> + <rect x="43" y="337" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="349">ATTRIBUTES</text> + <rect x="43" y="365" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="377">BEFORE</text> + <rect x="43" y="393" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="405">BERNOULLI</text> + <rect x="43" y="421" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="433">BREADTH</text> + <rect x="43" y="449" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="461">C</text> + <rect x="43" y="477" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="489">CASCADE</text> + <rect x="43" y="505" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="517">CATALOG</text> + <rect x="43" y="533" width="84" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="545">CATALOG_NAME</text> + <rect x="43" y="561" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="573">CHAIN</text> + <rect x="43" y="589" width="134" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="601">CHARACTER_SET_CATALOG</text> + <rect x="43" y="617" width="118" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="629">CHARACTER_SET_NAME</text> + <rect x="43" y="645" width="130" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="657">CHARACTER_SET_SCHEMA</text> + <rect x="43" y="673" width="92" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="685">CHARACTERISTICS</text> + <rect x="43" y="701" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="713">CHARACTERS</text> + <rect x="43" y="729" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="741">CLASS_ORIGIN</text> + <rect x="43" y="757" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="769">COBOL</text> + <rect x="43" y="785" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="797">COLLATION</text> + <rect x="43" y="813" width="112" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="825">COLLATION_CATALOG</text> + <rect x="43" y="841" width="94" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="853">COLLATION_NAME</text> + <rect x="43" y="869" width="106" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="881">COLLATION_SCHEMA</text> + <rect x="43" y="897" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="909">COLUMN_NAME</text> + <rect x="43" y="925" width="114" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="937">COMMAND_FUNCTION</text> + <rect x="43" y="953" width="146" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="965">COMMAND_FUNCTION_CODE</text> + <rect x="43" y="981" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="993">COMMITTED</text> + <rect x="43" y="1009" width="108" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1021">CONDITION_NUMBER</text> + <rect x="43" y="1037" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1049">CONNECTION</text> + <rect x="43" y="1065" width="104" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1077">CONNECTION_NAME</text> + <rect x="43" y="1093" width="118" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1105">CONSTRAINT_CATALOG</text> + <rect x="43" y="1121" width="102" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1133">CONSTRAINT_NAME</text> + <rect x="43" y="1149" width="114" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1161">CONSTRAINT_SCHEMA</text> + <rect x="43" y="1177" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1189">CONSTRAINTS</text> + <rect x="43" y="1205" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1217">CONSTRUCTOR</text> + <rect x="43" y="1233" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1245">CONTAINS</text> + <rect x="43" y="1261" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1273">CONTINUE</text> + <rect x="43" y="1289" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1301">CURSOR_NAME</text> + <rect x="43" y="1317" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1329">DATA</text> + <rect x="43" y="1345" width="136" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1357">DATETIME_INTERVAL_CODE</text> + <rect x="43" y="1373" width="162" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1385">DATETIME_INTERVAL_PRECISION</text> + <rect x="43" y="1401" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1413">DEFAULTS</text> + <rect x="43" y="1429" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1441">DEFERRABLE</text> + <rect x="43" y="1457" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1469">DEFERRED</text> + <rect x="43" y="1485" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1497">DEFINED</text> + <rect x="43" y="1513" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1525">DEFINER</text> + <rect x="43" y="1541" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1553">DEGREE</text> + <rect x="43" y="1569" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1581">DEPTH</text> + <rect x="43" y="1597" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1609">DERIVED</text> + <rect x="43" y="1625" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1637">DESC</text> + <rect x="43" y="1653" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1665">DESCRIPTOR</text> + <rect x="43" y="1681" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1693">DIAGNOSTICS</text> + <rect x="43" y="1709" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1721">DISPATCH</text> + <rect x="43" y="1737" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1749">DOMAIN</text> + <rect x="43" y="1765" width="106" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1777">DYNAMIC_FUNCTION</text> + <rect x="43" y="1793" width="138" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1805">DYNAMIC_FUNCTION_CODE</text> + <rect x="43" y="1821" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1833">ENFORCED</text> + <rect x="43" y="1849" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1861">EQUALS</text> + <rect x="43" y="1877" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1889">EXCLUDE</text> + <rect x="43" y="1905" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1917">EXCLUDING</text> + <rect x="43" y="1933" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1945">EXPRESSION</text> + <rect x="43" y="1961" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1973">FINAL</text> + <rect x="43" y="1989" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2001">FIRST</text> + <rect x="43" y="2017" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2029">FLAG</text> + <rect x="43" y="2045" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2057">FOLLOWING</text> + <rect x="43" y="2073" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2085">FORTRAN</text> + <rect x="43" y="2101" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2113">FOUND</text> + <rect x="43" y="2129" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2141">G</text> + <rect x="43" y="2157" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2169">GENERAL</text> + <rect x="43" y="2185" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2197">GENERATED</text> + <rect x="43" y="2213" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2225">GO</text> + <rect x="43" y="2241" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2253">GOTO</text> + <rect x="43" y="2269" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2281">GRANTED</text> + <rect x="43" y="2297" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2309">HIERARCHY</text> + <rect x="43" y="2325" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2337">IF</text> + <rect x="43" y="2353" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2365">IGNORE</text> + <rect x="43" y="2381" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2393">IMMEDIATE</text> + <rect x="43" y="2409" width="92" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2421">IMPLEMENTATION</text> + <rect x="43" y="2437" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2449">INCLUDING</text> + <rect x="43" y="2465" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2477">INCREMENT</text> + <rect x="43" y="2493" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2505">INITIALLY</text> + <rect x="43" y="2521" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2533">INPUT</text> + <rect x="43" y="2549" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2561">INSTANCE</text> + <rect x="43" y="2577" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2589">INSTANTIABLE</text> + <rect x="43" y="2605" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2617">INSTEAD</text> + <rect x="43" y="2633" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2645">INVOKER</text> + <rect x="43" y="2661" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2673">ISOLATION</text> + <rect x="43" y="2689" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2701">K</text> + <rect x="43" y="2717" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2729">KEY</text> + <rect x="43" y="2745" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2757">KEY_MEMBER</text> + <rect x="43" y="2773" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2785">KEY_TYPE</text> + <rect x="43" y="2801" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2813">LAST</text> + <rect x="43" y="2829" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2841">LENGTH</text> + <rect x="43" y="2857" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2869">LEVEL</text> + <rect x="43" y="2885" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2897">LOCATOR</text> + <rect x="43" y="2913" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2925">M</text> + <rect x="43" y="2941" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2953">MAP</text> + <rect x="43" y="2969" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2981">MATCHED</text> + <rect x="43" y="2997" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3009">MAXVALUE</text> + <rect x="43" y="3025" width="94" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3037">MESSAGE_LENGTH</text> + <rect x="43" y="3053" width="130" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3065">MESSAGE_OCTET_LENGTH</text> + <rect x="43" y="3081" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3093">MESSAGE_TEXT</text> + <rect x="43" y="3109" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3121">MINVALUE</text> + <rect x="43" y="3137" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3149">MORE</text> + <rect x="43" y="3165" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3177">MUMPS</text> + <rect x="43" y="3193" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3205">NAMES</text> + <rect x="43" y="3221" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3233">NESTING</text> + <rect x="43" y="3249" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3261">NEXT</text> + <rect x="43" y="3277" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3289">NFC</text> + <rect x="43" y="3305" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3317">NFD</text> + <rect x="43" y="3333" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3345">NFKC</text> + <rect x="43" y="3361" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3373">NFKD</text> + <rect x="43" y="3389" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3401">NORMALIZED</text> + <rect x="43" y="3417" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3429">NULLABLE</text> + <rect x="43" y="3445" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3457">NULLS</text> + <rect x="43" y="3473" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3485">NUMBER</text> + <rect x="43" y="3501" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3513">OBJECT</text> + <rect x="43" y="3529" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3541">OCTETS</text> + <rect x="43" y="3557" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3569">OPTION</text> + <rect x="43" y="3585" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3597">OPTIONS</text> + <rect x="43" y="3613" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3625">ORDERING</text> + <rect x="43" y="3641" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3653">ORDINALITY</text> + <rect x="43" y="3669" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3681">OTHERS</text> + <rect x="43" y="3697" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3709">OUTPUT</text> + <rect x="43" y="3725" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3737">OVERRIDING</text> + <rect x="43" y="3753" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3765">P</text> + <rect x="43" y="3781" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3793">PAD</text> + <rect x="43" y="3809" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3821">PARAMETER_MODE</text> + <rect x="43" y="3837" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3849">PARAMETER_NAME</text> + <rect x="43" y="3865" width="166" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3877">PARAMETER_ORDINAL_POSITION</text> + <rect x="43" y="3893" width="160" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3905">PARAMETER_SPECIFIC_CATALOG</text> + <rect x="43" y="3921" width="144" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3933">PARAMETER_SPECIFIC_NAME</text> + <rect x="43" y="3949" width="156" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3961">PARAMETER_SPECIFIC_SCHEMA</text> + <rect x="43" y="3977" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3989">PARTIAL</text> + <rect x="43" y="4005" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4017">PASCAL</text> + <rect x="43" y="4033" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4045">PATH</text> + <rect x="43" y="4061" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4073">PLACING</text> + <rect x="43" y="4089" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4101">PLI</text> + <rect x="43" y="4117" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4129">PRECEDING</text> + <rect x="43" y="4145" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4157">PRESERVE</text> + <rect x="43" y="4173" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4185">PRIOR</text> + <rect x="43" y="4201" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4213">PRIVILEGES</text> + <rect x="43" y="4229" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4241">PROPERTIES</text> + <rect x="43" y="4257" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4269">PUBLIC</text> + <rect x="43" y="4285" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4297">READ</text> + <rect x="43" y="4313" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4325">RELATIVE</text> + <rect x="43" y="4341" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4353">REPEATABLE</text> + <rect x="43" y="4369" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4381">RESPECT</text> + <rect x="43" y="4397" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4409">RESTART</text> + <rect x="43" y="4425" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4437">RESTRICT</text> + <rect x="43" y="4453" width="124" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4465">RETURNED_CARDINALITY</text> + <rect x="43" y="4481" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4493">RETURNED_LENGTH</text> + <rect x="43" y="4509" width="134" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4521">RETURNED_OCTET_LENGTH</text> + <rect x="43" y="4537" width="110" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4549">RETURNED_SQLSTATE</text> + <rect x="43" y="4565" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4577">ROLE</text> + <rect x="43" y="4593" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4605">ROUTINE</text> + <rect x="43" y="4621" width="100" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4633">ROUTINE_CATALOG</text> + <rect x="43" y="4649" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4661">ROUTINE_NAME</text> + <rect x="43" y="4677" width="94" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4689">ROUTINE_SCHEMA</text> + <rect x="43" y="4705" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4717">ROW_COUNT</text> + <rect x="43" y="4733" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4745">SCALE</text> + <rect x="43" y="4761" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4773">SCHEMA</text> + <rect x="43" y="4789" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4801">SCHEMA_NAME</text> + <rect x="43" y="4817" width="88" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4829">SCOPE_CATALOG</text> + <rect x="43" y="4845" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4857">SCOPE_NAME</text> + <rect x="43" y="4873" width="84" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4885">SCOPE_SCHEMA</text> + <rect x="43" y="4901" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4913">SECTION</text> + <rect x="43" y="4929" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4941">SECURITY</text> + <rect x="43" y="4957" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4969">SELF</text> + <rect x="43" y="4985" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4997">SEQUENCE</text> + <rect x="43" y="5013" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5025">SERIALIZABLE</text> + <rect x="43" y="5041" width="76" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5053">SERVER_NAME</text> + <rect x="43" y="5069" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5081">SESSION</text> + <rect x="43" y="5097" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5109">SETS</text> + <rect x="43" y="5125" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5137">SIMPLE</text> + <rect x="43" y="5153" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5165">SIZE</text> + <rect x="43" y="5181" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5193">SOURCE</text> + <rect x="43" y="5209" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5221">SPACE</text> + <rect x="43" y="5237" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5249">SPECIFIC_NAME</text> + <rect x="43" y="5265" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5277">STATE</text> + <rect x="43" y="5293" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5305">STATEMENT</text> + <rect x="43" y="5321" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5333">STRUCTURE</text> + <rect x="43" y="5349" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5361">STYLE</text> + <rect x="43" y="5377" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5389">SUBCLASS_ORIGIN</text> + <rect x="43" y="5405" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5417">T</text> + <rect x="43" y="5433" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5445">TABLE_NAME</text> + <rect x="43" y="5461" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5473">TEMPORARY</text> + <rect x="43" y="5489" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5501">TIES</text> + <rect x="43" y="5517" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5529">TOP_LEVEL_COUNT</text> + <rect x="43" y="5545" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5557">TRANSACTION</text> + <rect x="43" y="5573" width="112" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5585">TRANSACTION_ACTIVE</text> + <rect x="43" y="5601" width="144" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5613">TRANSACTIONS_COMMITTED</text> + <rect x="43" y="5629" width="154" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5641">TRANSACTIONS_ROLLED_BACK</text> + <rect x="43" y="5657" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5669">TRANSFORM</text> + <rect x="43" y="5685" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5697">TRANSFORMS</text> + <rect x="43" y="5713" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5725">TRIGGER_CATALOG</text> + <rect x="43" y="5741" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5753">TRIGGER_NAME</text> + <rect x="43" y="5769" width="92" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5781">TRIGGER_SCHEMA</text> + <rect x="43" y="5797" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5809">TRY_CAST</text> + <rect x="43" y="5825" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5837">TYPE</text> + <rect x="43" y="5853" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5865">UNBOUNDED</text> + <rect x="43" y="5881" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5893">UNCOMMITTED</text> + <rect x="43" y="5909" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5921">UNDER</text> + <rect x="43" y="5937" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5949">UNNAMED</text> + <rect x="43" y="5965" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5977">USAGE</text> + <rect x="43" y="5993" width="156" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6005">USER_DEFINED_TYPE_CATALOG</text> + <rect x="43" y="6021" width="138" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6033">USER_DEFINED_TYPE_CODE</text> + <rect x="43" y="6049" width="138" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6061">USER_DEFINED_TYPE_NAME</text> + <rect x="43" y="6077" width="150" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6089">USER_DEFINED_TYPE_SCHEMA</text> + <rect x="43" y="6105" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6117">VIEW</text> + <rect x="43" y="6133" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6145">WORK</text> + <rect x="43" y="6161" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6173">WRITE</text> + <rect x="43" y="6189" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6201">ZONE</text> + <rect x="43" y="6217" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6229">ABS</text> + <rect x="43" y="6245" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6257">ALL</text> + <rect x="43" y="6273" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6285">ARRAY_AGG</text> + <rect x="43" y="6301" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6313">AT</text> + <rect x="43" y="6329" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6341">AVG</text> + <rect x="43" y="6357" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6369">BLOB</text> + <rect x="43" y="6385" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6397">BOTH</text> + <rect x="43" y="6413" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6425">CARDINALITY</text> + <rect x="43" y="6441" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6453">CLOSE</text> + <rect x="43" y="6469" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6481">COLUMN</text> + <rect x="43" y="6497" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6509">CONDITION</text> + <rect x="43" y="6525" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6537">COUNT</text> + <rect x="43" y="6553" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6565">CUBE</text> + <rect x="43" y="6581" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6593">CURRENT</text> + <rect x="43" y="6609" width="100" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6621">CURRENT_CATALOG</text> + <rect x="43" y="6637" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6649">CURRENT_DATE</text> + <rect x="43" y="6665" width="202" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6677">CURRENT_DEFAULT_TRANSFORM_GROUP</text> + <rect x="43" y="6693" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6705">CURRENT_PATH</text> + <rect x="43" y="6721" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6733">CURRENT_ROLE</text> + <rect x="43" y="6749" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6761">CURRENT_SCHEMA</text> + <rect x="43" y="6777" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6789">CURRENT_TIME</text> + <rect x="43" y="6805" width="110" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6817">CURRENT_TIMESTAMP</text> + <rect x="43" y="6833" width="208" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6845">CURRENT_TRANSFORM_GROUP_FOR_TYPE</text> + <rect x="43" y="6861" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6873">CURRENT_USER</text> + <rect x="43" y="6889" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6901">CURSOR</text> + <rect x="43" y="6917" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6929">CYCLE</text> + <rect x="43" y="6945" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6957">DATE</text> + <rect x="43" y="6973" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="6985">DAY</text> + <rect x="43" y="7001" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7013">DAYS</text> + <rect x="43" y="7029" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7041">DEC</text> + <rect x="43" y="7057" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7069">DYNAMIC</text> + <rect x="43" y="7085" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7097">EXP</text> + <rect x="43" y="7113" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7125">EXTERNAL</text> + <rect x="43" y="7141" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7153">FILTER</text> + <rect x="43" y="7169" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7181">FLOOR</text> + <rect x="43" y="7197" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7209">FREE</text> + <rect x="43" y="7225" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7237">FUNCTION</text> + <rect x="43" y="7253" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7265">GLOBAL</text> + <rect x="43" y="7281" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7293">HOLD</text> + <rect x="43" y="7309" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7321">HOUR</text> + <rect x="43" y="7337" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7349">HOURS</text> + <rect x="43" y="7365" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7377">IDENTITY</text> + <rect x="43" y="7393" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7405">INDICATOR</text> + <rect x="43" y="7421" width="76" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7433">INTERSECTION</text> + <rect x="43" y="7449" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7461">INTERVAL</text> + <rect x="43" y="7477" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7489">LANGUAGE</text> + <rect x="43" y="7505" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7517">LEAD</text> + <rect x="43" y="7533" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7545">LOCAL</text> + <rect x="43" y="7561" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7573">LOWER</text> + <rect x="43" y="7589" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7601">MAX</text> + <rect x="43" y="7617" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7629">MERGE</text> + <rect x="43" y="7645" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7657">METHOD</text> + <rect x="43" y="7673" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7685">MIN</text> + <rect x="43" y="7701" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7713">MINUTE</text> + <rect x="43" y="7729" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7741">MINUTES</text> + <rect x="43" y="7757" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7769">MOD</text> + <rect x="43" y="7785" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7797">MODULE</text> + <rect x="43" y="7813" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7825">MONTH</text> + <rect x="43" y="7841" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7853">MONTHS</text> + <rect x="43" y="7869" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7881">NAME</text> + <rect x="43" y="7897" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7909">NEW</text> + <rect x="43" y="7925" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7937">NONE</text> + <rect x="43" y="7953" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7965">OCCURRENCE</text> + <rect x="43" y="7981" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="7993">OFFSET</text> + <rect x="43" y="8009" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8021">OLD</text> + <rect x="43" y="8037" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8049">OPEN</text> + <rect x="43" y="8065" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8077">PARTITION</text> + <rect x="43" y="8093" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8105">POSITION</text> + <rect x="43" y="8121" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8133">POWER</text> + <rect x="43" y="8149" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8161">PRECISION</text> + <rect x="43" y="8177" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8189">RANGE</text> + <rect x="43" y="8205" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8217">RANK</text> + <rect x="43" y="8233" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8245">READS</text> + <rect x="43" y="8261" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8273">REF</text> + <rect x="43" y="8289" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8301">REFERENCES</text> + <rect x="43" y="8317" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8329">RELEASE</text> + <rect x="43" y="8345" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8357">RESULT</text> + <rect x="43" y="8373" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8385">RETURNS</text> + <rect x="43" y="8401" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8413">ROLLUP</text> + <rect x="43" y="8429" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8441">ROW</text> + <rect x="43" y="8457" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8469">ROW_NUMBER</text> + <rect x="43" y="8485" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8497">ROWS</text> + <rect x="43" y="8513" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8525">SAVEPOINT</text> + <rect x="43" y="8541" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8553">SCOPE</text> + <rect x="43" y="8569" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8581">SEARCH</text> + <rect x="43" y="8597" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8609">SECOND</text> + <rect x="43" y="8625" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8637">SECONDS</text> + <rect x="43" y="8653" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8665">SESSION_USER</text> + <rect x="43" y="8681" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8693">SQL</text> + <rect x="43" y="8709" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8721">START</text> + <rect x="43" y="8737" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8749">STATIC</text> + <rect x="43" y="8765" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8777">SUM</text> + <rect x="43" y="8793" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8805">SYSTEM</text> + <rect x="43" y="8821" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8833">TIME</text> + <rect x="43" y="8849" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8861">TIMESTAMP</text> + <rect x="43" y="8877" width="90" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8889">TIMEZONE_HOUR</text> + <rect x="43" y="8905" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8917">TIMEZONE_MINUTE</text> + <rect x="43" y="8933" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8945">TRIGGER</text> + <rect x="43" y="8961" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="8973">TRUNCATE</text> + <rect x="43" y="8989" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9001">UNKNOWN</text> + <rect x="43" y="9017" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9029">UPDATE</text> + <rect x="43" y="9045" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9057">UPPER</text> + <rect x="43" y="9073" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9085">USER</text> + <rect x="43" y="9101" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9113">VALUE</text> + <rect x="43" y="9129" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9141">VALUES</text> + <rect x="43" y="9157" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9169">VERSION</text> + <rect x="43" y="9185" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9197">VERSIONS</text> + <rect x="43" y="9213" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9225">WINDOW</text> + <rect x="43" y="9241" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9253">YEAR</text> + <rect x="43" y="9269" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9281">YEARS</text> + <rect x="43" y="9297" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9309">COMMENT</text> + <rect x="43" y="9325" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9337">DEFAULT</text> + <rect x="43" y="9353" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9365">USE</text> + <rect x="43" y="9381" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9393">LIMIT</text> + <rect x="43" y="9409" width="114" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9421">NUMERIC_HISTOGRAM</text> + <rect x="43" y="9437" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9449">REPLACE</text> + <rect x="43" y="9465" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9477">HISTOGRAM</text> + <rect x="43" y="9493" width="112" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9505">APPROEX_PERCENTILE</text> + <rect x="43" y="9521" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9533">MAP_AGG</text> + <rect x="43" y="9549" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9561">SET_AGG</text> + <rect x="43" y="9577" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9589">MAP_UNION</text> + <rect x="43" y="9605" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="9617">"COUNT"</text> + <path class="line" d="m17 10 h2 m20 0 h4 m14 0 h4 m0 0 h194 m-236 0 h20 m216 0 h20 m-256 0 q10 0 10 10 m236 0 q0 -10 10 -10 m-246 10 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m70 0 h4 m0 0 h138 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m58 0 h4 m0 0 h150 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m64 0 h4 m0 0 h144 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m14 0 h4 m0 0 h194 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m84 0 h4 m0 0 h124 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m134 0 h4 m0 0 h74 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m118 0 h4 m0 0 h90 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m130 0 h4 m0 0 h78 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m92 0 h4 m0 0 h116 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m68 0 h4 m0 0 h140 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m78 0 h4 m0 0 h130 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m112 0 h4 m0 0 h96 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m94 0 h4 m0 0 h114 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m106 0 h4 m0 0 h102 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m82 0 h4 m0 0 h126 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m114 0 h4 m0 0 h94 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m146 0 h4 m0 0 h62 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m64 0 h4 m0 0 h144 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m108 0 h4 m0 0 h100 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m70 0 h4 m0 0 h138 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m104 0 h4 m0 0 h104 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m118 0 h4 m0 0 h90 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m102 0 h4 m0 0 h106 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m114 0 h4 m0 0 h94 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m74 0 h4 m0 0 h134 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m78 0 h4 m0 0 h130 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m80 0 h4 m0 0 h128 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m136 0 h4 m0 0 h72 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m162 0 h4 m0 0 h46 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m68 0 h4 m0 0 h140 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m72 0 h4 m0 0 h136 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m106 0 h4 m0 0 h102 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m138 0 h4 m0 0 h70 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m58 0 h4 m0 0 h150 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m68 0 h4 m0 0 h140 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m42 0 h4 m0 0 h166 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m14 0 h4 m0 0 h194 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m22 0 h4 m0 0 h186 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m16 0 h4 m0 0 h192 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m92 0 h4 m0 0 h116 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m74 0 h4 m0 0 h134 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m14 0 h4 m0 0 h194 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m24 0 h4 m0 0 h184 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m70 0 h4 m0 0 h138 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m16 0 h4 m0 0 h192 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m58 0 h4 m0 0 h150 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m94 0 h4 m0 0 h114 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m130 0 h4 m0 0 h78 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m80 0 h4 m0 0 h128 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m70 0 h4 m0 0 h138 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m42 0 h4 m0 0 h166 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m58 0 h4 m0 0 h150 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m68 0 h4 m0 0 h140 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m14 0 h4 m0 0 h194 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m98 0 h4 m0 0 h110 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m96 0 h4 m0 0 h112 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m166 0 h4 m0 0 h42 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m160 0 h4 m0 0 h48 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m144 0 h4 m0 0 h64 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m156 0 h4 m0 0 h52 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m22 0 h4 m0 0 h186 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m64 0 h4 m0 0 h144 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m124 0 h4 m0 0 h84 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m98 0 h4 m0 0 h110 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m134 0 h4 m0 0 h74 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m110 0 h4 m0 0 h98 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m100 0 h4 m0 0 h108 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m82 0 h4 m0 0 h126 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m94 0 h4 m0 0 h114 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m72 0 h4 m0 0 h136 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m80 0 h4 m0 0 h128 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m88 0 h4 m0 0 h120 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m72 0 h4 m0 0 h136 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m84 0 h4 m0 0 h124 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m72 0 h4 m0 0 h136 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m76 0 h4 m0 0 h132 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m42 0 h4 m0 0 h166 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m82 0 h4 m0 0 h126 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m96 0 h4 m0 0 h112 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m12 0 h4 m0 0 h196 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m68 0 h4 m0 0 h140 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m98 0 h4 m0 0 h110 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m74 0 h4 m0 0 h134 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m112 0 h4 m0 0 h96 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m144 0 h4 m0 0 h64 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m154 0 h4 m0 0 h54 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m72 0 h4 m0 0 h136 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m98 0 h4 m0 0 h110 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m80 0 h4 m0 0 h128 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m92 0 h4 m0 0 h116 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m68 0 h4 m0 0 h140 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m78 0 h4 m0 0 h130 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m156 0 h4 m0 0 h52 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m138 0 h4 m0 0 h70 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m138 0 h4 m0 0 h70 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m150 0 h4 m0 0 h58 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m24 0 h4 m0 0 h184 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m64 0 h4 m0 0 h144 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m20 0 h4 m0 0 h188 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m70 0 h4 m0 0 h138 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m100 0 h4 m0 0 h108 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m80 0 h4 m0 0 h128 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m202 0 h4 m0 0 h6 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m82 0 h4 m0 0 h126 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m82 0 h4 m0 0 h126 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m96 0 h4 m0 0 h112 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m78 0 h4 m0 0 h130 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m110 0 h4 m0 0 h98 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m208 0 h4 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m80 0 h4 m0 0 h128 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m24 0 h4 m0 0 h184 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m42 0 h4 m0 0 h166 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m76 0 h4 m0 0 h132 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m58 0 h4 m0 0 h150 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m70 0 h4 m0 0 h138 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m42 0 h4 m0 0 h166 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m58 0 h4 m0 0 h150 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m24 0 h4 m0 0 h184 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m42 0 h4 m0 0 h166 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m78 0 h4 m0 0 h130 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m46 0 h4 m0 0 h162 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m52 0 h4 m0 0 h156 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m80 0 h4 m0 0 h128 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m40 0 h4 m0 0 h168 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m28 0 h4 m0 0 h180 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m30 0 h4 m0 0 h178 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m62 0 h4 m0 0 h146 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m90 0 h4 m0 0 h118 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m98 0 h4 m0 0 h110 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m60 0 h4 m0 0 h148 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m44 0 h4 m0 0 h164 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m36 0 h4 m0 0 h172 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m42 0 h4 m0 0 h166 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m32 0 h4 m0 0 h176 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m38 0 h4 m0 0 h170 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m56 0 h4 m0 0 h152 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m26 0 h4 m0 0 h182 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m34 0 h4 m0 0 h174 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m114 0 h4 m0 0 h94 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m112 0 h4 m0 0 h96 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m54 0 h4 m0 0 h154 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m50 0 h4 m0 0 h158 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m66 0 h4 m0 0 h142 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m48 0 h4 m0 0 h160 m23 -9604 h-3"/> + <polygon points="285 10 293 6 293 14"/> + <polygon points="285 10 277 6 277 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#non-reserved-word" title="non_reserved_word" shape="rect">non_reserved_word</a></div> + <div>         ::= 'A'</div> + <div>           | 'ABSOLUTE'</div> + <div>           | 'ACTION'</div> + <div>           | 'ADA'</div> + <div>           | 'ADD'</div> + <div>           | 'ADMIN'</div> + <div>           | 'AFTER'</div> + <div>           | 'ALWAYS'</div> + <div>           | 'ASC'</div> + <div>           | 'ASSERTION'</div> + <div>           | 'ASSIGNMENT'</div> + <div>           | 'ATTRIBUTE'</div> + <div>           | 'ATTRIBUTES'</div> + <div>           | 'BEFORE'</div> + <div>           | 'BERNOULLI'</div> + <div>           | 'BREADTH'</div> + <div>           | 'C'</div> + <div>           | 'CASCADE'</div> + <div>           | 'CATALOG'</div> + <div>           | 'CATALOG_NAME'</div> + <div>           | 'CHAIN'</div> + <div>           | 'CHARACTER_SET_CATALOG'</div> + <div>           | 'CHARACTER_SET_NAME'</div> + <div>           | 'CHARACTER_SET_SCHEMA'</div> + <div>           | 'CHARACTERISTICS'</div> + <div>           | 'CHARACTERS'</div> + <div>           | 'CLASS_ORIGIN'</div> + <div>           | 'COBOL'</div> + <div>           | 'COLLATION'</div> + <div>           | 'COLLATION_CATALOG'</div> + <div>           | 'COLLATION_NAME'</div> + <div>           | 'COLLATION_SCHEMA'</div> + <div>           | 'COLUMN_NAME'</div> + <div>           | 'COMMAND_FUNCTION'</div> + <div>           | 'COMMAND_FUNCTION_CODE'</div> + <div>           | 'COMMITTED'</div> + <div>           | 'CONDITION_NUMBER'</div> + <div>           | 'CONNECTION'</div> + <div>           | 'CONNECTION_NAME'</div> + <div>           | 'CONSTRAINT_CATALOG'</div> + <div>           | 'CONSTRAINT_NAME'</div> + <div>           | 'CONSTRAINT_SCHEMA'</div> + <div>           | 'CONSTRAINTS'</div> + <div>           | 'CONSTRUCTOR'</div> + <div>           | 'CONTAINS'</div> + <div>           | 'CONTINUE'</div> + <div>           | 'CURSOR_NAME'</div> + <div>           | 'DATA'</div> + <div>           | 'DATETIME_INTERVAL_CODE'</div> + <div>           | 'DATETIME_INTERVAL_PRECISION'</div> + <div>           | 'DEFAULTS'</div> + <div>           | 'DEFERRABLE'</div> + <div>           | 'DEFERRED'</div> + <div>           | 'DEFINED'</div> + <div>           | 'DEFINER'</div> + <div>           | 'DEGREE'</div> + <div>           | 'DEPTH'</div> + <div>           | 'DERIVED'</div> + <div>           | 'DESC'</div> + <div>           | 'DESCRIPTOR'</div> + <div>           | 'DIAGNOSTICS'</div> + <div>           | 'DISPATCH'</div> + <div>           | 'DOMAIN'</div> + <div>           | 'DYNAMIC_FUNCTION'</div> + <div>           | 'DYNAMIC_FUNCTION_CODE'</div> + <div>           | 'ENFORCED'</div> + <div>           | 'EQUALS'</div> + <div>           | 'EXCLUDE'</div> + <div>           | 'EXCLUDING'</div> + <div>           | 'EXPRESSION'</div> + <div>           | 'FINAL'</div> + <div>           | 'FIRST'</div> + <div>           | 'FLAG'</div> + <div>           | 'FOLLOWING'</div> + <div>           | 'FORTRAN'</div> + <div>           | 'FOUND'</div> + <div>           | 'G'</div> + <div>           | 'GENERAL'</div> + <div>           | 'GENERATED'</div> + <div>           | 'GO'</div> + <div>           | 'GOTO'</div> + <div>           | 'GRANTED'</div> + <div>           | 'HIERARCHY'</div> + <div>           | 'IF'</div> + <div>           | 'IGNORE'</div> + <div>           | 'IMMEDIATE'</div> + <div>           | 'IMPLEMENTATION'</div> + <div>           | 'INCLUDING'</div> + <div>           | 'INCREMENT'</div> + <div>           | 'INITIALLY'</div> + <div>           | 'INPUT'</div> + <div>           | 'INSTANCE'</div> + <div>           | 'INSTANTIABLE'</div> + <div>           | 'INSTEAD'</div> + <div>           | 'INVOKER'</div> + <div>           | 'ISOLATION'</div> + <div>           | 'K'</div> + <div>           | 'KEY'</div> + <div>           | 'KEY_MEMBER'</div> + <div>           | 'KEY_TYPE'</div> + <div>           | 'LAST'</div> + <div>           | 'LENGTH'</div> + <div>           | 'LEVEL'</div> + <div>           | 'LOCATOR'</div> + <div>           | 'M'</div> + <div>           | 'MAP'</div> + <div>           | 'MATCHED'</div> + <div>           | 'MAXVALUE'</div> + <div>           | 'MESSAGE_LENGTH'</div> + <div>           | 'MESSAGE_OCTET_LENGTH'</div> + <div>           | 'MESSAGE_TEXT'</div> + <div>           | 'MINVALUE'</div> + <div>           | 'MORE'</div> + <div>           | 'MUMPS'</div> + <div>           | 'NAMES'</div> + <div>           | 'NESTING'</div> + <div>           | 'NEXT'</div> + <div>           | 'NFC'</div> + <div>           | 'NFD'</div> + <div>           | 'NFKC'</div> + <div>           | 'NFKD'</div> + <div>           | 'NORMALIZED'</div> + <div>           | 'NULLABLE'</div> + <div>           | 'NULLS'</div> + <div>           | 'NUMBER'</div> + <div>           | 'OBJECT'</div> + <div>           | 'OCTETS'</div> + <div>           | 'OPTION'</div> + <div>           | 'OPTIONS'</div> + <div>           | 'ORDERING'</div> + <div>           | 'ORDINALITY'</div> + <div>           | 'OTHERS'</div> + <div>           | 'OUTPUT'</div> + <div>           | 'OVERRIDING'</div> + <div>           | 'P'</div> + <div>           | 'PAD'</div> + <div>           | 'PARAMETER_MODE'</div> + <div>           | 'PARAMETER_NAME'</div> + <div>           | 'PARAMETER_ORDINAL_POSITION'</div> + <div>           | 'PARAMETER_SPECIFIC_CATALOG'</div> + <div>           | 'PARAMETER_SPECIFIC_NAME'</div> + <div>           | 'PARAMETER_SPECIFIC_SCHEMA'</div> + <div>           | 'PARTIAL'</div> + <div>           | 'PASCAL'</div> + <div>           | 'PATH'</div> + <div>           | 'PLACING'</div> + <div>           | 'PLI'</div> + <div>           | 'PRECEDING'</div> + <div>           | 'PRESERVE'</div> + <div>           | 'PRIOR'</div> + <div>           | 'PRIVILEGES'</div> + <div>           | 'PROPERTIES'</div> + <div>           | 'PUBLIC'</div> + <div>           | 'READ'</div> + <div>           | 'RELATIVE'</div> + <div>           | 'REPEATABLE'</div> + <div>           | 'RESPECT'</div> + <div>           | 'RESTART'</div> + <div>           | 'RESTRICT'</div> + <div>           | 'RETURNED_CARDINALITY'</div> + <div>           | 'RETURNED_LENGTH'</div> + <div>           | 'RETURNED_OCTET_LENGTH'</div> + <div>           | 'RETURNED_SQLSTATE'</div> + <div>           | 'ROLE'</div> + <div>           | 'ROUTINE'</div> + <div>           | 'ROUTINE_CATALOG'</div> + <div>           | 'ROUTINE_NAME'</div> + <div>           | 'ROUTINE_SCHEMA'</div> + <div>           | 'ROW_COUNT'</div> + <div>           | 'SCALE'</div> + <div>           | 'SCHEMA'</div> + <div>           | 'SCHEMA_NAME'</div> + <div>           | 'SCOPE_CATALOG'</div> + <div>           | 'SCOPE_NAME'</div> + <div>           | 'SCOPE_SCHEMA'</div> + <div>           | 'SECTION'</div> + <div>           | 'SECURITY'</div> + <div>           | 'SELF'</div> + <div>           | 'SEQUENCE'</div> + <div>           | 'SERIALIZABLE'</div> + <div>           | 'SERVER_NAME'</div> + <div>           | 'SESSION'</div> + <div>           | 'SETS'</div> + <div>           | 'SIMPLE'</div> + <div>           | 'SIZE'</div> + <div>           | 'SOURCE'</div> + <div>           | 'SPACE'</div> + <div>           | 'SPECIFIC_NAME'</div> + <div>           | 'STATE'</div> + <div>           | 'STATEMENT'</div> + <div>           | 'STRUCTURE'</div> + <div>           | 'STYLE'</div> + <div>           | 'SUBCLASS_ORIGIN'</div> + <div>           | 'T'</div> + <div>           | 'TABLE_NAME'</div> + <div>           | 'TEMPORARY'</div> + <div>           | 'TIES'</div> + <div>           | 'TOP_LEVEL_COUNT'</div> + <div>           | 'TRANSACTION'</div> + <div>           | 'TRANSACTION_ACTIVE'</div> + <div>           | 'TRANSACTIONS_COMMITTED'</div> + <div>           | 'TRANSACTIONS_ROLLED_BACK'</div> + <div>           | 'TRANSFORM'</div> + <div>           | 'TRANSFORMS'</div> + <div>           | 'TRIGGER_CATALOG'</div> + <div>           | 'TRIGGER_NAME'</div> + <div>           | 'TRIGGER_SCHEMA'</div> + <div>           | 'TRY_CAST'</div> + <div>           | 'TYPE'</div> + <div>           | 'UNBOUNDED'</div> + <div>           | 'UNCOMMITTED'</div> + <div>           | 'UNDER'</div> + <div>           | 'UNNAMED'</div> + <div>           | 'USAGE'</div> + <div>           | 'USER_DEFINED_TYPE_CATALOG'</div> + <div>           | 'USER_DEFINED_TYPE_CODE'</div> + <div>           | 'USER_DEFINED_TYPE_NAME'</div> + <div>           | 'USER_DEFINED_TYPE_SCHEMA'</div> + <div>           | 'VIEW'</div> + <div>           | 'WORK'</div> + <div>           | 'WRITE'</div> + <div>           | 'ZONE'</div> + <div>           | 'ABS'</div> + <div>           | 'ALL'</div> + <div>           | 'ARRAY_AGG'</div> + <div>           | 'AT'</div> + <div>           | 'AVG'</div> + <div>           | 'BLOB'</div> + <div>           | 'BOTH'</div> + <div>           | 'CARDINALITY'</div> + <div>           | 'CLOSE'</div> + <div>           | 'COLUMN'</div> + <div>           | 'CONDITION'</div> + <div>           | 'COUNT'</div> + <div>           | 'CUBE'</div> + <div>           | 'CURRENT'</div> + <div>           | 'CURRENT_CATALOG'</div> + <div>           | 'CURRENT_DATE'</div> + <div>           | 'CURRENT_DEFAULT_TRANSFORM_GROUP'</div> + <div>           | 'CURRENT_PATH'</div> + <div>           | 'CURRENT_ROLE'</div> + <div>           | 'CURRENT_SCHEMA'</div> + <div>           | 'CURRENT_TIME'</div> + <div>           | 'CURRENT_TIMESTAMP'</div> + <div>           | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE'</div> + <div>           | 'CURRENT_USER'</div> + <div>           | 'CURSOR'</div> + <div>           | 'CYCLE'</div> + <div>           | 'DATE'</div> + <div>           | 'DAY'</div> + <div>           | 'DAYS'</div> + <div>           | 'DEC'</div> + <div>           | 'DYNAMIC'</div> + <div>           | 'EXP'</div> + <div>           | 'EXTERNAL'</div> + <div>           | 'FILTER'</div> + <div>           | 'FLOOR'</div> + <div>           | 'FREE'</div> + <div>           | 'FUNCTION'</div> + <div>           | 'GLOBAL'</div> + <div>           | 'HOLD'</div> + <div>           | 'HOUR'</div> + <div>           | 'HOURS'</div> + <div>           | 'IDENTITY'</div> + <div>           | 'INDICATOR'</div> + <div>           | 'INTERSECTION'</div> + <div>           | 'INTERVAL'</div> + <div>           | 'LANGUAGE'</div> + <div>           | 'LEAD'</div> + <div>           | 'LOCAL'</div> + <div>           | 'LOWER'</div> + <div>           | 'MAX'</div> + <div>           | 'MERGE'</div> + <div>           | 'METHOD'</div> + <div>           | 'MIN'</div> + <div>           | 'MINUTE'</div> + <div>           | 'MINUTES'</div> + <div>           | 'MOD'</div> + <div>           | 'MODULE'</div> + <div>           | 'MONTH'</div> + <div>           | 'MONTHS'</div> + <div>           | 'NAME'</div> + <div>           | 'NEW'</div> + <div>           | 'NONE'</div> + <div>           | 'OCCURRENCE'</div> + <div>           | 'OFFSET'</div> + <div>           | 'OLD'</div> + <div>           | 'OPEN'</div> + <div>           | 'PARTITION'</div> + <div>           | 'POSITION'</div> + <div>           | 'POWER'</div> + <div>           | 'PRECISION'</div> + <div>           | 'RANGE'</div> + <div>           | 'RANK'</div> + <div>           | 'READS'</div> + <div>           | 'REF'</div> + <div>           | 'REFERENCES'</div> + <div>           | 'RELEASE'</div> + <div>           | 'RESULT'</div> + <div>           | 'RETURNS'</div> + <div>           | 'ROLLUP'</div> + <div>           | 'ROW'</div> + <div>           | 'ROW_NUMBER'</div> + <div>           | 'ROWS'</div> + <div>           | 'SAVEPOINT'</div> + <div>           | 'SCOPE'</div> + <div>           | 'SEARCH'</div> + <div>           | 'SECOND'</div> + <div>           | 'SECONDS'</div> + <div>           | 'SESSION_USER'</div> + <div>           | 'SQL'</div> + <div>           | 'START'</div> + <div>           | 'STATIC'</div> + <div>           | 'SUM'</div> + <div>           | 'SYSTEM'</div> + <div>           | 'TIME'</div> + <div>           | 'TIMESTAMP'</div> + <div>           | 'TIMEZONE_HOUR'</div> + <div>           | 'TIMEZONE_MINUTE'</div> + <div>           | 'TRIGGER'</div> + <div>           | 'TRUNCATE'</div> + <div>           | 'UNKNOWN'</div> + <div>           | 'UPDATE'</div> + <div>           | 'UPPER'</div> + <div>           | 'USER'</div> + <div>           | 'VALUE'</div> + <div>           | 'VALUES'</div> + <div>           | 'VERSION'</div> + <div>           | 'VERSIONS'</div> + <div>           | 'WINDOW'</div> + <div>           | 'YEAR'</div> + <div>           | 'YEARS'</div> + <div>           | 'COMMENT'</div> + <div>           | 'DEFAULT'</div> + <div>           | 'USE'</div> + <div>           | 'LIMIT'</div> + <div>           | 'NUMERIC_HISTOGRAM'</div> + <div>           | 'REPLACE'</div> + <div>           | 'HISTOGRAM'</div> + <div>           | 'APPROEX_PERCENTILE'</div> + <div>           | 'MAP_AGG'</div> + <div>           | 'SET_AGG'</div> + <div>           | 'MAP_UNION'</div> + <div>           | '"COUNT"'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#actual-identifier" title="actual-identifier">actual-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + left_bracket_or_trigraph +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="107" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">[</text> + <rect x="43" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">??(</text> + <path class="line" d="m17 10 h2 m20 0 h4 m12 0 h4 m0 0 h8 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v8 m48 0 v-8 m-48 8 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m23 -28 h-3"/> + <polygon points="97 10 105 6 105 14"/> + <polygon points="97 10 89 6 89 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#left-bracket-or-trigraph" title="left_bracket_or_trigraph" shape="rect">left_bracket_or_trigraph</a></div> + <div>         ::= '['</div> + <div>           | '??('</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-element-reference" title="array-element-reference">array-element-reference</a></li><li><a href="#array-type" title="array-type">array-type</a></li><li><a href="#array-value-constructor-by-enumeration" title="array-value-constructor-by-enumeration">array-value-constructor-by-enumeration</a></li><li><a href="#empty-specification" title="empty-specification">empty-specification</a></li><li><a href="#multiset-value-constructor-by-enumeration" title="multiset-value-constructor-by-enumeration">multiset-value-constructor-by-enumeration</a></li><li><a href="#target-array-element-specification" title="target-array-element-specification">target-array-element-specification</a></li><li><a href="#update-target" title="update-target">update-target</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + right_bracket_or_trigraph +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="107" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">]</text> + <rect x="43" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">??)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m12 0 h4 m0 0 h8 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v8 m48 0 v-8 m-48 8 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m23 -28 h-3"/> + <polygon points="97 10 105 6 105 14"/> + <polygon points="97 10 89 6 89 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#right-bracket-or-trigraph" title="right_bracket_or_trigraph" shape="rect">right_bracket_or_trigraph</a></div> + <div>         ::= ']'</div> + <div>           | '??)'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-element-reference" title="array-element-reference">array-element-reference</a></li><li><a href="#array-type" title="array-type">array-type</a></li><li><a href="#array-value-constructor-by-enumeration" title="array-value-constructor-by-enumeration">array-value-constructor-by-enumeration</a></li><li><a href="#empty-specification" title="empty-specification">empty-specification</a></li><li><a href="#multiset-value-constructor-by-enumeration" title="multiset-value-constructor-by-enumeration">multiset-value-constructor-by-enumeration</a></li><li><a href="#target-array-element-specification" title="target-array-element-specification">target-array-element-specification</a></li><li><a href="#update-target" title="update-target">update-target</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="197" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#signed-numeric-literal" xlink:title="signed_numeric_literal" shape="rect"> + <rect x="43" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">signed_numeric_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#general-literal" xlink:title="general_literal" shape="rect"> + <rect x="43" y="29" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">general_literal</text></a><path class="line" d="m17 10 h2 m20 0 h4 m110 0 h4 m-138 0 h20 m118 0 h20 m-158 0 q10 0 10 10 m138 0 q0 -10 10 -10 m-148 10 v8 m138 0 v-8 m-138 8 q0 10 10 10 m118 0 q10 0 10 -10 m-128 10 h4 m72 0 h4 m0 0 h38 m23 -28 h-3"/> + <polygon points="187 10 195 6 195 14"/> + <polygon points="187 10 179 6 179 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#literal" title="literal" shape="rect">literal</a>  ::= <a href="#signed-numeric-literal" title="signed_numeric_literal" shape="rect">signed_numeric_literal</a></div> + <div>           | <a href="#general-literal" title="general_literal" shape="rect">general_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#default-option" title="default-option">default-option</a></li><li><a href="#simple-value-specification" title="simple-value-specification">simple-value-specification</a></li><li><a href="#value-specification" title="value-specification">value-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + signed_numeric_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">+</text> + <rect x="43" y="50" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">-</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-numeric-literal" xlink:title="unsigned_numeric_literal" shape="rect"> + <rect x="85" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">unsigned_numeric_literal</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h12 m-42 0 h20 m22 0 h20 m-62 0 q10 0 10 10 m42 0 q0 -10 10 -10 m-52 10 v1 m42 0 v-1 m-42 1 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m14 0 h4 m-32 -10 v20 m42 0 v-20 m-42 20 v8 m42 0 v-8 m-42 8 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m10 0 h4 m0 0 h4 m20 -49 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="221 10 229 6 229 14"/> + <polygon points="221 10 213 6 213 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#signed-numeric-literal" title="signed_numeric_literal" shape="rect">signed_numeric_literal</a></div> + <div>         ::= ( '+' | '-' )? <a href="#unsigned-numeric-literal" title="unsigned_numeric_literal" shape="rect">unsigned_numeric_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#literal" title="literal">literal</a></li><li><a href="#sequence-generator-increment" title="sequence-generator-increment">sequence-generator-increment</a></li><li><a href="#sequence-generator-max-value" title="sequence-generator-max-value">sequence-generator-max-value</a></li><li><a href="#sequence-generator-min-value" title="sequence-generator-min-value">sequence-generator-min-value</a></li><li><a href="#sequence-generator-restart-value" title="sequence-generator-restart-value">sequence-generator-restart-value</a></li><li><a href="#sequence-generator-start-value" title="sequence-generator-start-value">sequence-generator-start-value</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unsigned_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-numeric-literal" xlink:title="unsigned_numeric_literal" shape="rect"> + <rect x="43" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">unsigned_numeric_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#general-literal" xlink:title="general_literal" shape="rect"> + <rect x="43" y="29" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">general_literal</text></a><path class="line" d="m17 10 h2 m20 0 h4 m122 0 h4 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v8 m150 0 v-8 m-150 8 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m72 0 h4 m0 0 h50 m23 -28 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unsigned-literal" title="unsigned_literal" shape="rect">unsigned_literal</a></div> + <div>         ::= <a href="#unsigned-numeric-literal" title="unsigned_numeric_literal" shape="rect">unsigned_numeric_literal</a></div> + <div>           | <a href="#general-literal" title="general_literal" shape="rect">general_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unsigned-value-specification" title="unsigned-value-specification">unsigned-value-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unsigned_numeric_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#exact-numeric-literal" xlink:title="exact_numeric_literal" shape="rect"> + <rect x="43" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">exact_numeric_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#approximate-numeric-literal" xlink:title="approximate_numeric_literal" shape="rect"> + <rect x="43" y="29" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">approximate_numeric_literal</text></a><path class="line" d="m17 10 h2 m20 0 h4 m104 0 h4 m0 0 h34 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m138 0 h4 m23 -28 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unsigned-numeric-literal" title="unsigned_numeric_literal" shape="rect">unsigned_numeric_literal</a></div> + <div>         ::= <a href="#exact-numeric-literal" title="exact_numeric_literal" shape="rect">exact_numeric_literal</a></div> + <div>           | <a href="#approximate-numeric-literal" title="approximate_numeric_literal" shape="rect">approximate_numeric_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#signed-numeric-literal" title="signed-numeric-literal">signed-numeric-literal</a></li><li><a href="#unsigned-literal" title="unsigned-literal">unsigned-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + exact_numeric_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">unsigned_integer</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#float-literal" xlink:title="float_literal" shape="rect"> + <rect x="43" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">float_literal</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m56 0 h4 m0 0 h34 m23 -28 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#exact-numeric-literal" title="exact_numeric_literal" shape="rect">exact_numeric_literal</a></div> + <div>         ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div> + <div>           | <a href="#float-literal" title="float_literal" shape="rect">float_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unsigned-numeric-literal" title="unsigned-numeric-literal">unsigned-numeric-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + general_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="239" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="43" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">character_string_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#national-character-string-literal" xlink:title="national_character_string_literal" shape="rect"> + <rect x="43" y="29" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">national_character_string_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-character-string-literal" xlink:title="Unicode_character_string_literal" shape="rect"> + <rect x="43" y="57" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">Unicode_character_string_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-string-literal" xlink:title="binary_string_literal" shape="rect"> + <rect x="43" y="85" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">binary_string_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-literal" xlink:title="datetime_literal" shape="rect"> + <rect x="43" y="113" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">datetime_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-literal" xlink:title="interval_literal" shape="rect"> + <rect x="43" y="141" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">interval_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-literal" xlink:title="boolean_literal" shape="rect"> + <rect x="43" y="169" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">boolean_literal</text></a><path class="line" d="m17 10 h2 m20 0 h4 m110 0 h4 m0 0 h42 m-180 0 h20 m160 0 h20 m-200 0 q10 0 10 10 m180 0 q0 -10 10 -10 m-190 10 v8 m180 0 v-8 m-180 8 q0 10 10 10 m160 0 q10 0 10 -10 m-170 10 h4 m152 0 h4 m-170 -10 v20 m180 0 v-20 m-180 20 v8 m180 0 v-8 m-180 8 q0 10 10 10 m160 0 q10 0 10 -10 m-170 10 h4 m152 0 h4 m-170 -10 v20 m180 0 v-20 m-180 20 v8 m180 0 v-8 m-180 8 q0 10 10 10 m160 0 q10 0 10 -10 m-170 10 h4 m96 0 h4 m0 0 h56 m-170 -10 v20 m180 0 v-20 m-180 20 v8 m180 0 v-8 m-180 8 q0 10 10 10 m160 0 q10 0 10 -10 m-170 10 h4 m78 0 h4 m0 0 h74 m-170 -10 v20 m180 0 v-20 m-180 20 v8 m180 0 v-8 m-180 8 q0 10 10 10 m160 0 q10 0 10 -10 m-170 10 h4 m70 0 h4 m0 0 h82 m-170 -10 v20 m180 0 v-20 m-180 20 v8 m180 0 v-8 m-180 8 q0 10 10 10 m160 0 q10 0 10 -10 m-170 10 h4 m74 0 h4 m0 0 h78 m23 -168 h-3"/> + <polygon points="229 10 237 6 237 14"/> + <polygon points="229 10 221 6 221 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#general-literal" title="general_literal" shape="rect">general_literal</a></div> + <div>         ::= <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div> + <div>           | <a href="#national-character-string-literal" title="national_character_string_literal" shape="rect">national_character_string_literal</a></div> + <div>           | <a href="#unicode-character-string-literal" title="Unicode_character_string_literal" shape="rect">Unicode_character_string_literal</a></div> + <div>           | <a href="#binary-string-literal" title="binary_string_literal" shape="rect">binary_string_literal</a></div> + <div>           | <a href="#datetime-literal" title="datetime_literal" shape="rect">datetime_literal</a></div> + <div>           | <a href="#interval-literal" title="interval_literal" shape="rect">interval_literal</a></div> + <div>           | <a href="#boolean-literal" title="boolean_literal" shape="rect">boolean_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#literal" title="literal">literal</a></li><li><a href="#unsigned-literal" title="unsigned-literal">unsigned-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_string_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="359" height="54"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="43" y="34" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="46">_</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="65" y="34" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="46">character_set_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#quoted-string" xlink:title="quoted_string" shape="rect"> + <rect x="243" y="13" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="247" y="25">quoted_string</text></a><path class="line" d="m17 22 h2 m20 0 h10 m0 0 h150 m-180 0 h20 m160 0 h20 m-200 0 q10 0 10 10 m180 0 q0 -10 10 -10 m-190 10 v1 m180 0 v-1 m-180 1 q0 10 10 10 m160 0 q10 0 10 -10 m-170 10 h4 m14 0 h4 m0 0 h4 m130 0 h4 m40 -21 h4 m72 0 h4 m-100 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m80 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-80 0 h10 m0 0 h70 m23 21 h-3"/> + <polygon points="349 22 357 18 357 26"/> + <polygon points="349 22 341 18 341 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div> + <div>         ::= ( '_' <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a> )? <a href="#quoted-string" title="quoted_string" shape="rect">quoted_string</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-description" title="column-description">column-description</a></li><li><a href="#date-literal" title="date-literal">date-literal</a></li><li><a href="#direct-implementation-defined-statement" title="direct-implementation-defined-statement">direct-implementation-defined-statement</a></li><li><a href="#external-routine-name" title="external-routine-name">external-routine-name</a></li><li><a href="#general-literal" title="general-literal">general-literal</a></li><li><a href="#interval-literal" title="interval-literal">interval-literal</a></li><li><a href="#preparable-implementation-defined-statement" title="preparable-implementation-defined-statement">preparable-implementation-defined-statement</a></li><li><a href="#routine-description" title="routine-description">routine-description</a></li><li><a href="#table-description" title="table-description">table-description</a></li><li><a href="#time-literal" title="time-literal">time-literal</a></li><li><a href="#timestamp-literal" title="timestamp-literal">timestamp-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_character_string_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="321" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">_</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="65" y="22" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="34">character_set_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-literal" xlink:title="unicode_literal" shape="rect"> + <rect x="223" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="227" y="13">unicode_literal</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h150 m-180 0 h20 m160 0 h20 m-200 0 q10 0 10 10 m180 0 q0 -10 10 -10 m-190 10 v1 m180 0 v-1 m-180 1 q0 10 10 10 m160 0 q10 0 10 -10 m-170 10 h4 m14 0 h4 m0 0 h4 m130 0 h4 m20 -21 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="311 10 319 6 319 14"/> + <polygon points="311 10 303 6 303 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-character-string-literal" title="Unicode_character_string_literal" shape="rect">Unicode_character_string_literal</a></div> + <div>         ::= ( '_' <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a> )? <a href="#unicode-literal" title="unicode_literal" shape="rect">unicode_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-literal" title="general-literal">general-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + datetime_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="175" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#date-literal" xlink:title="date_literal" shape="rect"> + <rect x="43" y="1" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">date_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#time-literal" xlink:title="time_literal" shape="rect"> + <rect x="43" y="29" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">time_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#timestamp-literal" xlink:title="timestamp_literal" shape="rect"> + <rect x="43" y="57" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">timestamp_literal</text></a><path class="line" d="m17 10 h2 m20 0 h4 m58 0 h4 m0 0 h30 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m58 0 h4 m0 0 h30 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m88 0 h4 m23 -56 h-3"/> + <polygon points="165 10 173 6 173 14"/> + <polygon points="165 10 157 6 157 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#datetime-literal" title="datetime_literal" shape="rect">datetime_literal</a></div> + <div>         ::= <a href="#date-literal" title="date_literal" shape="rect">date_literal</a></div> + <div>           | <a href="#time-literal" title="time_literal" shape="rect">time_literal</a></div> + <div>           | <a href="#timestamp-literal" title="timestamp_literal" shape="rect">timestamp_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-literal" title="general-literal">general-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + date_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="197" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="63" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">character_string_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="187 10 195 6 195 14"/> + <polygon points="187 10 179 6 179 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#date-literal" title="date_literal" shape="rect">date_literal</a></div> + <div>         ::= 'DATE' <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-literal" title="datetime-literal">datetime-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + time_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TIME</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="61" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="65" y="13">character_string_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m30 0 h4 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="185 10 193 6 193 14"/> + <polygon points="185 10 177 6 177 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#time-literal" title="time_literal" shape="rect">time_literal</a></div> + <div>         ::= 'TIME' <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-literal" title="datetime-literal">datetime-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + timestamp_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="227" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TIMESTAMP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="93" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="13">character_string_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="217 10 225 6 225 14"/> + <polygon points="217 10 209 6 209 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#timestamp-literal" title="timestamp_literal" shape="rect">timestamp_literal</a></div> + <div>         ::= 'TIMESTAMP' <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-literal" title="datetime-literal">datetime-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="367" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">INTERVAL</text> + <rect x="103" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="34">+</text> + <rect x="103" y="50" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="62">-</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="145" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="13">character_string_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-qualifier" xlink:title="interval_qualifier" shape="rect"> + <rect x="263" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="267" y="13">interval_qualifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m20 0 h10 m0 0 h12 m-42 0 h20 m22 0 h20 m-62 0 q10 0 10 10 m42 0 q0 -10 10 -10 m-52 10 v1 m42 0 v-1 m-42 1 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m14 0 h4 m-32 -10 v20 m42 0 v-20 m-42 20 v8 m42 0 v-8 m-42 8 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m10 0 h4 m0 0 h4 m20 -49 h4 m110 0 h4 m0 0 h4 m80 0 h4 m3 0 h-3"/> + <polygon points="357 10 365 6 365 14"/> + <polygon points="357 10 349 6 349 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-literal" title="interval_literal" shape="rect">interval_literal</a></div> + <div>         ::= 'INTERVAL' ( '+' | '-' )? <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a> <a href="#interval-qualifier" title="interval_qualifier" shape="rect">interval_qualifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-literal" title="general-literal">general-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + boolean_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">TRUE</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">FALSE</text> + <rect x="43" y="57" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">UNKNOWN</text> + <path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h28 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m36 0 h4 m0 0 h24 m-78 -10 v20 m88 0 v-20 m-88 20 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m23 -56 h-3"/> + <polygon points="137 10 145 6 145 14"/> + <polygon points="137 10 129 6 129 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#boolean-literal" title="boolean_literal" shape="rect">boolean_literal</a></div> + <div>         ::= 'TRUE'</div> + <div>           | 'FALSE'</div> + <div>           | 'UNKNOWN'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-literal" title="general-literal">general-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#actual-identifier" xlink:title="actual_identifier" shape="rect"> + <rect x="43" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">actual_identifier</text></a><rect x="43" y="29" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">_</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-suffix-chain" xlink:title="identifier_suffix_chain" shape="rect"> + <rect x="169" y="22" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="34">identifier_suffix_chain</text></a><path class="line" d="m17 10 h2 m20 0 h4 m78 0 h4 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m14 0 h4 m0 0 h64 m40 -28 h10 m0 0 h102 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v1 m132 0 v-1 m-132 1 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m104 0 h4 m23 -21 h-3"/> + <polygon points="307 10 315 6 315 14"/> + <polygon points="307 10 299 6 299 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identifier" title="identifier" shape="rect">identifier</a></div> + <div>         ::= ( <a href="#actual-identifier" title="actual_identifier" shape="rect">actual_identifier</a> | '_' ) <a href="#identifier-suffix-chain" title="identifier_suffix_chain" shape="rect">identifier_suffix_chain</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-identifier" title="sql-identifier">sql-identifier</a></li><li><a href="#sql-parameter-declaration" title="sql-parameter-declaration">sql-parameter-declaration</a></li><li><a href="#alias" title="alias">alias</a></li><li><a href="#alter-column-definition" title="alter-column-definition">alter-column-definition</a></li><li><a href="#alter-group" title="alter-group">alter-group</a></li><li><a href="#as-clause" title="as-clause">as-clause</a></li><li><a href="#asterisked-identifier-chain" title="asterisked-identifier-chain">asterisked-identifier-chain</a></li><li><a href="#attribute-definition" title="attribute-definition">attribute-definition</a></li><li><a href="#cast-to-distinct" title="cast-to-distinct">cast-to-distinct</a></li><li><a href="#cast-to-ref" title="cast-to-ref">cast-to-ref</a></li><li><a href="#cast-to-source" title="cast-to-source">cast-to-source</a></li><li><a href="#cast-to-type" title="cast-to-type">cast-to-type</a></li><li><a href="#catalog-name" title="catalog-name">catalog-name</a></li><li><a href="#column-definition" title="column-definition">column-definition</a></li><li><a href="#column-name-list" title="column-name-list">column-name-list</a></li><li><a href="#column-options" title="column-options">column-options</a></li><li><a href="#column-reference" title="column-reference">column-reference</a></li><li><a href="#cycle-clause" title="cycle-clause">cycle-clause</a></li><li><a href="#cycle-column-list" title="cycle-column-list">cycle-column-list</a></li><li><a href="#delete-statement-positioned" title="delete-statement-positioned">delete-statement-positioned</a></li><li><a href="#delete-statement-searched" title="delete-statement-searched">delete-statement-searched</a></li><li><a href="#dereference-operation" title="dereference-operation">dereference-operation</a></li><li><a href="#descriptor-name" title="descriptor-name">descriptor-name</a></li><li><a href="#drop-attribute-definition" title="drop-attribute-definition">drop-attribute-definition</a></li><li><a href="#drop-column-definition" title="drop-column-definition">drop-column-definition</a></li><li><a href="#drop-role-statement" title="drop-role-statement">drop-role-statement</a></li><li><a href="#dynamic-declare-cursor" title="dynamic-declare-cursor">dynamic-declare-cursor</a></li><li><a href="#existing-identifier" title="existing-identifier">existing-identifier</a></li><li><a href="#external-routine-name" title="external-routine-name">external-routine-name</a></li><li><a href="#externally-invoked-procedure" title="externally-invoked-procedure">externally-invoked-procedure</a></li><li><a href="#field-definition" title="field-definition">field-definition</a></li><li><a href="#field-reference" title="field-reference">field-reference</a></li><li><a href="#generalized-invocation" title="generalized-invocation">generalized-invocation</a></li><li><a href="#grant-role-statement" title="grant-role-statement">grant-role-statement</a></li><li><a href="#grantee" title="grantee">grantee</a></li><li><a href="#group-specification" title="group-specification">group-specification</a></li><li><a href="#host-parameter-name" title="host-parameter-name">host-parameter-name</a></li><li><a href="#identifier-chain" title="identifier-chain">identifier-chain</a></li><li><a href="#list-of-attributes" title="list-of-attributes">list-of-attributes</a></li><li><a href="#member-name-alternatives" title="member-name-alternatives">member-name-alternatives</a></li><li><a href="#merge-statement" title="merge-statement">merge-statement</a></li><li><a href="#method-specification-designator" title="method-specification-designator">method-specification-designator</a></li><li><a href="#module-authorization-clause" title="module-authorization-clause">module-authorization-clause</a></li><li><a href="#module-name-clause" title="module-name-clause">module-name-clause</a></li><li><a href="#mutated-set-clause" title="mutated-set-clause">mutated-set-clause</a></li><li><a href="#mutated-target" title="mutated-target">mutated-target</a></li><li><a href="#named-argument-specification" title="named-argument-specification">named-argument-specification</a></li><li><a href="#partial-method-specification" title="partial-method-specification">partial-method-specification</a></li><li><a href="#revoke-role-statement" title="revoke-role-statement">revoke-role-statement</a></li><li><a href="#role-definition" title="role-definition">role-definition</a></li><li><a href="#routine-name" title="routine-name">routine-name</a></li><li><a href="#savepoint-specifier" title="savepoint-specifier">savepoint-specifier</a></li><li><a href="#schema-name-clause" title="schema-name-clause">schema-name-clause</a></li><li><a href="#search-clause" title="search-clause">search-clause</a></li><li><a href="#self-referencing-column-specification" title="self-referencing-column-specification">self-referencing-column-specification</a></li><li><a href="#single-group-specification" title="single-group-specification">single-group-specification</a></li><li><a href="#specific-identifier" title="specific-identifier">specific-identifier</a></li><li><a href="#specific-method-specification-designator" title="specific-method-specification-designator">specific-method-specification-designator</a></li><li><a href="#static-method-invocation" title="static-method-invocation">static-method-invocation</a></li><li><a href="#table-function-column-list-element" title="table-function-column-list-element">table-function-column-list-element</a></li><li><a href="#table-or-query-name" title="table-or-query-name">table-or-query-name</a></li><li><a href="#transform-group" title="transform-group">transform-group</a></li><li><a href="#transform-group-element" title="transform-group-element">transform-group-element</a></li><li><a href="#transition-table-or-variable" title="transition-table-or-variable">transition-table-or-variable</a></li><li><a href="#update-statement-positioned" title="update-statement-positioned">update-statement-positioned</a></li><li><a href="#update-statement-searched" title="update-statement-searched">update-statement-searched</a></li><li><a href="#update-target" title="update-target">update-target</a></li><li><a href="#view-column-option" title="view-column-option">view-column-option</a></li><li><a href="#window-definition" title="window-definition">window-definition</a></li><li><a href="#window-name-or-specification" title="window-name-or-specification">window-name-or-specification</a></li><li><a href="#with-list-element" title="with-list-element">with-list-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + actual_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regular-identifier" xlink:title="regular_identifier" shape="rect"> + <rect x="43" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">regular_identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delimited-identifier" xlink:title="delimited_identifier" shape="rect"> + <rect x="43" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">delimited_identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-delimited-identifier" xlink:title="Unicode_delimited_identifier" shape="rect"> + <rect x="43" y="57" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">Unicode_delimited_identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#non-reserved-word" xlink:title="non_reserved_word" shape="rect"> + <rect x="43" y="85" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">non_reserved_word</text></a><path class="line" d="m17 10 h2 m20 0 h4 m84 0 h4 m0 0 h50 m-162 0 h20 m142 0 h20 m-182 0 q10 0 10 10 m162 0 q0 -10 10 -10 m-172 10 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m92 0 h4 m0 0 h42 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m134 0 h4 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m102 0 h4 m0 0 h32 m23 -84 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#actual-identifier" title="actual_identifier" shape="rect">actual_identifier</a></div> + <div>         ::= <a href="#regular-identifier" title="regular_identifier" shape="rect">regular_identifier</a></div> + <div>           | <a href="#delimited-identifier" title="delimited_identifier" shape="rect">delimited_identifier</a></div> + <div>           | <a href="#unicode-delimited-identifier" title="Unicode_delimited_identifier" shape="rect">Unicode_delimited_identifier</a></div> + <div>           | <a href="#non-reserved-word" title="non_reserved_word" shape="rect">non_reserved_word</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#identifier" title="identifier">identifier</a></li><li><a href="#identifier-suffix-chain" title="identifier-suffix-chain">identifier-suffix-chain</a></li><li><a href="#lambda-params" title="lambda-params">lambda-params</a></li><li><a href="#table-attributes" title="table-attributes">table-attributes</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="23" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier_chain</text></a><path class="line" d="m17 10 h2 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="113 10 121 6 121 14"/> + <polygon points="113 10 105 6 105 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-name" title="table_name" shape="rect">table_name</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-statement" title="alter-table-statement">alter-table-statement</a></li><li><a href="#drop-table-statement" title="drop-table-statement">drop-table-statement</a></li><li><a href="#drop-view-statement" title="drop-view-statement">drop-view-statement</a></li><li><a href="#insertion-target" title="insertion-target">insertion-target</a></li><li><a href="#like-clause" title="like-clause">like-clause</a></li><li><a href="#object-name" title="object-name">object-name</a></li><li><a href="#referenced-table-and-columns" title="referenced-table-and-columns">referenced-table-and-columns</a></li><li><a href="#scope-clause" title="scope-clause">scope-clause</a></li><li><a href="#subview-clause" title="subview-clause">subview-clause</a></li><li><a href="#supertable-name" title="supertable-name">supertable-name</a></li><li><a href="#table-definition" title="table-definition">table-definition</a></li><li><a href="#table-or-query-name" title="table-or-query-name">table-or-query-name</a></li><li><a href="#target-table" title="target-table">target-table</a></li><li><a href="#temporary-table-declaration" title="temporary-table-declaration">temporary-table-declaration</a></li><li><a href="#trigger-definition" title="trigger-definition">trigger-definition</a></li><li><a href="#view-definition" title="view-definition">view-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="23" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier_chain</text></a><path class="line" d="m17 10 h2 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="113 10 121 6 121 14"/> + <polygon points="113 10 105 6 105 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-name" title="schema_name" shape="rect">schema_name</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-set-name" title="character-set-name">character-set-name</a></li><li><a href="#drop-schema-statement" title="drop-schema-statement">drop-schema-statement</a></li><li><a href="#local-or-schema-qualifier" title="local-or-schema-qualifier">local-or-schema-qualifier</a></li><li><a href="#module-authorization-clause" title="module-authorization-clause">module-authorization-clause</a></li><li><a href="#routine-name" title="routine-name">routine-name</a></li><li><a href="#schema-name-clause" title="schema-name-clause">schema-name-clause</a></li><li><a href="#schema-name-list" title="schema-name-list">schema-name-list</a></li><li><a href="#specific-identifier" title="specific-identifier">specific-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + catalog_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="93" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="83 10 91 6 91 14"/> + <polygon points="83 10 75 6 75 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#catalog-name" title="catalog_name" shape="rect">catalog_name</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + schema_qualified_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="23" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier_chain</text></a><path class="line" d="m17 10 h2 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="113 10 121 6 121 14"/> + <polygon points="113 10 105 6 105 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-invoked-procedure" title="sql-invoked-procedure">sql-invoked-procedure</a></li><li><a href="#alter-domain-statement" title="alter-domain-statement">alter-domain-statement</a></li><li><a href="#alter-sequence-generator-statement" title="alter-sequence-generator-statement">alter-sequence-generator-statement</a></li><li><a href="#alter-table-constraint-definition" title="alter-table-constraint-definition">alter-table-constraint-definition</a></li><li><a href="#assertion-definition" title="assertion-definition">assertion-definition</a></li><li><a href="#cast-target" title="cast-target">cast-target</a></li><li><a href="#character-transliteration" title="character-transliteration">character-transliteration</a></li><li><a href="#collate-clause" title="collate-clause">collate-clause</a></li><li><a href="#collation-definition" title="collation-definition">collation-definition</a></li><li><a href="#constraint-name-definition" title="constraint-name-definition">constraint-name-definition</a></li><li><a href="#constraint-name-list" title="constraint-name-list">constraint-name-list</a></li><li><a href="#data-type-or-schema-qualified-name" title="data-type-or-schema-qualified-name">data-type-or-schema-qualified-name</a></li><li><a href="#domain-definition" title="domain-definition">domain-definition</a></li><li><a href="#drop-assertion-statement" title="drop-assertion-statement">drop-assertion-statement</a></li><li><a href="#drop-collation-statement" title="drop-collation-statement">drop-collation-statement</a></li><li><a href="#drop-domain-constraint-definition" title="drop-domain-constraint-definition">drop-domain-constraint-definition</a></li><li><a href="#drop-domain-statement" title="drop-domain-statement">drop-domain-statement</a></li><li><a href="#drop-sequence-generator-statement" title="drop-sequence-generator-statement">drop-sequence-generator-statement</a></li><li><a href="#drop-table-constraint-definition" title="drop-table-constraint-definition">drop-table-constraint-definition</a></li><li><a href="#drop-transliteration-statement" title="drop-transliteration-statement">drop-transliteration-statement</a></li><li><a href="#drop-trigger-statement" title="drop-trigger-statement">drop-trigger-statement</a></li><li><a href="#function-specification" title="function-specification">function-specification</a></li><li><a href="#member-name-alternatives" title="member-name-alternatives">member-name-alternatives</a></li><li><a href="#module-collation-specification" title="module-collation-specification">module-collation-specification</a></li><li><a href="#next-value-expression" title="next-value-expression">next-value-expression</a></li><li><a href="#object-name" title="object-name">object-name</a></li><li><a href="#routine-characteristic" title="routine-characteristic">routine-characteristic</a></li><li><a href="#sequence-generator-definition" title="sequence-generator-definition">sequence-generator-definition</a></li><li><a href="#specific-routine-designator" title="specific-routine-designator">specific-routine-designator</a></li><li><a href="#state-category" title="state-category">state-category</a></li><li><a href="#transcoding" title="transcoding">transcoding</a></li><li><a href="#transliteration-definition" title="transliteration-definition">transliteration-definition</a></li><li><a href="#transliteration-source" title="transliteration-source">transliteration-source</a></li><li><a href="#trigger-definition" title="trigger-definition">trigger-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + local_or_schema_qualified_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="23" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier_chain</text></a><path class="line" d="m17 10 h2 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="113 10 121 6 121 14"/> + <polygon points="113 10 105 6 105 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#local-or-schema-qualified-name" title="local_or_schema_qualified_name" shape="rect">local_or_schema_qualified_name</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + local_or_schema_qualifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">MODULE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name" xlink:title="schema_name" shape="rect"> + <rect x="43" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">schema_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m48 0 h4 m0 0 h32 m-108 0 h20 m88 0 h20 m-128 0 q10 0 10 10 m108 0 q0 -10 10 -10 m-118 10 v8 m108 0 v-8 m-108 8 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m80 0 h4 m23 -28 h-3"/> + <polygon points="157 10 165 6 165 14"/> + <polygon points="157 10 149 6 149 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#local-or-schema-qualifier" title="local_or_schema_qualifier" shape="rect">local_or_schema_qualifier</a></div> + <div>         ::= 'MODULE'</div> + <div>           | <a href="#schema-name" title="schema_name" shape="rect">schema_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="23" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier_chain</text></a><path class="line" d="m17 10 h2 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="113 10 121 6 121 14"/> + <polygon points="113 10 105 6 105 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#close-statement" title="close-statement">close-statement</a></li><li><a href="#declare-cursor" title="declare-cursor">declare-cursor</a></li><li><a href="#delete-statement-positioned" title="delete-statement-positioned">delete-statement-positioned</a></li><li><a href="#dynamic-cursor-name" title="dynamic-cursor-name">dynamic-cursor-name</a></li><li><a href="#dynamic-declare-cursor" title="dynamic-declare-cursor">dynamic-declare-cursor</a></li><li><a href="#fetch-statement" title="fetch-statement">fetch-statement</a></li><li><a href="#open-statement" title="open-statement">open-statement</a></li><li><a href="#preparable-dynamic-cursor-name" title="preparable-dynamic-cursor-name">preparable-dynamic-cursor-name</a></li><li><a href="#update-statement-positioned" title="update-statement-positioned">update-statement-positioned</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + host_parameter_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="111" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">:</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="41" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="45" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m10 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="101 10 109 6 109 14"/> + <polygon points="101 10 93 6 93 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#host-parameter-name" title="host_parameter_name" shape="rect">host_parameter_name</a></div> + <div>         ::= ':' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-value-specification" title="general-value-specification">general-value-specification</a></li><li><a href="#host-parameter-declaration" title="host-parameter-declaration">host-parameter-declaration</a></li><li><a href="#simple-value-specification" title="simple-value-specification">simple-value-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + external_routine_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="197" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="43" y="29" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">character_string_literal</text></a><path class="line" d="m17 10 h2 m20 0 h4 m46 0 h4 m0 0 h64 m-138 0 h20 m118 0 h20 m-158 0 q10 0 10 10 m138 0 q0 -10 10 -10 m-148 10 v8 m138 0 v-8 m-138 8 q0 10 10 10 m118 0 q10 0 10 -10 m-128 10 h4 m110 0 h4 m23 -28 h-3"/> + <polygon points="187 10 195 6 195 14"/> + <polygon points="187 10 179 6 179 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#external-routine-name" title="external_routine_name" shape="rect">external_routine_name</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div> + <div>           | <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-routine-characteristic" title="alter-routine-characteristic">alter-routine-characteristic</a></li><li><a href="#external-body-reference" title="external-body-reference">external-body-reference</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_set_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="311" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name" xlink:title="schema_name" shape="rect"> + <rect x="43" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">schema_name</text></a><rect x="131" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="34">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-language-identifier" xlink:title="SQL_language_identifier" shape="rect"> + <rect x="167" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="13">SQL_language_identifier</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m80 0 h4 m0 0 h4 m8 0 h4 m20 -21 h4 m120 0 h4 m3 0 h-3"/> + <polygon points="301 10 309 6 309 14"/> + <polygon points="301 10 293 6 293 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-set-name" title="character_set_name" shape="rect">character_set_name</a></div> + <div>         ::= ( <a href="#schema-name" title="schema_name" shape="rect">schema_name</a> '.' )? <a href="#sql-language-identifier" title="SQL_language_identifier" shape="rect">SQL_language_identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-set-definition" title="character-set-definition">character-set-definition</a></li><li><a href="#drop-character-set-statement" title="drop-character-set-statement">drop-character-set-statement</a></li><li><a href="#implementation-defined-character-set-name" title="implementation-defined-character-set-name">implementation-defined-character-set-name</a></li><li><a href="#object-name" title="object-name">object-name</a></li><li><a href="#standard-character-set-name" title="standard-character-set-name">standard-character-set-name</a></li><li><a href="#user-defined-character-set-name" title="user-defined-character-set-name">user-defined-character-set-name</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_resolved_user_defined_type_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="175" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-name" xlink:title="user_defined_type_name" shape="rect"> + <rect x="23" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">user_defined_type_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="165 10 173 6 173 14"/> + <polygon points="165 10 157 6 157 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a></div> + <div>         ::= <a href="#user-defined-type-name" title="user_defined_type_name" shape="rect">user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-transform-statement" title="alter-transform-statement">alter-transform-statement</a></li><li><a href="#alter-type-statement" title="alter-type-statement">alter-type-statement</a></li><li><a href="#drop-data-type-statement" title="drop-data-type-statement">drop-data-type-statement</a></li><li><a href="#drop-transform-statement" title="drop-transform-statement">drop-transform-statement</a></li><li><a href="#drop-user-defined-ordering-statement" title="drop-user-defined-ordering-statement">drop-user-defined-ordering-statement</a></li><li><a href="#method-specification-designator" title="method-specification-designator">method-specification-designator</a></li><li><a href="#object-name" title="object-name">object-name</a></li><li><a href="#specific-routine-designator" title="specific-routine-designator">specific-routine-designator</a></li><li><a href="#transform-definition" title="transform-definition">transform-definition</a></li><li><a href="#user-defined-ordering-definition" title="user-defined-ordering-definition">user-defined-ordering-definition</a></li><li><a href="#user-defined-type-body" title="user-defined-type-body">user-defined-type-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_type_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="23" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier_chain</text></a><path class="line" d="m17 10 h2 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="113 10 121 6 121 14"/> + <polygon points="113 10 105 6 105 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-type-name" title="user_defined_type_name" shape="rect">user_defined_type_name</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#path-resolved-user-defined-type-name" title="path-resolved-user-defined-type-name">path-resolved-user-defined-type-name</a></li><li><a href="#schema-resolved-user-defined-type-name" title="schema-resolved-user-defined-type-name">schema-resolved-user-defined-type-name</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extended-identifier" xlink:title="extended_identifier" shape="rect"> + <rect x="43" y="29" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">extended_identifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m46 0 h4 m0 0 h50 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v8 m124 0 v-8 m-124 8 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m96 0 h4 m23 -28 h-3"/> + <polygon points="173 10 181 6 181 14"/> + <polygon points="173 10 165 6 165 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-identifier" title="SQL_identifier" shape="rect">SQL_identifier</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div> + <div>           | <a href="#extended-identifier" title="extended_identifier" shape="rect">extended_identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#deallocate-prepared-statement" title="deallocate-prepared-statement">deallocate-prepared-statement</a></li><li><a href="#describe-input-statement" title="describe-input-statement">describe-input-statement</a></li><li><a href="#described-object" title="described-object">described-object</a></li><li><a href="#execute-statement" title="execute-statement">execute-statement</a></li><li><a href="#prepare-statement" title="prepare-statement">prepare-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + extended_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="295" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#scope-option" xlink:title="scope_option" shape="rect"> + <rect x="43" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">scope_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="143" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m20 -21 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="285 10 293 6 293 14"/> + <polygon points="285 10 277 6 277 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#extended-identifier" title="extended_identifier" shape="rect">extended_identifier</a></div> + <div>         ::= <a href="#scope-option" title="scope_option" shape="rect">scope_option</a>? <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-identifier" title="sql-identifier">sql-identifier</a></li><li><a href="#statement-cursor" title="statement-cursor">statement-cursor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_cursor_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="207" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="43" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">cursor_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extended-cursor-name" xlink:title="extended_cursor_name" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">extended_cursor_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m70 0 h4 m0 0 h50 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v8 m148 0 v-8 m-148 8 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m120 0 h4 m23 -28 h-3"/> + <polygon points="197 10 205 6 205 14"/> + <polygon points="197 10 189 6 189 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-cursor-name" title="dynamic_cursor_name" shape="rect">dynamic_cursor_name</a></div> + <div>         ::= <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a></div> + <div>           | <a href="#extended-cursor-name" title="extended_cursor_name" shape="rect">extended_cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#dynamic-close-statement" title="dynamic-close-statement">dynamic-close-statement</a></li><li><a href="#dynamic-delete-statement-positioned" title="dynamic-delete-statement-positioned">dynamic-delete-statement-positioned</a></li><li><a href="#dynamic-fetch-statement" title="dynamic-fetch-statement">dynamic-fetch-statement</a></li><li><a href="#dynamic-open-statement" title="dynamic-open-statement">dynamic-open-statement</a></li><li><a href="#dynamic-update-statement-positioned" title="dynamic-update-statement-positioned">dynamic-update-statement-positioned</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + extended_cursor_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="295" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#scope-option" xlink:title="scope_option" shape="rect"> + <rect x="43" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">scope_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="143" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m20 -21 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="285 10 293 6 293 14"/> + <polygon points="285 10 277 6 277 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#extended-cursor-name" title="extended_cursor_name" shape="rect">extended_cursor_name</a></div> + <div>         ::= <a href="#scope-option" title="scope_option" shape="rect">scope_option</a>? <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#allocate-cursor-statement" title="allocate-cursor-statement">allocate-cursor-statement</a></li><li><a href="#described-object" title="described-object">described-object</a></li><li><a href="#dynamic-cursor-name" title="dynamic-cursor-name">dynamic-cursor-name</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + descriptor_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extended-descriptor-name" xlink:title="extended_descriptor_name" shape="rect"> + <rect x="43" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">extended_descriptor_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m46 0 h4 m0 0 h90 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m23 -28 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#descriptor-name" title="descriptor_name" shape="rect">descriptor_name</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div> + <div>           | <a href="#extended-descriptor-name" title="extended_descriptor_name" shape="rect">extended_descriptor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#allocate-descriptor-statement" title="allocate-descriptor-statement">allocate-descriptor-statement</a></li><li><a href="#deallocate-descriptor-statement" title="deallocate-descriptor-statement">deallocate-descriptor-statement</a></li><li><a href="#get-descriptor-statement" title="get-descriptor-statement">get-descriptor-statement</a></li><li><a href="#into-descriptor" title="into-descriptor">into-descriptor</a></li><li><a href="#set-descriptor-statement" title="set-descriptor-statement">set-descriptor-statement</a></li><li><a href="#using-descriptor" title="using-descriptor">using-descriptor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + extended_descriptor_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="295" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#scope-option" xlink:title="scope_option" shape="rect"> + <rect x="43" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">scope_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="143" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m20 -21 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="285 10 293 6 293 14"/> + <polygon points="285 10 277 6 277 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#extended-descriptor-name" title="extended_descriptor_name" shape="rect">extended_descriptor_name</a></div> + <div>         ::= <a href="#scope-option" title="scope_option" shape="rect">scope_option</a>? <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#descriptor-name" title="descriptor-name">descriptor-name</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + scope_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="131" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">GLOBAL</text> + <rect x="43" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LOCAL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m44 0 h4 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m38 0 h4 m0 0 h6 m23 -28 h-3"/> + <polygon points="121 10 129 6 129 14"/> + <polygon points="121 10 113 6 113 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#scope-option" title="scope_option" shape="rect">scope_option</a></div> + <div>         ::= 'GLOBAL'</div> + <div>           | 'LOCAL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#extended-cursor-name" title="extended-cursor-name">extended-cursor-name</a></li><li><a href="#extended-descriptor-name" title="extended-descriptor-name">extended-descriptor-name</a></li><li><a href="#extended-identifier" title="extended-identifier">extended-identifier</a></li><li><a href="#preparable-dynamic-cursor-name" title="preparable-dynamic-cursor-name">preparable-dynamic-cursor-name</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + data_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="409" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#predefined-type" xlink:title="predefined_type" shape="rect"> + <rect x="43" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">predefined_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-type" xlink:title="row_type" shape="rect"> + <rect x="43" y="29" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">row_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-type" xlink:title="reference_type" shape="rect"> + <rect x="43" y="57" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">reference_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#presto-generic-type" xlink:title="presto_generic_type" shape="rect"> + <rect x="43" y="85" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">presto_generic_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="43" y="113" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">path_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collection-type" xlink:title="collection_type" shape="rect"> + <rect x="291" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="295" y="34">collection_type</text></a><path class="line" d="m17 10 h2 m20 0 h4 m84 0 h4 m0 0 h116 m-228 0 h20 m208 0 h20 m-248 0 q10 0 10 10 m228 0 q0 -10 10 -10 m-238 10 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m52 0 h4 m0 0 h148 m-218 -10 v20 m228 0 v-20 m-228 20 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m78 0 h4 m0 0 h122 m-218 -10 v20 m228 0 v-20 m-228 20 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m104 0 h4 m0 0 h96 m-218 -10 v20 m228 0 v-20 m-228 20 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m200 0 h4 m40 -112 h10 m0 0 h72 m-102 0 h20 m82 0 h20 m-122 0 q10 0 10 10 m102 0 q0 -10 10 -10 m-112 10 v1 m102 0 v-1 m-102 1 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m74 0 h4 m23 -21 h-3"/> + <polygon points="399 10 407 6 407 14"/> + <polygon points="399 10 391 6 391 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#data-type" title="data_type" shape="rect">data_type</a></div> + <div>         ::= ( <a href="#predefined-type" title="predefined_type" shape="rect">predefined_type</a> | <a href="#row-type" title="row_type" shape="rect">row_type</a> | <a href="#reference-type" title="reference_type" shape="rect">reference_type</a> | <a href="#presto-generic-type" title="presto_generic_type" shape="rect">presto_generic_type</a> | <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a> ) <a href="#collection-type" title="collection_type" shape="rect">collection_type</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-data-type-clause" title="alter-column-data-type-clause">alter-column-data-type-clause</a></li><li><a href="#attribute-definition" title="attribute-definition">attribute-definition</a></li><li><a href="#cast-target" title="cast-target">cast-target</a></li><li><a href="#data-type-list" title="data-type-list">data-type-list</a></li><li><a href="#data-type-or-schema-qualified-name" title="data-type-or-schema-qualified-name">data-type-or-schema-qualified-name</a></li><li><a href="#field-definition" title="field-definition">field-definition</a></li><li><a href="#host-parameter-data-type" title="host-parameter-data-type">host-parameter-data-type</a></li><li><a href="#parameter-type" title="parameter-type">parameter-type</a></li><li><a href="#presto-array-type" title="presto-array-type">presto-array-type</a></li><li><a href="#presto-generic-type" title="presto-generic-type">presto-generic-type</a></li><li><a href="#presto-map-type" title="presto-map-type">presto-map-type</a></li><li><a href="#representation" title="representation">representation</a></li><li><a href="#result-cast-from-type" title="result-cast-from-type">result-cast-from-type</a></li><li><a href="#returns-data-type" title="returns-data-type">returns-data-type</a></li><li><a href="#sequence-generator-data-type-option" title="sequence-generator-data-type-option">sequence-generator-data-type-option</a></li><li><a href="#source-data-type" title="source-data-type">source-data-type</a></li><li><a href="#table-function-column-list-element" title="table-function-column-list-element">table-function-column-list-element</a></li><li><a href="#target-data-type" title="target-data-type">target-data-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + predefined_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="635" height="210"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-type" xlink:title="character_string_type" shape="rect"> + <rect x="63" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">character_string_type</text></a><rect x="199" y="22" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="34">CHARACTER</text> + <rect x="269" y="22" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="34">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="301" y="22" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="305" y="34">character_set_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#national-character-string-type" xlink:title="national_character_string_type" shape="rect"> + <rect x="63" y="50" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="62">national_character_string_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collate-clause" xlink:title="collate_clause" shape="rect"> + <rect x="499" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="503" y="34">collate_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-string-type" xlink:title="binary_string_type" shape="rect"> + <rect x="43" y="78" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="90">binary_string_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-type" xlink:title="numeric_type" shape="rect"> + <rect x="43" y="106" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="118">numeric_type</text></a><rect x="43" y="134" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="146">BOOLEAN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-type" xlink:title="datetime_type" shape="rect"> + <rect x="43" y="162" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="174">datetime_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-type" xlink:title="interval_type" shape="rect"> + <rect x="43" y="190" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="202">interval_type</text></a><path class="line" d="m17 10 h2 m40 0 h4 m108 0 h4 m20 0 h10 m0 0 h230 m-260 0 h20 m240 0 h20 m-280 0 q10 0 10 10 m260 0 q0 -10 10 -10 m-270 10 v1 m260 0 v-1 m-260 1 q0 10 10 10 m240 0 q10 0 10 -10 m-250 10 h4 m62 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m130 0 h4 m-396 -21 h20 m396 0 h20 m-436 0 q10 0 10 10 m416 0 q0 -10 10 -10 m-426 10 v29 m416 0 v-29 m-416 29 q0 10 10 10 m396 0 q10 0 10 -10 m-406 10 h4 m150 0 h4 m0 0 h238 m40 -49 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m-556 -21 h20 m556 0 h20 m-596 0 q10 0 10 10 m576 0 q0 -10 10 -10 m-586 10 v57 m576 0 v-57 m-576 57 q0 10 10 10 m556 0 q10 0 10 -10 m-566 10 h4 m94 0 h4 m0 0 h454 m-566 -10 v20 m576 0 v-20 m-576 20 v8 m576 0 v-8 m-576 8 q0 10 10 10 m556 0 q10 0 10 -10 m-566 10 h4 m72 0 h4 m0 0 h476 m-566 -10 v20 m576 0 v-20 m-576 20 v8 m576 0 v-8 m-576 8 q0 10 10 10 m556 0 q10 0 10 -10 m-566 10 h4 m54 0 h4 m0 0 h494 m-566 -10 v20 m576 0 v-20 m-576 20 v8 m576 0 v-8 m-576 8 q0 10 10 10 m556 0 q10 0 10 -10 m-566 10 h4 m76 0 h4 m0 0 h472 m-566 -10 v20 m576 0 v-20 m-576 20 v8 m576 0 v-8 m-576 8 q0 10 10 10 m556 0 q10 0 10 -10 m-566 10 h4 m68 0 h4 m0 0 h480 m23 -189 h-3"/> + <polygon points="625 10 633 6 633 14"/> + <polygon points="625 10 617 6 617 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#predefined-type" title="predefined_type" shape="rect">predefined_type</a></div> + <div>         ::= ( <a href="#character-string-type" title="character_string_type" shape="rect">character_string_type</a> ( 'CHARACTER' 'SET' <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a> )? | <a href="#national-character-string-type" title="national_character_string_type" shape="rect">national_character_string_type</a> ) <a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a>?</div> + <div>           | <a href="#binary-string-type" title="binary_string_type" shape="rect">binary_string_type</a></div> + <div>           | <a href="#numeric-type" title="numeric_type" shape="rect">numeric_type</a></div> + <div>           | 'BOOLEAN'</div> + <div>           | <a href="#datetime-type" title="datetime_type" shape="rect">datetime_type</a></div> + <div>           | <a href="#interval-type" title="interval_type" shape="rect">interval_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#data-type" title="data-type">data-type</a></li><li><a href="#domain-definition" title="domain-definition">domain-definition</a></li><li><a href="#representation" title="representation">representation</a></li><li><a href="#user-defined-representation" title="user-defined-representation">user-defined-representation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_string_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="461" height="140"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">CHARACTER</text> + <rect x="63" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">CHAR</text> + <rect x="193" y="43" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="197" y="55">VARYING</text> + <rect x="271" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-length" xlink:title="character_length" shape="rect"> + <rect x="291" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="295" y="34">character_length</text></a><rect x="385" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="389" y="34">)</text> + <rect x="43" y="71" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="83">VARCHAR</text> + <rect x="123" y="92" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="127" y="104">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-length" xlink:title="character_length" shape="rect"> + <rect x="143" y="92" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="104">character_length</text></a><rect x="237" y="92" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="241" y="104">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-large-object-type" xlink:title="character_large_object_type" shape="rect"> + <rect x="43" y="120" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="132">character_large_object_type</text></a><path class="line" d="m17 10 h2 m40 0 h4 m62 0 h4 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m34 0 h4 m0 0 h28 m40 -28 h10 m0 0 h222 m-252 0 h20 m232 0 h20 m-272 0 q10 0 10 10 m252 0 q0 -10 10 -10 m-262 10 v1 m252 0 v-1 m-252 1 q0 10 10 10 m232 0 q10 0 10 -10 m-222 10 h10 m0 0 h48 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v1 m78 0 v-1 m-78 1 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m20 -21 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m-382 -21 h20 m382 0 h20 m-422 0 q10 0 10 10 m402 0 q0 -10 10 -10 m-412 10 v50 m402 0 v-50 m-402 50 q0 10 10 10 m382 0 q10 0 10 -10 m-392 10 h4 m52 0 h4 m20 0 h10 m0 0 h124 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v1 m154 0 v-1 m-154 1 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m20 -21 h148 m-392 -10 v20 m402 0 v-20 m-402 20 v29 m402 0 v-29 m-402 29 q0 10 10 10 m382 0 q10 0 10 -10 m-392 10 h4 m138 0 h4 m0 0 h236 m23 -119 h-3"/> + <polygon points="451 10 459 6 459 14"/> + <polygon points="451 10 443 6 443 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-string-type" title="character_string_type" shape="rect">character_string_type</a></div> + <div>         ::= ( 'CHARACTER' | 'CHAR' ) ( 'VARYING'? '(' <a href="#character-length" title="character_length" shape="rect">character_length</a> ')' )?</div> + <div>           | 'VARCHAR' ( '(' <a href="#character-length" title="character_length" shape="rect">character_length</a> ')' )?</div> + <div>           | <a href="#character-large-object-type" title="character_large_object_type" shape="rect">character_large_object_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predefined-type" title="predefined-type">predefined-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_large_object_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="521" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">CHARACTER</text> + <rect x="63" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">CHAR</text> + <rect x="153" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="13">LARGE</text> + <rect x="199" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="13">OBJECT</text> + <rect x="43" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">CLOB</text> + <rect x="289" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="293" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-large-object-length" xlink:title="character_large_object_length" shape="rect"> + <rect x="309" y="22" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="313" y="34">character_large_object_length</text></a><rect x="465" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="469" y="34">)</text> + <path class="line" d="m17 10 h2 m40 0 h4 m62 0 h4 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m34 0 h4 m0 0 h28 m20 -28 h4 m38 0 h4 m0 0 h4 m42 0 h4 m-226 0 h20 m206 0 h20 m-246 0 q10 0 10 10 m226 0 q0 -10 10 -10 m-236 10 v36 m226 0 v-36 m-226 36 q0 10 10 10 m206 0 q10 0 10 -10 m-216 10 h4 m32 0 h4 m0 0 h166 m40 -56 h10 m0 0 h186 m-216 0 h20 m196 0 h20 m-236 0 q10 0 10 10 m216 0 q0 -10 10 -10 m-226 10 v1 m216 0 v-1 m-216 1 q0 10 10 10 m196 0 q10 0 10 -10 m-206 10 h4 m12 0 h4 m0 0 h4 m148 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="511 10 519 6 519 14"/> + <polygon points="511 10 503 6 503 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-large-object-type" title="character_large_object_type" shape="rect">character_large_object_type</a></div> + <div>         ::= ( ( 'CHARACTER' | 'CHAR' ) 'LARGE' 'OBJECT' | 'CLOB' ) ( '(' <a href="#character-large-object-length" title="character_large_object_length" shape="rect">character_large_object_length</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-string-type" title="character-string-type">character-string-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + national_character_string_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="565" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">NATIONAL</text> + <rect x="147" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="13">CHARACTER</text> + <rect x="147" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="41">CHAR</text> + <rect x="63" y="57" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="69">NCHAR</text> + <rect x="297" y="43" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="301" y="55">VARYING</text> + <rect x="375" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-length" xlink:title="character_length" shape="rect"> + <rect x="395" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="399" y="34">character_length</text></a><rect x="489" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="493" y="34">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#national-character-large-object-type" xlink:title="national_character_large_object_type" shape="rect"> + <rect x="43" y="85" width="180" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">national_character_large_object_type</text></a><path class="line" d="m17 10 h2 m40 0 h4 m56 0 h4 m20 0 h4 m62 0 h4 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m34 0 h4 m0 0 h28 m-174 -28 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v36 m194 0 v-36 m-194 36 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m40 0 h4 m0 0 h126 m40 -56 h10 m0 0 h222 m-252 0 h20 m232 0 h20 m-272 0 q10 0 10 10 m252 0 q0 -10 10 -10 m-262 10 v1 m252 0 v-1 m-252 1 q0 10 10 10 m232 0 q10 0 10 -10 m-222 10 h10 m0 0 h48 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v1 m78 0 v-1 m-78 1 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m20 -21 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m-486 -21 h20 m486 0 h20 m-526 0 q10 0 10 10 m506 0 q0 -10 10 -10 m-516 10 v64 m506 0 v-64 m-506 64 q0 10 10 10 m486 0 q10 0 10 -10 m-496 10 h4 m180 0 h4 m0 0 h298 m23 -84 h-3"/> + <polygon points="555 10 563 6 563 14"/> + <polygon points="555 10 547 6 547 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#national-character-string-type" title="national_character_string_type" shape="rect">national_character_string_type</a></div> + <div>         ::= ( 'NATIONAL' ( 'CHARACTER' | 'CHAR' ) | 'NCHAR' ) ( 'VARYING'? '(' <a href="#character-length" title="character_length" shape="rect">character_length</a> ')' )?</div> + <div>           | <a href="#national-character-large-object-type" title="national_character_large_object_type" shape="rect">national_character_large_object_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predefined-type" title="predefined-type">predefined-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + national_character_large_object_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="585" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">NATIONAL</text> + <rect x="127" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="13">CHARACTER</text> + <rect x="63" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">NCHAR</text> + <rect x="217" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="13">LARGE</text> + <rect x="263" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="13">OBJECT</text> + <rect x="43" y="57" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">NCLOB</text> + <rect x="353" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="357" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-large-object-length" xlink:title="character_large_object_length" shape="rect"> + <rect x="373" y="22" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="377" y="34">character_large_object_length</text></a><rect x="529" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="533" y="34">)</text> + <path class="line" d="m17 10 h2 m40 0 h4 m56 0 h4 m0 0 h4 m62 0 h4 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v8 m154 0 v-8 m-154 8 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m40 0 h4 m0 0 h86 m20 -28 h4 m38 0 h4 m0 0 h4 m42 0 h4 m-290 0 h20 m270 0 h20 m-310 0 q10 0 10 10 m290 0 q0 -10 10 -10 m-300 10 v36 m290 0 v-36 m-290 36 q0 10 10 10 m270 0 q10 0 10 -10 m-280 10 h4 m40 0 h4 m0 0 h222 m40 -56 h10 m0 0 h186 m-216 0 h20 m196 0 h20 m-236 0 q10 0 10 10 m216 0 q0 -10 10 -10 m-226 10 v1 m216 0 v-1 m-216 1 q0 10 10 10 m196 0 q10 0 10 -10 m-206 10 h4 m12 0 h4 m0 0 h4 m148 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="575 10 583 6 583 14"/> + <polygon points="575 10 567 6 567 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#national-character-large-object-type" title="national_character_large_object_type" shape="rect">national_character_large_object_type</a></div> + <div>         ::= ( ( 'NATIONAL' 'CHARACTER' | 'NCHAR' ) 'LARGE' 'OBJECT' | 'NCLOB' ) ( + '(' <a href="#character-large-object-length" title="character_large_object_length" shape="rect">character_large_object_length</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#national-character-string-type" title="national-character-string-type">national-character-string-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_string_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="405" height="140"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">BINARY</text> + <rect x="133" y="43" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="55">VARYING</text> + <rect x="211" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="215" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="231" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="235" y="34">unsigned_integer</text></a><rect x="329" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="333" y="34">)</text> + <rect x="43" y="71" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="83">VARBINARY</text> + <rect x="133" y="92" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="104">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="153" y="92" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="157" y="104">unsigned_integer</text></a><rect x="251" y="92" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="255" y="104">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-large-object-string-type" xlink:title="binary_large_object_string_type" shape="rect"> + <rect x="43" y="120" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="132">binary_large_object_string_type</text></a><path class="line" d="m17 10 h2 m20 0 h4 m42 0 h4 m20 0 h10 m0 0 h226 m-256 0 h20 m236 0 h20 m-276 0 q10 0 10 10 m256 0 q0 -10 10 -10 m-266 10 v1 m256 0 v-1 m-256 1 q0 10 10 10 m236 0 q10 0 10 -10 m-226 10 h10 m0 0 h48 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v1 m78 0 v-1 m-78 1 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m20 -21 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m-326 -21 h20 m326 0 h20 m-366 0 q10 0 10 10 m346 0 q0 -10 10 -10 m-356 10 v50 m346 0 v-50 m-346 50 q0 10 10 10 m326 0 q10 0 10 -10 m-336 10 h4 m62 0 h4 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m20 -21 h78 m-336 -10 v20 m346 0 v-20 m-346 20 v29 m346 0 v-29 m-346 29 q0 10 10 10 m326 0 q10 0 10 -10 m-336 10 h4 m156 0 h4 m0 0 h162 m23 -119 h-3"/> + <polygon points="395 10 403 6 403 14"/> + <polygon points="395 10 387 6 387 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-string-type" title="binary_string_type" shape="rect">binary_string_type</a></div> + <div>         ::= 'BINARY' ( 'VARYING'? '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ')' )?</div> + <div>           | 'VARBINARY' ( '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ')' )?</div> + <div>           | <a href="#binary-large-object-string-type" title="binary_large_object_string_type" shape="rect">binary_large_object_string_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predefined-type" title="predefined-type">predefined-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_large_object_string_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="413" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">BINARY</text> + <rect x="93" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">LARGE</text> + <rect x="139" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="13">OBJECT</text> + <rect x="43" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">BLOB</text> + <rect x="229" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#large-object-length" xlink:title="large_object_length" shape="rect"> + <rect x="249" y="22" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="34">large_object_length</text></a><rect x="357" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="361" y="34">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m42 0 h4 m0 0 h4 m38 0 h4 m0 0 h4 m42 0 h4 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m32 0 h4 m0 0 h106 m40 -28 h10 m0 0 h138 m-168 0 h20 m148 0 h20 m-188 0 q10 0 10 10 m168 0 q0 -10 10 -10 m-178 10 v1 m168 0 v-1 m-168 1 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m12 0 h4 m0 0 h4 m100 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="403 10 411 6 411 14"/> + <polygon points="403 10 395 6 395 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-large-object-string-type" title="binary_large_object_string_type" shape="rect">binary_large_object_string_type</a></div> + <div>         ::= ( 'BINARY' 'LARGE' 'OBJECT' | 'BLOB' ) ( '(' <a href="#large-object-length" title="large_object_length" shape="rect">large_object_length</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-string-type" title="binary-string-type">binary-string-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + numeric_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#exact-numeric-type" xlink:title="exact_numeric_type" shape="rect"> + <rect x="43" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">exact_numeric_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#approximate-numeric-type" xlink:title="approximate_numeric_type" shape="rect"> + <rect x="43" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">approximate_numeric_type</text></a><path class="line" d="m17 10 h2 m20 0 h4 m102 0 h4 m0 0 h34 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m23 -28 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#numeric-type" title="numeric_type" shape="rect">numeric_type</a></div> + <div>         ::= <a href="#exact-numeric-type" title="exact_numeric_type" shape="rect">exact_numeric_type</a></div> + <div>           | <a href="#approximate-numeric-type" title="approximate_numeric_type" shape="rect">approximate_numeric_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predefined-type" title="predefined-type">predefined-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + exact_numeric_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="509" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">NUMERIC</text> + <rect x="63" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">DECIMAL</text> + <rect x="63" y="57" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="69">DEC</text> + <rect x="161" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="181" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="34">unsigned_integer</text></a><rect x="299" y="43" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="303" y="55">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="315" y="43" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="319" y="55">unsigned_integer</text></a><rect x="433" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="437" y="34">)</text> + <rect x="43" y="85" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">SMALLINT</text> + <rect x="43" y="113" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">INTEGER</text> + <rect x="43" y="141" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">INT</text> + <rect x="43" y="169" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">BIGINT</text> + <path class="line" d="m17 10 h2 m40 0 h4 m50 0 h4 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m48 0 h4 m0 0 h2 m-68 -10 v20 m78 0 v-20 m-78 20 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m26 0 h4 m0 0 h24 m40 -56 h10 m0 0 h282 m-312 0 h20 m292 0 h20 m-332 0 q10 0 10 10 m312 0 q0 -10 10 -10 m-322 10 v1 m312 0 v-1 m-312 1 q0 10 10 10 m292 0 q10 0 10 -10 m-302 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m20 0 h10 m0 0 h104 m-134 0 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v1 m134 0 v-1 m-134 1 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m8 0 h4 m0 0 h4 m90 0 h4 m20 -21 h4 m12 0 h4 m-430 -21 h20 m430 0 h20 m-470 0 q10 0 10 10 m450 0 q0 -10 10 -10 m-460 10 v64 m450 0 v-64 m-450 64 q0 10 10 10 m430 0 q10 0 10 -10 m-440 10 h4 m54 0 h4 m0 0 h368 m-440 -10 v20 m450 0 v-20 m-450 20 v8 m450 0 v-8 m-450 8 q0 10 10 10 m430 0 q10 0 10 -10 m-440 10 h4 m46 0 h4 m0 0 h376 m-440 -10 v20 m450 0 v-20 m-450 20 v8 m450 0 v-8 m-450 8 q0 10 10 10 m430 0 q10 0 10 -10 m-440 10 h4 m24 0 h4 m0 0 h398 m-440 -10 v20 m450 0 v-20 m-450 20 v8 m450 0 v-8 m-450 8 q0 10 10 10 m430 0 q10 0 10 -10 m-440 10 h4 m40 0 h4 m0 0 h382 m23 -168 h-3"/> + <polygon points="499 10 507 6 507 14"/> + <polygon points="499 10 491 6 491 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#exact-numeric-type" title="exact_numeric_type" shape="rect">exact_numeric_type</a></div> + <div>         ::= ( 'NUMERIC' | 'DECIMAL' | 'DEC' ) ( '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ( ',' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> )? ')' )?</div> + <div>           | 'SMALLINT'</div> + <div>           | 'INTEGER'</div> + <div>           | 'INT'</div> + <div>           | 'BIGINT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-type" title="numeric-type">numeric-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + approximate_numeric_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="303" height="119"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">FLOAT</text> + <rect x="109" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="113" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="129" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="133" y="34">unsigned_integer</text></a><rect x="227" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="34">)</text> + <rect x="43" y="50" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">REAL</text> + <rect x="43" y="78" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="90">DOUBLE</text> + <rect x="117" y="99" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="111">PRECISION</text> + <path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m-224 -21 h20 m224 0 h20 m-264 0 q10 0 10 10 m244 0 q0 -10 10 -10 m-254 10 v29 m244 0 v-29 m-244 29 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m30 0 h4 m0 0 h186 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m46 0 h4 m20 0 h10 m0 0 h58 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v1 m88 0 v-1 m-88 1 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m20 -21 h62 m23 -77 h-3"/> + <polygon points="293 10 301 6 301 14"/> + <polygon points="293 10 285 6 285 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#approximate-numeric-type" title="approximate_numeric_type" shape="rect">approximate_numeric_type</a></div> + <div>         ::= 'FLOAT' ( '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ')' )?</div> + <div>           | 'REAL'</div> + <div>           | 'DOUBLE' 'PRECISION'?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-type" title="numeric-type">numeric-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_length +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="275" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">unsigned_integer</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="141" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="34">char_length_units</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m20 0 h10 m0 0 h88 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v1 m118 0 v-1 m-118 1 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m90 0 h4 m23 -21 h-3"/> + <polygon points="265 10 273 6 273 14"/> + <polygon points="265 10 257 6 257 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-length" title="character_length" shape="rect">character_length</a></div> + <div>         ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-string-type" title="character-string-type">character-string-type</a></li><li><a href="#national-character-string-type" title="national-character-string-type">national-character-string-type</a></li><li><a href="#normalize-function-result-length" title="normalize-function-result-length">normalize-function-result-length</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + large_object_length +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="273" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">unsigned_integer</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiplier" xlink:title="multiplier" shape="rect"> + <rect x="161" y="22" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="34">multiplier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#large-object-length-token" xlink:title="large_object_length_token" shape="rect"> + <rect x="43" y="50" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="62">large_object_length_token</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m20 0 h10 m0 0 h46 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v1 m76 0 v-1 m-76 1 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m-194 -21 h20 m194 0 h20 m-234 0 q10 0 10 10 m214 0 q0 -10 10 -10 m-224 10 v29 m214 0 v-29 m-214 29 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m132 0 h4 m0 0 h54 m23 -49 h-3"/> + <polygon points="263 10 271 6 271 14"/> + <polygon points="263 10 255 6 255 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#large-object-length" title="large_object_length" shape="rect">large_object_length</a></div> + <div>         ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> <a href="#multiplier" title="multiplier" shape="rect">multiplier</a>?</div> + <div>           | <a href="#large-object-length-token" title="large_object_length_token" shape="rect">large_object_length_token</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-large-object-string-type" title="binary-large-object-string-type">binary-large-object-string-type</a></li><li><a href="#character-large-object-length" title="character-large-object-length">character-large-object-length</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_large_object_length +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="285" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#large-object-length" xlink:title="large_object_length" shape="rect"> + <rect x="23" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">large_object_length</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="151" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="155" y="34">char_length_units</text></a><path class="line" d="m17 10 h2 m0 0 h4 m100 0 h4 m20 0 h10 m0 0 h88 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v1 m118 0 v-1 m-118 1 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m90 0 h4 m23 -21 h-3"/> + <polygon points="275 10 283 6 283 14"/> + <polygon points="275 10 267 6 267 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-large-object-length" title="character_large_object_length" shape="rect">character_large_object_length</a></div> + <div>         ::= <a href="#large-object-length" title="large_object_length" shape="rect">large_object_length</a> <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-large-object-type" title="character-large-object-type">character-large-object-type</a></li><li><a href="#national-character-large-object-type" title="national-character-large-object-type">national-character-large-object-type</a></li><li><a href="#normalize-function-result-length" title="normalize-function-result-length">normalize-function-result-length</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + char_length_units +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CHARACTERS</text> + <rect x="43" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">OCTETS</text> + <path class="line" d="m17 10 h2 m20 0 h4 m68 0 h4 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v8 m96 0 v-8 m-96 8 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m44 0 h4 m0 0 h24 m23 -28 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a></div> + <div>         ::= 'CHARACTERS'</div> + <div>           | 'OCTETS'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#char-length-expression" title="char-length-expression">char-length-expression</a></li><li><a href="#character-large-object-length" title="character-large-object-length">character-large-object-length</a></li><li><a href="#character-length" title="character-length">character-length</a></li><li><a href="#character-overlay-function" title="character-overlay-function">character-overlay-function</a></li><li><a href="#character-position-expression" title="character-position-expression">character-position-expression</a></li><li><a href="#character-substring-function" title="character-substring-function">character-substring-function</a></li><li><a href="#regex-occurrences-function" title="regex-occurrences-function">regex-occurrences-function</a></li><li><a href="#regex-position-expression" title="regex-position-expression">regex-position-expression</a></li><li><a href="#regex-substring-function" title="regex-substring-function">regex-substring-function</a></li><li><a href="#regex-transliteration" title="regex-transliteration">regex-transliteration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + datetime_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="551" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">DATE</text> + <rect x="63" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">TIME</text> + <rect x="63" y="57" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="69">TIMESTAMP</text> + <rect x="173" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="62">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="193" y="50" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="62">unsigned_integer</text></a><rect x="291" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="295" y="62">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#with-or-without-time-zone" xlink:title="with_or_without_time_zone" shape="rect"> + <rect x="351" y="50" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="355" y="62">with_or_without_time_zone</text></a><path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h432 m-492 0 h20 m472 0 h20 m-512 0 q10 0 10 10 m492 0 q0 -10 10 -10 m-502 10 v8 m492 0 v-8 m-492 8 q0 10 10 10 m472 0 q10 0 10 -10 m-462 10 h4 m30 0 h4 m0 0 h32 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m62 0 h4 m40 -28 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m40 -21 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m43 -49 h-3"/> + <polygon points="541 10 549 6 549 14"/> + <polygon points="541 10 533 6 533 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#datetime-type" title="datetime_type" shape="rect">datetime_type</a></div> + <div>         ::= 'DATE'</div> + <div>           | ( 'TIME' | 'TIMESTAMP' ) ( '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ')' )? <a href="#with-or-without-time-zone" title="with_or_without_time_zone" shape="rect">with_or_without_time_zone</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predefined-type" title="predefined-type">predefined-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + with_or_without_time_zone +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">WITH</text> + <rect x="43" y="29" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">WITHOUT</text> + <rect x="125" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">TIME</text> + <rect x="163" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="13">ZONE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m34 0 h4 m0 0 h20 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v8 m82 0 v-8 m-82 8 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m54 0 h4 m20 -28 h4 m30 0 h4 m0 0 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#with-or-without-time-zone" title="with_or_without_time_zone" shape="rect">with_or_without_time_zone</a></div> + <div>         ::= ( 'WITH' | 'WITHOUT' ) 'TIME' 'ZONE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-type" title="datetime-type">datetime-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="187" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">INTERVAL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-qualifier" xlink:title="interval_qualifier" shape="rect"> + <rect x="83" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">interval_qualifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m80 0 h4 m3 0 h-3"/> + <polygon points="177 10 185 6 185 14"/> + <polygon points="177 10 169 6 169 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-type" title="interval_type" shape="rect">interval_type</a></div> + <div>         ::= 'INTERVAL' <a href="#interval-qualifier" title="interval_qualifier" shape="rect">interval_qualifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predefined-type" title="predefined-type">predefined-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="169" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ROW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-type-body" xlink:title="row_type_body" shape="rect"> + <rect x="63" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">row_type_body</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m82 0 h4 m3 0 h-3"/> + <polygon points="159 10 167 6 167 14"/> + <polygon points="159 10 151 6 151 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-type" title="row_type" shape="rect">row_type</a> ::= 'ROW' <a href="#row-type-body" title="row_type_body" shape="rect">row_type_body</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#data-type" title="data-type">data-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_type_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#field-definition" xlink:title="field_definition" shape="rect"> + <rect x="63" y="29" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">field_definition</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="163" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m72 0 h4 m-100 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m80 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-80 0 h4 m8 0 h4 m0 0 h64 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="189 38 197 34 197 42"/> + <polygon points="189 38 181 34 181 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-type-body" title="row_type_body" shape="rect">row_type_body</a></div> + <div>         ::= '(' <a href="#field-definition" title="field_definition" shape="rect">field_definition</a> ( ',' <a href="#field-definition" title="field_definition" shape="rect">field_definition</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#row-type" title="row-type">row-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + reference_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="323" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">REF</text> + <rect x="55" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#referenced-type" xlink:title="referenced_type" shape="rect"> + <rect x="75" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">referenced_type</text></a><rect x="167" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="171" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#scope-clause" xlink:title="scope_clause" shape="rect"> + <rect x="207" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="34">scope_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m84 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m23 -21 h-3"/> + <polygon points="313 10 321 6 321 14"/> + <polygon points="313 10 305 6 305 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#reference-type" title="reference_type" shape="rect">reference_type</a></div> + <div>         ::= 'REF' '(' <a href="#referenced-type" title="referenced_type" shape="rect">referenced_type</a> ')' <a href="#scope-clause" title="scope_clause" shape="rect">scope_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#data-type" title="data-type">data-type</a></li><li><a href="#target-subtype" title="target-subtype">target-subtype</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + scope_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="159" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SCOPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="69" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="73" y="13">table_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m66 0 h4 m3 0 h-3"/> + <polygon points="149 10 157 6 157 14"/> + <polygon points="149 10 141 6 141 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#scope-clause" title="scope_clause" shape="rect">scope_clause</a></div> + <div>         ::= 'SCOPE' <a href="#table-name" title="table_name" shape="rect">table_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-column-scope-clause" title="add-column-scope-clause">add-column-scope-clause</a></li><li><a href="#column-option-list" title="column-option-list">column-option-list</a></li><li><a href="#reference-type" title="reference-type">reference-type</a></li><li><a href="#view-column-option" title="view-column-option">view-column-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + referenced_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="23" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">path_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m200 0 h4 m3 0 h-3"/> + <polygon points="237 10 245 6 245 14"/> + <polygon points="237 10 229 6 229 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#referenced-type" title="referenced_type" shape="rect">referenced_type</a></div> + <div>         ::= <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#reference-type" title="reference-type">reference-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + path_resolved_user_defined_type_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="175" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-name" xlink:title="user_defined_type_name" shape="rect"> + <rect x="23" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">user_defined_type_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="165 10 173 6 173 14"/> + <polygon points="165 10 157 6 157 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div> + <div>         ::= <a href="#user-defined-type-name" title="user_defined_type_name" shape="rect">user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#data-type" title="data-type">data-type</a></li><li><a href="#exclusive-user-defined-type-specification" title="exclusive-user-defined-type-specification">exclusive-user-defined-type-specification</a></li><li><a href="#general-value-specification" title="general-value-specification">general-value-specification</a></li><li><a href="#generalized-expression" title="generalized-expression">generalized-expression</a></li><li><a href="#group-specification" title="group-specification">group-specification</a></li><li><a href="#inclusive-user-defined-type-specification" title="inclusive-user-defined-type-specification">inclusive-user-defined-type-specification</a></li><li><a href="#new-specification" title="new-specification">new-specification</a></li><li><a href="#referenceable-view-specification" title="referenceable-view-specification">referenceable-view-specification</a></li><li><a href="#referenced-type" title="referenced-type">referenced-type</a></li><li><a href="#supertype-name" title="supertype-name">supertype-name</a></li><li><a href="#target-subtype" title="target-subtype">target-subtype</a></li><li><a href="#transform-group-characteristic" title="transform-group-characteristic">transform-group-characteristic</a></li><li><a href="#typed-table-clause" title="typed-table-clause">typed-table-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + collection_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="145" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-type" xlink:title="array_type" shape="rect"> + <rect x="43" y="1" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">array_type</text></a><rect x="43" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">MULTISET</text> + <path class="line" d="m17 10 h2 m20 0 h4 m58 0 h4 m-86 0 h20 m66 0 h20 m-106 0 q10 0 10 10 m86 0 q0 -10 10 -10 m-96 10 v8 m86 0 v-8 m-86 8 q0 10 10 10 m66 0 q10 0 10 -10 m-76 10 h4 m52 0 h4 m0 0 h6 m23 -28 h-3"/> + <polygon points="135 10 143 6 143 14"/> + <polygon points="135 10 127 6 127 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#collection-type" title="collection_type" shape="rect">collection_type</a></div> + <div>         ::= <a href="#array-type" title="array_type" shape="rect">array_type</a></div> + <div>           | 'MULTISET'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#data-type" title="data-type">data-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="481" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ARRAY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#left-bracket-or-trigraph" xlink:title="left_bracket_or_trigraph" shape="rect"> + <rect x="89" y="22" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="93" y="34">left_bracket_or_trigraph</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="215" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="34">unsigned_integer</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#right-bracket-or-trigraph" xlink:title="right_bracket_or_trigraph" shape="rect"> + <rect x="313" y="22" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="34">right_bracket_or_trigraph</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m20 0 h10 m0 0 h346 m-376 0 h20 m356 0 h20 m-396 0 q10 0 10 10 m376 0 q0 -10 10 -10 m-386 10 v1 m376 0 v-1 m-376 1 q0 10 10 10 m356 0 q10 0 10 -10 m-366 10 h4 m118 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m124 0 h4 m23 -21 h-3"/> + <polygon points="471 10 479 6 479 14"/> + <polygon points="471 10 463 6 463 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-type" title="array_type" shape="rect">array_type</a></div> + <div>         ::= 'ARRAY' ( <a href="#left-bracket-or-trigraph" title="left_bracket_or_trigraph" shape="rect">left_bracket_or_trigraph</a> <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> <a href="#right-bracket-or-trigraph" title="right_bracket_or_trigraph" shape="rect">right_bracket_or_trigraph</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#collection-type" title="collection-type">collection-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + field_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="77" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">data_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m56 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#field-definition" title="field_definition" shape="rect">field_definition</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#data-type" title="data_type" shape="rect">data_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#row-type-body" title="row-type-body">row-type-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + value_expression_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="307" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parenthesized-value-expression" xlink:title="parenthesized_value_expression" shape="rect"> + <rect x="43" y="1" width="160" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">parenthesized_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nonparenthesized-value-expression-primary" xlink:title="nonparenthesized_value_expression_primary" shape="rect"> + <rect x="43" y="29" width="220" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">nonparenthesized_value_expression_primary</text></a><path class="line" d="m17 10 h2 m20 0 h4 m160 0 h4 m0 0 h60 m-248 0 h20 m228 0 h20 m-268 0 q10 0 10 10 m248 0 q0 -10 10 -10 m-258 10 v8 m248 0 v-8 m-248 8 q0 10 10 10 m228 0 q10 0 10 -10 m-238 10 h4 m220 0 h4 m23 -28 h-3"/> + <polygon points="297 10 305 6 305 14"/> + <polygon points="297 10 289 6 289 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#value-expression-primary" title="value_expression_primary" shape="rect">value_expression_primary</a></div> + <div>         ::= <a href="#parenthesized-value-expression" title="parenthesized_value_expression" shape="rect">parenthesized_value_expression</a></div> + <div>           | <a href="#nonparenthesized-value-expression-primary" title="nonparenthesized_value_expression_primary" shape="rect">nonparenthesized_value_expression_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#all-fields-reference" title="all-fields-reference">all-fields-reference</a></li><li><a href="#multiset-primary" title="multiset-primary">multiset-primary</a></li><li><a href="#reference-value-expression" title="reference-value-expression">reference-value-expression</a></li><li><a href="#user-defined-type-value-expression" title="user-defined-type-value-expression">user-defined-type-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parenthesized_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="337" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="63" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">value_expression</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="181" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="41">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#primary-suffix" xlink:title="primary_suffix" shape="rect"> + <rect x="221" y="8" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="20">primary_suffix</text></a><path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m90 0 h4 m-118 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m98 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-98 0 h4 m8 0 h4 m0 0 h82 m20 28 h4 m12 0 h4 m20 0 h10 m0 0 h70 m-100 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m80 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-80 0 h4 m72 0 h4 m23 21 h-3"/> + <polygon points="327 38 335 34 335 42"/> + <polygon points="327 38 319 34 319 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parenthesized-value-expression" title="parenthesized_value_expression" shape="rect">parenthesized_value_expression</a></div> + <div>         ::= '(' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ( ',' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> )* ')' <a href="#primary-suffix" title="primary_suffix" shape="rect">primary_suffix</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#value-expression-primary" title="value-expression-primary">value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + nonparenthesized_value_expression_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="387" height="434"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-function-specification" xlink:title="set_function_specification" shape="rect"> + <rect x="63" y="22" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">set_function_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="63" y="50" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="62">subquery</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#case-expression" xlink:title="case_expression" shape="rect"> + <rect x="63" y="78" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="90">case_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-specification" xlink:title="cast_specification" shape="rect"> + <rect x="63" y="106" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="118">cast_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subtype-treatment" xlink:title="subtype_treatment" shape="rect"> + <rect x="63" y="134" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="146">subtype_treatment</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#new-specification" xlink:title="new_specification" shape="rect"> + <rect x="63" y="162" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="174">new_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-resolution" xlink:title="reference_resolution" shape="rect"> + <rect x="63" y="190" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="202">reference_resolution</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collection-value-constructor" xlink:title="collection_value_constructor" shape="rect"> + <rect x="63" y="218" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="230">collection_value_constructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-element-reference" xlink:title="multiset_element_reference" shape="rect"> + <rect x="63" y="246" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="258">multiset_element_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#next-value-expression" xlink:title="next_value_expression" shape="rect"> + <rect x="63" y="274" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="286">next_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-function-type" xlink:title="window_function_type" shape="rect"> + <rect x="63" y="302" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="314">window_function_type</text></a><rect x="63" y="330" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="342">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="83" y="330" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="342">column_name_list</text></a><rect x="183" y="330" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="342">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-value-specification" xlink:title="unsigned_value_specification" shape="rect"> + <rect x="63" y="358" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="370">unsigned_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-reference" xlink:title="column_reference" shape="rect"> + <rect x="63" y="386" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="398">column_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#primary-suffix" xlink:title="primary_suffix" shape="rect"> + <rect x="251" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="255" y="13">primary_suffix</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="43" y="414" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="426">contextually_typed_value_specification</text></a><path class="line" d="m17 31 h2 m40 0 h4 m122 0 h4 m0 0 h18 m-168 0 h20 m148 0 h20 m-188 0 q10 0 10 10 m168 0 q0 -10 10 -10 m-178 10 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m52 0 h4 m0 0 h88 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m86 0 h4 m0 0 h54 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m86 0 h4 m0 0 h54 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m98 0 h4 m0 0 h42 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m88 0 h4 m0 0 h52 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m102 0 h4 m0 0 h38 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m134 0 h4 m0 0 h6 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m138 0 h4 m0 0 h2 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m116 0 h4 m0 0 h24 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m112 0 h4 m0 0 h28 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m12 0 h4 m0 0 h8 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m140 0 h4 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m92 0 h4 m0 0 h48 m40 -364 h10 m0 0 h70 m-100 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m80 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-80 0 h4 m72 0 h4 m-308 21 h20 m308 0 h20 m-348 0 q10 0 10 10 m328 0 q0 -10 10 -10 m-338 10 v372 m328 0 v-372 m-328 372 q0 10 10 10 m308 0 q10 0 10 -10 m-318 10 h4 m184 0 h4 m0 0 h116 m23 -392 h-3"/> + <polygon points="377 31 385 27 385 35"/> + <polygon points="377 31 369 27 369 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized_value_expression_primary" shape="rect">nonparenthesized_value_expression_primary</a></div> + <div>         ::= <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div> + <div>           | ( <a href="#set-function-specification" title="set_function_specification" shape="rect">set_function_specification</a> | <a href="#subquery" title="subquery" shape="rect">subquery</a> | <a href="#case-expression" title="case_expression" shape="rect">case_expression</a> | <a href="#cast-specification" title="cast_specification" shape="rect">cast_specification</a> | <a href="#subtype-treatment" title="subtype_treatment" shape="rect">subtype_treatment</a> | <a href="#new-specification" title="new_specification" shape="rect">new_specification</a> | <a href="#reference-resolution" title="reference_resolution" shape="rect">reference_resolution</a> | <a href="#collection-value-constructor" title="collection_value_constructor" shape="rect">collection_value_constructor</a> | <a href="#multiset-element-reference" title="multiset_element_reference" shape="rect">multiset_element_reference</a> | <a href="#next-value-expression" title="next_value_expression" shape="rect">next_value_expression</a> | <a href="#window-function-type" title="window_function_type" shape="rect">window_function_type</a> | '(' <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a> ')' | <a href="#unsigned-value-specification" title="unsigned_value_specification" shape="rect">unsigned_value_specification</a> | <a href="#column-reference" title="column_reference" shape="rect">column_reference</a> ) <a href="#primary-suffix" title="primary_suffix" shape="rect">primary_suffix</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#row-value-special-case" title="row-value-special-case">row-value-special-case</a></li><li><a href="#value-expression-primary" title="value-expression-primary">value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + primary_suffix +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="161"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#field-reference" xlink:title="field_reference" shape="rect"> + <rect x="43" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">field_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#attribute-or-method-reference" xlink:title="attribute_or_method_reference" shape="rect"> + <rect x="43" y="29" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">attribute_or_method_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#method-invocation" xlink:title="method_invocation" shape="rect"> + <rect x="43" y="57" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">method_invocation</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-function" xlink:title="window_function" shape="rect"> + <rect x="43" y="85" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">window_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-element-reference" xlink:title="array_element_reference" shape="rect"> + <rect x="43" y="113" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">array_element_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#static-method-invocation" xlink:title="static_method_invocation" shape="rect"> + <rect x="43" y="141" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">static_method_invocation</text></a><path class="line" d="m17 10 h2 m20 0 h4 m74 0 h4 m0 0 h80 m-182 0 h20 m162 0 h20 m-202 0 q10 0 10 10 m182 0 q0 -10 10 -10 m-192 10 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m154 0 h4 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m98 0 h4 m0 0 h56 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m86 0 h4 m0 0 h68 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m126 0 h4 m0 0 h28 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m126 0 h4 m0 0 h28 m23 -140 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#primary-suffix" title="primary_suffix" shape="rect">primary_suffix</a></div> + <div>         ::= <a href="#field-reference" title="field_reference" shape="rect">field_reference</a></div> + <div>           | <a href="#attribute-or-method-reference" title="attribute_or_method_reference" shape="rect">attribute_or_method_reference</a></div> + <div>           | <a href="#method-invocation" title="method_invocation" shape="rect">method_invocation</a></div> + <div>           | <a href="#window-function" title="window_function" shape="rect">window_function</a></div> + <div>           | <a href="#array-element-reference" title="array_element_reference" shape="rect">array_element_reference</a></div> + <div>           | <a href="#static-method-invocation" title="static_method_invocation" shape="rect">static_method_invocation</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li><li><a href="#parenthesized-value-expression" title="parenthesized-value-expression">parenthesized-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + collection_value_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-constructor" xlink:title="array_value_constructor" shape="rect"> + <rect x="43" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">array_value_constructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-constructor" xlink:title="multiset_value_constructor" shape="rect"> + <rect x="43" y="29" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">multiset_value_constructor</text></a><path class="line" d="m17 10 h2 m20 0 h4 m118 0 h4 m0 0 h12 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m130 0 h4 m23 -28 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#collection-value-constructor" title="collection_value_constructor" shape="rect">collection_value_constructor</a></div> + <div>         ::= <a href="#array-value-constructor" title="array_value_constructor" shape="rect">array_value_constructor</a></div> + <div>           | <a href="#multiset-value-constructor" title="multiset_value_constructor" shape="rect">multiset_value_constructor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + value_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#literal" xlink:title="literal" shape="rect"> + <rect x="43" y="1" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#general-value-specification" xlink:title="general_value_specification" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">general_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h100 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v8 m160 0 v-8 m-160 8 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m23 -28 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div> + <div>         ::= <a href="#literal" title="literal" shape="rect">literal</a></div> + <div>           | <a href="#general-value-specification" title="general_value_specification" shape="rect">general_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-path-characteristic" title="sql-path-characteristic">sql-path-characteristic</a></li><li><a href="#catalog-name-characteristic" title="catalog-name-characteristic">catalog-name-characteristic</a></li><li><a href="#character-set-name-characteristic" title="character-set-name-characteristic">character-set-name-characteristic</a></li><li><a href="#collation-specification" title="collation-specification">collation-specification</a></li><li><a href="#role-specification" title="role-specification">role-specification</a></li><li><a href="#schema-name-characteristic" title="schema-name-characteristic">schema-name-characteristic</a></li><li><a href="#set-session-user-identifier-statement" title="set-session-user-identifier-statement">set-session-user-identifier-statement</a></li><li><a href="#transform-group-characteristic" title="transform-group-characteristic">transform-group-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unsigned_value_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-literal" xlink:title="unsigned_literal" shape="rect"> + <rect x="43" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">unsigned_literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#general-value-specification" xlink:title="general_value_specification" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">general_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m80 0 h4 m0 0 h52 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v8 m160 0 v-8 m-160 8 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m23 -28 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unsigned-value-specification" title="unsigned_value_specification" shape="rect">unsigned_value_specification</a></div> + <div>         ::= <a href="#unsigned-literal" title="unsigned_literal" shape="rect">unsigned_literal</a></div> + <div>           | <a href="#general-value-specification" title="general_value_specification" shape="rect">general_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + general_value_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="503" height="413"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier_chain</text></a><rect x="43" y="29" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CURRENT_USER</text> + <rect x="43" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">USER</text> + <rect x="43" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">?</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#host-parameter-name" xlink:title="host_parameter_name" shape="rect"> + <rect x="43" y="113" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">host_parameter_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#current-collation-specification" xlink:title="current_collation_specification" shape="rect"> + <rect x="43" y="141" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">current_collation_specification</text></a><rect x="43" y="169" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">SESSION_USER</text> + <rect x="43" y="197" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">SYSTEM_USER</text> + <rect x="43" y="225" width="100" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">CURRENT_CATALOG</text> + <rect x="43" y="253" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">CURRENT_PATH</text> + <rect x="43" y="281" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">CURRENT_ROLE</text> + <rect x="43" y="309" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">CURRENT_SCHEMA</text> + <rect x="43" y="337" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="349">VALUE</text> + <rect x="43" y="365" width="202" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="377">CURRENT_DEFAULT_TRANSFORM_GROUP</text> + <rect x="43" y="393" width="208" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="405">CURRENT_TRANSFORM_GROUP_FOR_TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="259" y="393" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="405">path_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h340 m-444 0 h20 m424 0 h20 m-464 0 q10 0 10 10 m444 0 q0 -10 10 -10 m-454 10 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m80 0 h4 m0 0 h336 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m32 0 h4 m0 0 h384 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m12 0 h4 m0 0 h404 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m118 0 h4 m0 0 h298 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m140 0 h4 m0 0 h276 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m80 0 h4 m0 0 h336 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m74 0 h4 m0 0 h342 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m100 0 h4 m0 0 h316 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m82 0 h4 m0 0 h334 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m82 0 h4 m0 0 h334 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m96 0 h4 m0 0 h320 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m36 0 h4 m0 0 h380 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m202 0 h4 m0 0 h214 m-434 -10 v20 m444 0 v-20 m-444 20 v8 m444 0 v-8 m-444 8 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m208 0 h4 m0 0 h4 m200 0 h4 m23 -392 h-3"/> + <polygon points="493 10 501 6 501 14"/> + <polygon points="493 10 485 6 485 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#general-value-specification" title="general_value_specification" shape="rect">general_value_specification</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div> + <div>           | 'CURRENT_USER'</div> + <div>           | 'USER'</div> + <div>           | '?'</div> + <div>           | <a href="#host-parameter-name" title="host_parameter_name" shape="rect">host_parameter_name</a></div> + <div>           | <a href="#current-collation-specification" title="current_collation_specification" shape="rect">current_collation_specification</a></div> + <div>           | 'SESSION_USER'</div> + <div>           | 'SYSTEM_USER'</div> + <div>           | 'CURRENT_CATALOG'</div> + <div>           | 'CURRENT_PATH'</div> + <div>           | 'CURRENT_ROLE'</div> + <div>           | 'CURRENT_SCHEMA'</div> + <div>           | 'VALUE'</div> + <div>           | 'CURRENT_DEFAULT_TRANSFORM_GROUP'</div> + <div>           | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE' <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unsigned-value-specification" title="unsigned-value-specification">unsigned-value-specification</a></li><li><a href="#using-argument" title="using-argument">using-argument</a></li><li><a href="#value-specification" title="value-specification">value-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + simple_value_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#literal" xlink:title="literal" shape="rect"> + <rect x="43" y="1" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="43" y="29" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier_chain</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#host-parameter-name" xlink:title="host_parameter_name" shape="rect"> + <rect x="43" y="57" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">host_parameter_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h86 m-146 0 h20 m126 0 h20 m-166 0 q10 0 10 10 m146 0 q0 -10 10 -10 m-156 10 v8 m146 0 v-8 m-146 8 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h4 m76 0 h4 m0 0 h42 m-136 -10 v20 m146 0 v-20 m-146 20 v8 m146 0 v-8 m-146 8 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h4 m118 0 h4 m23 -56 h-3"/> + <polygon points="195 10 203 6 203 14"/> + <polygon points="195 10 187 6 187 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div> + <div>         ::= <a href="#literal" title="literal" shape="rect">literal</a></div> + <div>           | <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div> + <div>           | <a href="#host-parameter-name" title="host_parameter_name" shape="rect">host_parameter_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#all-qualifier" title="all-qualifier">all-qualifier</a></li><li><a href="#allocate-descriptor-statement" title="allocate-descriptor-statement">allocate-descriptor-statement</a></li><li><a href="#attributes-specification" title="attributes-specification">attributes-specification</a></li><li><a href="#condition-information" title="condition-information">condition-information</a></li><li><a href="#connection-object" title="connection-object">connection-object</a></li><li><a href="#connection-target" title="connection-target">connection-target</a></li><li><a href="#diagnostics-size" title="diagnostics-size">diagnostics-size</a></li><li><a href="#execute-immediate-statement" title="execute-immediate-statement">execute-immediate-statement</a></li><li><a href="#extended-cursor-name" title="extended-cursor-name">extended-cursor-name</a></li><li><a href="#extended-descriptor-name" title="extended-descriptor-name">extended-descriptor-name</a></li><li><a href="#extended-identifier" title="extended-identifier">extended-identifier</a></li><li><a href="#fetch-first-clause" title="fetch-first-clause">fetch-first-clause</a></li><li><a href="#fetch-orientation" title="fetch-orientation">fetch-orientation</a></li><li><a href="#get-descriptor-information" title="get-descriptor-information">get-descriptor-information</a></li><li><a href="#nth-row" title="nth-row">nth-row</a></li><li><a href="#prepare-statement" title="prepare-statement">prepare-statement</a></li><li><a href="#result-offset-clause" title="result-offset-clause">result-offset-clause</a></li><li><a href="#set-descriptor-information" title="set-descriptor-information">set-descriptor-information</a></li><li><a href="#set-header-information" title="set-header-information">set-header-information</a></li><li><a href="#set-item-information" title="set-item-information">set-item-information</a></li><li><a href="#target-array-element-specification" title="target-array-element-specification">target-array-element-specification</a></li><li><a href="#update-target" title="update-target">update-target</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + target_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="395" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier_chain</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-reference" xlink:title="column_reference" shape="rect"> + <rect x="43" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">column_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-array-element-specification" xlink:title="target_array_element_specification" shape="rect"> + <rect x="183" y="22" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="187" y="34">target_array_element_specification</text></a><rect x="183" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="62">?</text> + <path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h16 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m92 0 h4 m40 -28 h10 m0 0 h166 m-196 0 h20 m176 0 h20 m-216 0 q10 0 10 10 m196 0 q0 -10 10 -10 m-206 10 v1 m196 0 v-1 m-196 1 q0 10 10 10 m176 0 q10 0 10 -10 m-186 10 h4 m168 0 h4 m-186 -10 v20 m196 0 v-20 m-196 20 v8 m196 0 v-8 m-196 8 q0 10 10 10 m176 0 q10 0 10 -10 m-186 10 h4 m12 0 h4 m0 0 h156 m23 -49 h-3"/> + <polygon points="385 10 393 6 393 14"/> + <polygon points="385 10 377 6 377 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#target-specification" title="target_specification" shape="rect">target_specification</a></div> + <div>         ::= ( <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a> | <a href="#column-reference" title="column_reference" shape="rect">column_reference</a> ) ( <a href="#target-array-element-specification" title="target_array_element_specification" shape="rect">target_array_element_specification</a> | '?' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-argument" title="sql-argument">sql-argument</a></li><li><a href="#fetch-target-list" title="fetch-target-list">fetch-target-list</a></li><li><a href="#into-argument" title="into-argument">into-argument</a></li><li><a href="#named-argument-sql-argument" title="named-argument-sql-argument">named-argument-sql-argument</a></li><li><a href="#select-target-list" title="select-target-list">select-target-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + simple_target_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier_chain</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-reference" xlink:title="column_reference" shape="rect"> + <rect x="43" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">column_reference</text></a><path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h16 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m92 0 h4 m23 -28 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-target-specification" title="simple_target_specification" shape="rect">simple_target_specification</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div> + <div>           | <a href="#column-reference" title="column_reference" shape="rect">column_reference</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#all-info-target" title="all-info-target">all-info-target</a></li><li><a href="#condition-information-item" title="condition-information-item">condition-information-item</a></li><li><a href="#simple-target-specification-1" title="simple-target-specification-1">simple-target-specification-1</a></li><li><a href="#simple-target-specification-2" title="simple-target-specification-2">simple-target-specification-2</a></li><li><a href="#statement-information-item" title="statement-information-item">statement-information-item</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + target_array_element_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="433" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#left-bracket-or-trigraph" xlink:title="left_bracket_or_trigraph" shape="rect"> + <rect x="23" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">left_bracket_or_trigraph</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="149" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="153" y="13">simple_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#right-bracket-or-trigraph" xlink:title="right_bracket_or_trigraph" shape="rect"> + <rect x="285" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="289" y="13">right_bracket_or_trigraph</text></a><path class="line" d="m17 10 h2 m0 0 h4 m118 0 h4 m0 0 h4 m128 0 h4 m0 0 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="423 10 431 6 431 14"/> + <polygon points="423 10 415 6 415 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#target-array-element-specification" title="target_array_element_specification" shape="rect">target_array_element_specification</a></div> + <div>         ::= <a href="#left-bracket-or-trigraph" title="left_bracket_or_trigraph" shape="rect">left_bracket_or_trigraph</a> <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> <a href="#right-bracket-or-trigraph" title="right_bracket_or_trigraph" shape="rect">right_bracket_or_trigraph</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#target-specification" title="target-specification">target-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + current_collation_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="311" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">COLLATION</text> + <rect x="93" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">FOR</text> + <rect x="127" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#string-value-expression" xlink:title="string_value_expression" shape="rect"> + <rect x="147" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="13">string_value_expression</text></a><rect x="275" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="279" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m120 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="301 10 309 6 309 14"/> + <polygon points="301 10 293 6 293 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#current-collation-specification" title="current_collation_specification" shape="rect">current_collation_specification</a></div> + <div>         ::= 'COLLATION' 'FOR' '(' <a href="#string-value-expression" title="string_value_expression" shape="rect">string_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-value-specification" title="general-value-specification">general-value-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + contextually_typed_value_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#implicitly-typed-value-specification" xlink:title="implicitly_typed_value_specification" shape="rect"> + <rect x="43" y="1" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">implicitly_typed_value_specification</text></a><rect x="43" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">DEFAULT</text> + <path class="line" d="m17 10 h2 m20 0 h4 m164 0 h4 m-192 0 h20 m172 0 h20 m-212 0 q10 0 10 10 m192 0 q0 -10 10 -10 m-202 10 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m48 0 h4 m0 0 h116 m23 -28 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div> + <div>         ::= <a href="#implicitly-typed-value-specification" title="implicitly_typed_value_specification" shape="rect">implicitly_typed_value_specification</a></div> + <div>           | 'DEFAULT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-argument" title="sql-argument">sql-argument</a></li><li><a href="#contextually-typed-row-value-constructor" title="contextually-typed-row-value-constructor">contextually-typed-row-value-constructor</a></li><li><a href="#contextually-typed-row-value-constructor-element" title="contextually-typed-row-value-constructor-element">contextually-typed-row-value-constructor-element</a></li><li><a href="#merge-insert-value-element" title="merge-insert-value-element">merge-insert-value-element</a></li><li><a href="#named-argument-sql-argument" title="named-argument-sql-argument">named-argument-sql-argument</a></li><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li><li><a href="#parameter-default" title="parameter-default">parameter-default</a></li><li><a href="#update-source" title="update-source">update-source</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + implicitly_typed_value_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NULL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#empty-specification" xlink:title="empty_specification" shape="rect"> + <rect x="43" y="29" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">empty_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h66 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v8 m126 0 v-8 m-126 8 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m98 0 h4 m23 -28 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#implicitly-typed-value-specification" title="implicitly_typed_value_specification" shape="rect">implicitly_typed_value_specification</a></div> + <div>         ::= 'NULL'</div> + <div>           | <a href="#empty-specification" title="empty_specification" shape="rect">empty_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cast-operand" title="cast-operand">cast-operand</a></li><li><a href="#contextually-typed-value-specification" title="contextually-typed-value-specification">contextually-typed-value-specification</a></li><li><a href="#default-option" title="default-option">default-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + empty_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="397" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ARRAY</text> + <rect x="43" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">MULTISET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#left-bracket-or-trigraph" xlink:title="left_bracket_or_trigraph" shape="rect"> + <rect x="123" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="13">left_bracket_or_trigraph</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#right-bracket-or-trigraph" xlink:title="right_bracket_or_trigraph" shape="rect"> + <rect x="249" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="13">right_bracket_or_trigraph</text></a><path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m0 0 h14 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m20 -28 h4 m118 0 h4 m0 0 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="387 10 395 6 395 14"/> + <polygon points="387 10 379 6 379 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#empty-specification" title="empty_specification" shape="rect">empty_specification</a></div> + <div>         ::= ( 'ARRAY' | 'MULTISET' ) <a href="#left-bracket-or-trigraph" title="left_bracket_or_trigraph" shape="rect">left_bracket_or_trigraph</a> <a href="#right-bracket-or-trigraph" title="right_bracket_or_trigraph" shape="rect">right_bracket_or_trigraph</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#implicitly-typed-value-specification" title="implicitly-typed-value-specification">implicitly-typed-value-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identifier_chain +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">.</text> + <path class="line" d="m17 38 h2 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m23 28 h-3"/> + <polygon points="123 38 131 34 131 42"/> + <polygon points="123 38 115 34 115 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> ( '.' <a href="#identifier" title="identifier" shape="rect">identifier</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-reference" title="column-reference">column-reference</a></li><li><a href="#cursor-name" title="cursor-name">cursor-name</a></li><li><a href="#general-value-specification" title="general-value-specification">general-value-specification</a></li><li><a href="#local-or-schema-qualified-name" title="local-or-schema-qualified-name">local-or-schema-qualified-name</a></li><li><a href="#schema-name" title="schema-name">schema-name</a></li><li><a href="#schema-qualified-name" title="schema-qualified-name">schema-qualified-name</a></li><li><a href="#simple-target-specification" title="simple-target-specification">simple-target-specification</a></li><li><a href="#simple-value-specification" title="simple-value-specification">simple-value-specification</a></li><li><a href="#table-name" title="table-name">table-name</a></li><li><a href="#target-specification" title="target-specification">target-specification</a></li><li><a href="#use-statement" title="use-statement">use-statement</a></li><li><a href="#user-defined-type-name" title="user-defined-type-name">user-defined-type-name</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="275" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier_chain</text></a><rect x="43" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">MODULE</text> + <rect x="99" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="41">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="115" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="41">identifier</text></a><rect x="169" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="41">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="185" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="189" y="41">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h112 m-216 0 h20 m196 0 h20 m-236 0 q10 0 10 10 m216 0 q0 -10 10 -10 m-226 10 v8 m216 0 v-8 m-216 8 q0 10 10 10 m196 0 q10 0 10 -10 m-206 10 h4 m48 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m46 0 h4 m23 -28 h-3"/> + <polygon points="265 10 273 6 273 14"/> + <polygon points="265 10 257 6 257 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-reference" title="column_reference" shape="rect">column_reference</a></div> + <div>         ::= <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div> + <div>           | 'MODULE' '.' <a href="#identifier" title="identifier" shape="rect">identifier</a> '.' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-column-reference" title="grouping-column-reference">grouping-column-reference</a></li><li><a href="#grouping-operation" title="grouping-operation">grouping-operation</a></li><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li><li><a href="#partitioned-join-column-reference" title="partitioned-join-column-reference">partitioned-join-column-reference</a></li><li><a href="#simple-target-specification" title="simple-target-specification">simple-target-specification</a></li><li><a href="#target-specification" title="target-specification">target-specification</a></li><li><a href="#window-partition-column-reference" title="window-partition-column-reference">window-partition-column-reference</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_function_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="187" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#aggregate-function" xlink:title="aggregate_function" shape="rect"> + <rect x="43" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">aggregate_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-operation" xlink:title="grouping_operation" shape="rect"> + <rect x="43" y="29" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">grouping_operation</text></a><path class="line" d="m17 10 h2 m20 0 h4 m98 0 h4 m0 0 h2 m-128 0 h20 m108 0 h20 m-148 0 q10 0 10 10 m128 0 q0 -10 10 -10 m-138 10 v8 m128 0 v-8 m-128 8 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m100 0 h4 m23 -28 h-3"/> + <polygon points="177 10 185 6 185 14"/> + <polygon points="177 10 169 6 169 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-function-specification" title="set_function_specification" shape="rect">set_function_specification</a></div> + <div>         ::= <a href="#aggregate-function" title="aggregate_function" shape="rect">aggregate_function</a></div> + <div>           | <a href="#grouping-operation" title="grouping_operation" shape="rect">grouping_operation</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_operation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="285" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">GROUPING</text> + <rect x="89" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-reference" xlink:title="column_reference" shape="rect"> + <rect x="129" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="133" y="41">column_reference</text></a><rect x="129" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="13">,</text> + <rect x="249" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="253" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m58 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m92 0 h4 m-120 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m100 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-100 0 h4 m8 0 h4 m0 0 h84 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="275 38 283 34 283 42"/> + <polygon points="275 38 267 34 267 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-operation" title="grouping_operation" shape="rect">grouping_operation</a></div> + <div>         ::= 'GROUPING' '(' <a href="#column-reference" title="column_reference" shape="rect">column_reference</a> ( ',' <a href="#column-reference" title="column_reference" shape="rect">column_reference</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-function-specification" title="set-function-specification">set-function-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OVER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-name-or-specification" xlink:title="window_name_or_specification" shape="rect"> + <rect x="65" y="1" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">window_name_or_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m152 0 h4 m3 0 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-function" title="window_function" shape="rect">window_function</a></div> + <div>         ::= 'OVER' <a href="#window-name-or-specification" title="window_name_or_specification" shape="rect">window_name_or_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primary-suffix" title="primary-suffix">primary-suffix</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_function_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="263" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rank-function-type" xlink:title="rank_function_type" shape="rect"> + <rect x="63" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">rank_function_type</text></a><rect x="63" y="29" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">ROW_NUMBER</text> + <rect x="187" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="13">(</text> + <rect x="207" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#aggregate-function" xlink:title="aggregate_function" shape="rect"> + <rect x="43" y="57" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">aggregate_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ntile-function" xlink:title="ntile_function" shape="rect"> + <rect x="43" y="85" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">ntile_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lead-or-lag-function" xlink:title="lead_or_lag_function" shape="rect"> + <rect x="43" y="113" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">lead_or_lag_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#first-or-last-value-function" xlink:title="first_or_last_value_function" shape="rect"> + <rect x="43" y="141" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">first_or_last_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nth-value-function" xlink:title="nth_value_function" shape="rect"> + <rect x="43" y="169" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">nth_value_function</text></a><path class="line" d="m17 10 h2 m40 0 h4 m96 0 h4 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v8 m124 0 v-8 m-124 8 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m78 0 h4 m0 0 h18 m20 -28 h4 m12 0 h4 m0 0 h4 m12 0 h4 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v36 m204 0 v-36 m-204 36 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m98 0 h4 m0 0 h78 m-194 -10 v20 m204 0 v-20 m-204 20 v8 m204 0 v-8 m-204 8 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m68 0 h4 m0 0 h108 m-194 -10 v20 m204 0 v-20 m-204 20 v8 m204 0 v-8 m-204 8 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m104 0 h4 m0 0 h72 m-194 -10 v20 m204 0 v-20 m-204 20 v8 m204 0 v-8 m-204 8 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m132 0 h4 m0 0 h44 m-194 -10 v20 m204 0 v-20 m-204 20 v8 m204 0 v-8 m-204 8 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m96 0 h4 m0 0 h80 m23 -168 h-3"/> + <polygon points="253 10 261 6 261 14"/> + <polygon points="253 10 245 6 245 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-function-type" title="window_function_type" shape="rect">window_function_type</a></div> + <div>         ::= ( <a href="#rank-function-type" title="rank_function_type" shape="rect">rank_function_type</a> | 'ROW_NUMBER' ) '(' ')'</div> + <div>           | <a href="#aggregate-function" title="aggregate_function" shape="rect">aggregate_function</a></div> + <div>           | <a href="#ntile-function" title="ntile_function" shape="rect">ntile_function</a></div> + <div>           | <a href="#lead-or-lag-function" title="lead_or_lag_function" shape="rect">lead_or_lag_function</a></div> + <div>           | <a href="#first-or-last-value-function" title="first_or_last_value_function" shape="rect">first_or_last_value_function</a></div> + <div>           | <a href="#nth-value-function" title="nth_value_function" shape="rect">nth_value_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + rank_function_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">RANK</text> + <rect x="43" y="29" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">DENSE_RANK</text> + <rect x="43" y="57" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">PERCENT_RANK</text> + <rect x="43" y="85" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">CUME_DIST</text> + <path class="line" d="m17 10 h2 m20 0 h4 m34 0 h4 m0 0 h46 m-108 0 h20 m88 0 h20 m-128 0 q10 0 10 10 m108 0 q0 -10 10 -10 m-118 10 v8 m108 0 v-8 m-108 8 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m70 0 h4 m0 0 h10 m-98 -10 v20 m108 0 v-20 m-108 20 v8 m108 0 v-8 m-108 8 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m80 0 h4 m-98 -10 v20 m108 0 v-20 m-108 20 v8 m108 0 v-8 m-108 8 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m62 0 h4 m0 0 h18 m23 -84 h-3"/> + <polygon points="157 10 165 6 165 14"/> + <polygon points="157 10 149 6 149 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#rank-function-type" title="rank_function_type" shape="rect">rank_function_type</a></div> + <div>         ::= 'RANK'</div> + <div>           | 'DENSE_RANK'</div> + <div>           | 'PERCENT_RANK'</div> + <div>           | 'CUME_DIST'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#hypothetical-set-function" title="hypothetical-set-function">hypothetical-set-function</a></li><li><a href="#window-function-type" title="window-function-type">window-function-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ntile_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NTILE</text> + <rect x="65" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#number-of-tiles" xlink:title="number_of_tiles" shape="rect"> + <rect x="85" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">number_of_tiles</text></a><rect x="177" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m84 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#ntile-function" title="ntile_function" shape="rect">ntile_function</a></div> + <div>         ::= 'NTILE' '(' <a href="#number-of-tiles" title="number_of_tiles" shape="rect">number_of_tiles</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-function-type" title="window-function-type">window-function-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + number_of_tiles +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><rect x="43" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">?</text> + <path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m12 0 h4 m0 0 h78 m23 -28 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#number-of-tiles" title="number_of_tiles" shape="rect">number_of_tiles</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>           | '?'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ntile-function" title="ntile-function">ntile-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + lead_or_lag_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="681" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lead-or-lag" xlink:title="lead_or_lag" shape="rect"> + <rect x="23" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">lead_or_lag</text></a><rect x="95" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="115" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="13">value_expression</text></a><rect x="233" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="34">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="249" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="34">value_expression</text></a><rect x="367" y="43" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="371" y="55">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="383" y="43" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="387" y="55">value_expression</text></a><rect x="521" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="525" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-treatment" xlink:title="null_treatment" shape="rect"> + <rect x="561" y="22" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="565" y="34">null_treatment</text></a><path class="line" d="m17 10 h2 m0 0 h4 m64 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m90 0 h4 m20 0 h10 m0 0 h258 m-288 0 h20 m268 0 h20 m-308 0 q10 0 10 10 m288 0 q0 -10 10 -10 m-298 10 v1 m288 0 v-1 m-288 1 q0 10 10 10 m268 0 q10 0 10 -10 m-278 10 h4 m8 0 h4 m0 0 h4 m90 0 h4 m20 0 h10 m0 0 h104 m-134 0 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v1 m134 0 v-1 m-134 1 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m8 0 h4 m0 0 h4 m90 0 h4 m40 -42 h4 m12 0 h4 m20 0 h10 m0 0 h74 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v1 m104 0 v-1 m-104 1 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m76 0 h4 m23 -21 h-3"/> + <polygon points="671 10 679 6 679 14"/> + <polygon points="671 10 663 6 663 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#lead-or-lag-function" title="lead_or_lag_function" shape="rect">lead_or_lag_function</a></div> + <div>         ::= <a href="#lead-or-lag" title="lead_or_lag" shape="rect">lead_or_lag</a> '(' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ( ',' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ( ',' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> )? )? ')' <a href="#null-treatment" title="null_treatment" shape="rect">null_treatment</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-function-type" title="window-function-type">window-function-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + lead_or_lag +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="117" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">LEAD</text> + <rect x="43" y="29" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LAG</text> + <path class="line" d="m17 10 h2 m20 0 h4 m30 0 h4 m-58 0 h20 m38 0 h20 m-78 0 q10 0 10 10 m58 0 q0 -10 10 -10 m-68 10 v8 m58 0 v-8 m-58 8 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m26 0 h4 m0 0 h4 m23 -28 h-3"/> + <polygon points="107 10 115 6 115 14"/> + <polygon points="107 10 99 6 99 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#lead-or-lag" title="lead_or_lag" shape="rect">lead_or_lag</a></div> + <div>         ::= 'LEAD'</div> + <div>           | 'LAG'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#lead-or-lag-function" title="lead-or-lag-function">lead-or-lag-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + null_treatment +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">RESPECT</text> + <rect x="43" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">IGNORE</text> + <rect x="119" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">NULLS</text> + <path class="line" d="m17 10 h2 m20 0 h4 m48 0 h4 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v8 m76 0 v-8 m-76 8 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m44 0 h4 m0 0 h4 m20 -28 h4 m38 0 h4 m3 0 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#null-treatment" title="null_treatment" shape="rect">null_treatment</a></div> + <div>         ::= ( 'RESPECT' | 'IGNORE' ) 'NULLS'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#first-or-last-value-function" title="first-or-last-value-function">first-or-last-value-function</a></li><li><a href="#lead-or-lag-function" title="lead-or-lag-function">lead-or-lag-function</a></li><li><a href="#nth-value-function" title="nth-value-function">nth-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + first_or_last_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="399" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#first-or-last-value" xlink:title="first_or_last_value" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">first_or_last_value</text></a><rect x="121" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="141" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="13">value_expression</text></a><rect x="239" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="243" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-treatment" xlink:title="null_treatment" shape="rect"> + <rect x="279" y="22" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="34">null_treatment</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h74 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v1 m104 0 v-1 m-104 1 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m76 0 h4 m23 -21 h-3"/> + <polygon points="389 10 397 6 397 14"/> + <polygon points="389 10 381 6 381 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#first-or-last-value-function" title="first_or_last_value_function" shape="rect">first_or_last_value_function</a></div> + <div>         ::= <a href="#first-or-last-value" title="first_or_last_value" shape="rect">first_or_last_value</a> '(' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ')' <a href="#null-treatment" title="null_treatment" shape="rect">null_treatment</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-function-type" title="window-function-type">window-function-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + first_or_last_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">FIRST_VALUE</text> + <rect x="43" y="29" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LAST_VALUE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m68 0 h4 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v8 m96 0 v-8 m-96 8 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m66 0 h4 m0 0 h2 m23 -28 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#first-or-last-value" title="first_or_last_value" shape="rect">first_or_last_value</a></div> + <div>         ::= 'FIRST_VALUE'</div> + <div>           | 'LAST_VALUE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#first-or-last-value-function" title="first-or-last-value-function">first-or-last-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + nth_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="579" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NTH_VALUE</text> + <rect x="93" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="113" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="13">value_expression</text></a><rect x="211" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="215" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nth-row" xlink:title="nth_row" shape="rect"> + <rect x="227" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="231" y="13">nth_row</text></a><rect x="283" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="287" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#from-first-or-last" xlink:title="from_first_or_last" shape="rect"> + <rect x="323" y="22" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="327" y="34">from_first_or_last</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-treatment" xlink:title="null_treatment" shape="rect"> + <rect x="459" y="22" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="463" y="34">null_treatment</text></a><path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h86 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v1 m116 0 v-1 m-116 1 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m88 0 h4 m40 -21 h10 m0 0 h74 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v1 m104 0 v-1 m-104 1 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m76 0 h4 m23 -21 h-3"/> + <polygon points="569 10 577 6 577 14"/> + <polygon points="569 10 561 6 561 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#nth-value-function" title="nth_value_function" shape="rect">nth_value_function</a></div> + <div>         ::= 'NTH_VALUE' '(' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ',' <a href="#nth-row" title="nth_row" shape="rect">nth_row</a> ')' <a href="#from-first-or-last" title="from_first_or_last" shape="rect">from_first_or_last</a>? <a href="#null-treatment" title="null_treatment" shape="rect">null_treatment</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-function-type" title="window-function-type">window-function-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + nth_row +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="43" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">simple_value_specification</text></a><rect x="43" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">?</text> + <path class="line" d="m17 10 h2 m20 0 h4 m128 0 h4 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m12 0 h4 m0 0 h116 m23 -28 h-3"/> + <polygon points="205 10 213 6 213 14"/> + <polygon points="205 10 197 6 197 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#nth-row" title="nth_row" shape="rect">nth_row</a>  ::= <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div> + <div>           | '?'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nth-value-function" title="nth-value-function">nth-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + from_first_or_last +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="165" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FROM</text> + <rect x="87" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="13">FIRST</text> + <rect x="87" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="41">LAST</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m20 0 h4 m34 0 h4 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v8 m62 0 v-8 m-62 8 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m30 0 h4 m0 0 h4 m23 -28 h-3"/> + <polygon points="155 10 163 6 163 14"/> + <polygon points="155 10 147 6 147 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#from-first-or-last" title="from_first_or_last" shape="rect">from_first_or_last</a></div> + <div>         ::= 'FROM' ( 'FIRST' | 'LAST' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nth-value-function" title="nth-value-function">nth-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_name_or_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#in-line-window-specification" xlink:title="in_line_window_specification" shape="rect"> + <rect x="43" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">in_line_window_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m136 0 h4 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m46 0 h4 m0 0 h90 m23 -28 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-name-or-specification" title="window_name_or_specification" shape="rect">window_name_or_specification</a></div> + <div>         ::= <a href="#in-line-window-specification" title="in_line_window_specification" shape="rect">in_line_window_specification</a></div> + <div>           | <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-function" title="window-function">window-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + in_line_window_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="149" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-specification" xlink:title="window_specification" shape="rect"> + <rect x="23" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">window_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m102 0 h4 m3 0 h-3"/> + <polygon points="139 10 147 6 147 14"/> + <polygon points="139 10 131 6 131 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#in-line-window-specification" title="in_line_window_specification" shape="rect">in_line_window_specification</a></div> + <div>         ::= <a href="#window-specification" title="window_specification" shape="rect">window_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-name-or-specification" title="window-name-or-specification">window-name-or-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + case_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#case-abbreviation" xlink:title="case_abbreviation" shape="rect"> + <rect x="43" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">case_abbreviation</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#case-specification" xlink:title="case_specification" shape="rect"> + <rect x="43" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">case_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m92 0 h4 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m90 0 h4 m0 0 h2 m23 -28 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#case-expression" title="case_expression" shape="rect">case_expression</a></div> + <div>         ::= <a href="#case-abbreviation" title="case_abbreviation" shape="rect">case_abbreviation</a></div> + <div>           | <a href="#case-specification" title="case_specification" shape="rect">case_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + case_abbreviation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="435" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NULLIF</text> + <rect x="91" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="111" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">value_expression</text></a><rect x="209" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="213" y="13">,</text> + <rect x="43" y="43" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="55">COALESCE</text> + <rect x="107" y="43" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="55">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="147" y="43" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="55">value_expression</text></a><rect x="245" y="43" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="55">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="301" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="305" y="13">value_expression</text></a><rect x="399" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="403" y="13">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m8 0 h4 m0 0 h56 m-258 0 h20 m238 0 h20 m-278 0 q10 0 10 10 m258 0 q0 -10 10 -10 m-268 10 v22 m258 0 v-22 m-258 22 q0 10 10 10 m238 0 q10 0 10 -10 m-248 10 h4 m56 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m90 0 h4 m0 0 h4 m8 0 h4 m-134 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m114 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-114 0 h10 m0 0 h104 m40 -21 h4 m90 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="425 10 433 6 433 14"/> + <polygon points="425 10 417 6 417 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#case-abbreviation" title="case_abbreviation" shape="rect">case_abbreviation</a></div> + <div>         ::= ( 'NULLIF' '(' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ',' | 'COALESCE' '(' ( <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ',' )+ ) <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#case-expression" title="case-expression">case-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + case_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-case" xlink:title="simple_case" shape="rect"> + <rect x="43" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">simple_case</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#searched-case" xlink:title="searched_case" shape="rect"> + <rect x="43" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">searched_case</text></a><path class="line" d="m17 10 h2 m20 0 h4 m66 0 h4 m0 0 h14 m-108 0 h20 m88 0 h20 m-128 0 q10 0 10 10 m108 0 q0 -10 10 -10 m-118 10 v8 m108 0 v-8 m-108 8 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m80 0 h4 m23 -28 h-3"/> + <polygon points="157 10 165 6 165 14"/> + <polygon points="157 10 149 6 149 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#case-specification" title="case_specification" shape="rect">case_specification</a></div> + <div>         ::= <a href="#simple-case" title="simple_case" shape="rect">simple_case</a></div> + <div>           | <a href="#searched-case" title="searched_case" shape="rect">searched_case</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#case-expression" title="case-expression">case-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + simple_case +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="461" height="54"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="23" y="13" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="25">CASE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#case-operand" xlink:title="case_operand" shape="rect"> + <rect x="63" y="13" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="25">case_operand</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-when-clause" xlink:title="simple_when_clause" shape="rect"> + <rect x="167" y="13" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="25">simple_when_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#else-clause" xlink:title="else_clause" shape="rect"> + <rect x="321" y="34" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="325" y="46">else_clause</text></a><rect x="411" y="13" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="415" y="25">END</text> + <path class="line" d="m17 22 h2 m0 0 h4 m32 0 h4 m0 0 h4 m76 0 h4 m20 0 h4 m106 0 h4 m-134 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m114 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-114 0 h10 m0 0 h104 m40 21 h10 m0 0 h60 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v1 m90 0 v-1 m-90 1 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m62 0 h4 m20 -21 h4 m26 0 h4 m3 0 h-3"/> + <polygon points="451 22 459 18 459 26"/> + <polygon points="451 22 443 18 443 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-case" title="simple_case" shape="rect">simple_case</a></div> + <div>         ::= 'CASE' <a href="#case-operand" title="case_operand" shape="rect">case_operand</a> <a href="#simple-when-clause" title="simple_when_clause" shape="rect">simple_when_clause</a>+ <a href="#else-clause" title="else_clause" shape="rect">else_clause</a>? 'END'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#case-specification" title="case-specification">case-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + searched_case +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="389" height="54"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="23" y="13" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="25">CASE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#searched-when-clause" xlink:title="searched_when_clause" shape="rect"> + <rect x="83" y="13" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="25">searched_when_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#else-clause" xlink:title="else_clause" shape="rect"> + <rect x="249" y="34" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="46">else_clause</text></a><rect x="339" y="13" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="343" y="25">END</text> + <path class="line" d="m17 22 h2 m0 0 h4 m32 0 h4 m20 0 h4 m118 0 h4 m-146 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m126 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-126 0 h10 m0 0 h116 m40 21 h10 m0 0 h60 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v1 m90 0 v-1 m-90 1 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m62 0 h4 m20 -21 h4 m26 0 h4 m3 0 h-3"/> + <polygon points="379 22 387 18 387 26"/> + <polygon points="379 22 371 18 371 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#searched-case" title="searched_case" shape="rect">searched_case</a></div> + <div>         ::= 'CASE' <a href="#searched-when-clause" title="searched_when_clause" shape="rect">searched_when_clause</a>+ <a href="#else-clause" title="else_clause" shape="rect">else_clause</a>? 'END'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#case-specification" title="case-specification">case-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + simple_when_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="273" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WHEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#when-operand-list" xlink:title="when_operand_list" shape="rect"> + <rect x="69" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="73" y="13">when_operand_list</text></a><rect x="175" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="179" y="13">THEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result" xlink:title="result" shape="rect"> + <rect x="215" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="13">result</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m98 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="263 10 271 6 271 14"/> + <polygon points="263 10 255 6 255 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-when-clause" title="simple_when_clause" shape="rect">simple_when_clause</a></div> + <div>         ::= 'WHEN' <a href="#when-operand-list" title="when_operand_list" shape="rect">when_operand_list</a> 'THEN' <a href="#result" title="result" shape="rect">result</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#simple-case" title="simple-case">simple-case</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + searched_when_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WHEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="69" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="73" y="13">search_condition</text></a><rect x="163" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="13">THEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result" xlink:title="result" shape="rect"> + <rect x="203" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="207" y="13">result</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="251 10 259 6 259 14"/> + <polygon points="251 10 243 6 243 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#searched-when-clause" title="searched_when_clause" shape="rect">searched_when_clause</a></div> + <div>         ::= 'WHEN' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> 'THEN' <a href="#result" title="result" shape="rect">result</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#searched-case" title="searched-case">searched-case</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + else_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="117" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ELSE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result" xlink:title="result" shape="rect"> + <rect x="59" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">result</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="107 10 115 6 115 14"/> + <polygon points="107 10 99 6 99 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#else-clause" title="else_clause" shape="rect">else_clause</a></div> + <div>         ::= 'ELSE' <a href="#result" title="result" shape="rect">result</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#searched-case" title="searched-case">searched-case</a></li><li><a href="#simple-case" title="simple-case">simple-case</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + case_operand +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="43" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">row_value_predicand</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#overlaps-predicate-part-1" xlink:title="overlaps_predicate_part_1" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">overlaps_predicate_part_1</text></a><path class="line" d="m17 10 h2 m20 0 h4 m108 0 h4 m0 0 h24 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v8 m160 0 v-8 m-160 8 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m23 -28 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#case-operand" title="case_operand" shape="rect">case_operand</a></div> + <div>         ::= <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div> + <div>           | <a href="#overlaps-predicate-part-1" title="overlaps_predicate_part_1" shape="rect">overlaps_predicate_part_1</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#simple-case" title="simple-case">simple-case</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + when_operand_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#when-operand" xlink:title="when_operand" shape="rect"> + <rect x="43" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">when_operand</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m80 0 h4 m-108 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m88 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-88 0 h4 m8 0 h4 m0 0 h72 m23 28 h-3"/> + <polygon points="157 38 165 34 165 42"/> + <polygon points="157 38 149 34 149 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#when-operand-list" title="when_operand_list" shape="rect">when_operand_list</a></div> + <div>         ::= <a href="#when-operand" title="when_operand" shape="rect">when_operand</a> ( ',' <a href="#when-operand" title="when_operand" shape="rect">when_operand</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#simple-when-clause" title="simple-when-clause">simple-when-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + when_operand +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="283" height="497"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="43" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">row_value_predicand</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comparison-predicate-part-2" xlink:title="comparison_predicate_part_2" shape="rect"> + <rect x="43" y="29" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">comparison_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#between-predicate-part-2" xlink:title="between_predicate_part_2" shape="rect"> + <rect x="43" y="57" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">between_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#in-predicate-part-2" xlink:title="in_predicate_part_2" shape="rect"> + <rect x="43" y="85" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">in_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-like-predicate-part-2" xlink:title="character_like_predicate_part_2" shape="rect"> + <rect x="43" y="113" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">character_like_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#octet-like-predicate-part-2" xlink:title="octet_like_predicate_part_2" shape="rect"> + <rect x="43" y="141" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">octet_like_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#similar-predicate-part-2" xlink:title="similar_predicate_part_2" shape="rect"> + <rect x="43" y="169" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">similar_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-like-predicate-part-2" xlink:title="regex_like_predicate_part_2" shape="rect"> + <rect x="43" y="197" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">regex_like_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-predicate-part-2" xlink:title="null_predicate_part_2" shape="rect"> + <rect x="43" y="225" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">null_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#quantified-comparison-predicate-part-2" xlink:title="quantified_comparison_predicate_part_2" shape="rect"> + <rect x="43" y="253" width="196" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">quantified_comparison_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#normalized-predicate-part-2" xlink:title="normalized_predicate_part_2" shape="rect"> + <rect x="43" y="281" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="293">normalized_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#match-predicate-part-2" xlink:title="match_predicate_part_2" shape="rect"> + <rect x="43" y="309" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="321">match_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#overlaps-predicate-part-2" xlink:title="overlaps_predicate_part_2" shape="rect"> + <rect x="43" y="337" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="349">overlaps_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#distinct-predicate-part-2" xlink:title="distinct_predicate_part_2" shape="rect"> + <rect x="43" y="365" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="377">distinct_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#member-predicate-part-2" xlink:title="member_predicate_part_2" shape="rect"> + <rect x="43" y="393" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="405">member_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#submultiset-predicate-part-2" xlink:title="submultiset_predicate_part_2" shape="rect"> + <rect x="43" y="421" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="433">submultiset_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-predicate-part-2" xlink:title="set_predicate_part_2" shape="rect"> + <rect x="43" y="449" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="461">set_predicate_part_2</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#type-predicate-part-2" xlink:title="type_predicate_part_2" shape="rect"> + <rect x="43" y="477" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="489">type_predicate_part_2</text></a><path class="line" d="m17 10 h2 m20 0 h4 m108 0 h4 m0 0 h88 m-224 0 h20 m204 0 h20 m-244 0 q10 0 10 10 m224 0 q0 -10 10 -10 m-234 10 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m146 0 h4 m0 0 h50 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m134 0 h4 m0 0 h62 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m100 0 h4 m0 0 h96 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m154 0 h4 m0 0 h42 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m136 0 h4 m0 0 h60 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m120 0 h4 m0 0 h76 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m140 0 h4 m0 0 h56 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m108 0 h4 m0 0 h88 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m196 0 h4 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m144 0 h4 m0 0 h52 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m122 0 h4 m0 0 h74 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m132 0 h4 m0 0 h64 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m124 0 h4 m0 0 h72 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m134 0 h4 m0 0 h62 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m146 0 h4 m0 0 h50 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m108 0 h4 m0 0 h88 m-214 -10 v20 m224 0 v-20 m-224 20 v8 m224 0 v-8 m-224 8 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m114 0 h4 m0 0 h82 m23 -476 h-3"/> + <polygon points="273 10 281 6 281 14"/> + <polygon points="273 10 265 6 265 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#when-operand" title="when_operand" shape="rect">when_operand</a></div> + <div>         ::= <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div> + <div>           | <a href="#comparison-predicate-part-2" title="comparison_predicate_part_2" shape="rect">comparison_predicate_part_2</a></div> + <div>           | <a href="#between-predicate-part-2" title="between_predicate_part_2" shape="rect">between_predicate_part_2</a></div> + <div>           | <a href="#in-predicate-part-2" title="in_predicate_part_2" shape="rect">in_predicate_part_2</a></div> + <div>           | <a href="#character-like-predicate-part-2" title="character_like_predicate_part_2" shape="rect">character_like_predicate_part_2</a></div> + <div>           | <a href="#octet-like-predicate-part-2" title="octet_like_predicate_part_2" shape="rect">octet_like_predicate_part_2</a></div> + <div>           | <a href="#similar-predicate-part-2" title="similar_predicate_part_2" shape="rect">similar_predicate_part_2</a></div> + <div>           | <a href="#regex-like-predicate-part-2" title="regex_like_predicate_part_2" shape="rect">regex_like_predicate_part_2</a></div> + <div>           | <a href="#null-predicate-part-2" title="null_predicate_part_2" shape="rect">null_predicate_part_2</a></div> + <div>           | <a href="#quantified-comparison-predicate-part-2" title="quantified_comparison_predicate_part_2" shape="rect">quantified_comparison_predicate_part_2</a></div> + <div>           | <a href="#normalized-predicate-part-2" title="normalized_predicate_part_2" shape="rect">normalized_predicate_part_2</a></div> + <div>           | <a href="#match-predicate-part-2" title="match_predicate_part_2" shape="rect">match_predicate_part_2</a></div> + <div>           | <a href="#overlaps-predicate-part-2" title="overlaps_predicate_part_2" shape="rect">overlaps_predicate_part_2</a></div> + <div>           | <a href="#distinct-predicate-part-2" title="distinct_predicate_part_2" shape="rect">distinct_predicate_part_2</a></div> + <div>           | <a href="#member-predicate-part-2" title="member_predicate_part_2" shape="rect">member_predicate_part_2</a></div> + <div>           | <a href="#submultiset-predicate-part-2" title="submultiset_predicate_part_2" shape="rect">submultiset_predicate_part_2</a></div> + <div>           | <a href="#set-predicate-part-2" title="set_predicate_part_2" shape="rect">set_predicate_part_2</a></div> + <div>           | <a href="#type-predicate-part-2" title="type_predicate_part_2" shape="rect">type_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#when-operand-list" title="when-operand-list">when-operand-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + result +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><rect x="43" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NULL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m32 0 h4 m0 0 h58 m23 -28 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#result" title="result" shape="rect">result</a>   ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>           | 'NULL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#else-clause" title="else-clause">else-clause</a></li><li><a href="#searched-when-clause" title="searched-when-clause">searched-when-clause</a></li><li><a href="#simple-when-clause" title="simple-when-clause">simple-when-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cast_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="335" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CAST</text> + <rect x="83" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-operand" xlink:title="cast_operand" shape="rect"> + <rect x="103" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="13">cast_operand</text></a><rect x="183" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-target" xlink:title="cast_target" shape="rect"> + <rect x="211" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="215" y="13">cast_target</text></a><rect x="279" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="283" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#try-cast" xlink:title="try_cast" shape="rect"> + <rect x="43" y="29" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">try_cast</text></a><path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m72 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m-276 0 h20 m256 0 h20 m-296 0 q10 0 10 10 m276 0 q0 -10 10 -10 m-286 10 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m44 0 h4 m0 0 h204 m23 -28 h-3"/> + <polygon points="325 10 333 6 333 14"/> + <polygon points="325 10 317 6 317 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cast-specification" title="cast_specification" shape="rect">cast_specification</a></div> + <div>         ::= 'CAST' '(' <a href="#cast-operand" title="cast_operand" shape="rect">cast_operand</a> 'AS' <a href="#cast-target" title="cast_target" shape="rect">cast_target</a> ')'</div> + <div>           | <a href="#try-cast" title="try_cast" shape="rect">try_cast</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cast_operand +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#implicitly-typed-value-specification" xlink:title="implicitly_typed_value_specification" shape="rect"> + <rect x="43" y="29" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">implicitly_typed_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h74 m-192 0 h20 m172 0 h20 m-212 0 q10 0 10 10 m192 0 q0 -10 10 -10 m-202 10 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m164 0 h4 m23 -28 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cast-operand" title="cast_operand" shape="rect">cast_operand</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>           | <a href="#implicitly-typed-value-specification" title="implicitly_typed_value_specification" shape="rect">implicitly_typed_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cast-specification" title="cast-specification">cast-specification</a></li><li><a href="#try-cast" title="try-cast">try-cast</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cast_target +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="43" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="43" y="29" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m56 0 h4 m0 0 h66 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v8 m150 0 v-8 m-150 8 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m122 0 h4 m23 -28 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cast-target" title="cast_target" shape="rect">cast_target</a></div> + <div>         ::= <a href="#data-type" title="data_type" shape="rect">data_type</a></div> + <div>           | <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cast-specification" title="cast-specification">cast-specification</a></li><li><a href="#try-cast" title="try-cast">try-cast</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + next_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NEXT</text> + <rect x="63" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">VALUE</text> + <rect x="107" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="141" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="13">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#next-value-expression" title="next_value_expression" shape="rect">next_value_expression</a></div> + <div>         ::= 'NEXT' 'VALUE' 'FOR' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + field_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="109" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="39" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="43" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m8 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="99 10 107 6 107 14"/> + <polygon points="99 10 91 6 91 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#field-reference" title="field_reference" shape="rect">field_reference</a></div> + <div>         ::= '.' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primary-suffix" title="primary-suffix">primary-suffix</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + subtype_treatment +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="337" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TREAT</text> + <rect x="67" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="87" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">value_expression</text></a><rect x="185" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-subtype" xlink:title="target_subtype" shape="rect"> + <rect x="213" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="13">target_subtype</text></a><rect x="301" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="305" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m80 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="327 10 335 6 335 14"/> + <polygon points="327 10 319 6 319 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#subtype-treatment" title="subtype_treatment" shape="rect">subtype_treatment</a></div> + <div>         ::= 'TREAT' '(' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> 'AS' <a href="#target-subtype" title="target_subtype" shape="rect">target_subtype</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + target_subtype +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="43" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">path_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-type" xlink:title="reference_type" shape="rect"> + <rect x="43" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">reference_type</text></a><path class="line" d="m17 10 h2 m20 0 h4 m200 0 h4 m-228 0 h20 m208 0 h20 m-248 0 q10 0 10 10 m228 0 q0 -10 10 -10 m-238 10 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m78 0 h4 m0 0 h122 m23 -28 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#target-subtype" title="target_subtype" shape="rect">target_subtype</a></div> + <div>         ::= <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div> + <div>           | <a href="#reference-type" title="reference_type" shape="rect">reference_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#subtype-treatment" title="subtype-treatment">subtype-treatment</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + method_invocation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="271" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#direct-invocation" xlink:title="direct_invocation" shape="rect"> + <rect x="43" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">direct_invocation</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#udaf-filter" xlink:title="udaf_filter" shape="rect"> + <rect x="155" y="22" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="34">udaf_filter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#generalized-invocation" xlink:title="generalized_invocation" shape="rect"> + <rect x="43" y="50" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="62">generalized_invocation</text></a><path class="line" d="m17 10 h2 m20 0 h4 m84 0 h4 m20 0 h10 m0 0 h50 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v1 m80 0 v-1 m-80 1 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m-192 -21 h20 m192 0 h20 m-232 0 q10 0 10 10 m212 0 q0 -10 10 -10 m-222 10 v29 m212 0 v-29 m-212 29 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m114 0 h4 m0 0 h70 m23 -49 h-3"/> + <polygon points="261 10 269 6 269 14"/> + <polygon points="261 10 253 6 253 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#method-invocation" title="method_invocation" shape="rect">method_invocation</a></div> + <div>         ::= <a href="#direct-invocation" title="direct_invocation" shape="rect">direct_invocation</a> <a href="#udaf-filter" title="udaf_filter" shape="rect">udaf_filter</a>?</div> + <div>           | <a href="#generalized-invocation" title="generalized_invocation" shape="rect">generalized_invocation</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#new-invocation" title="new-invocation">new-invocation</a></li><li><a href="#primary-suffix" title="primary-suffix">primary-suffix</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + direct_invocation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-argument-list" xlink:title="SQL_argument_list" shape="rect"> + <rect x="23" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SQL_argument_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="133 10 141 6 141 14"/> + <polygon points="133 10 125 6 125 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#direct-invocation" title="direct_invocation" shape="rect">direct_invocation</a></div> + <div>         ::= <a href="#sql-argument-list" title="SQL_argument_list" shape="rect">SQL_argument_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#method-invocation" title="method-invocation">method-invocation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + generalized_invocation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="39" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="43" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-argument-list" xlink:title="SQL_argument_list" shape="rect"> + <rect x="113" y="22" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="34">SQL_argument_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m8 0 h4 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m96 0 h4 m23 -21 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#generalized-invocation" title="generalized_invocation" shape="rect">generalized_invocation</a></div> + <div>         ::= '.' <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#sql-argument-list" title="SQL_argument_list" shape="rect">SQL_argument_list</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#method-invocation" title="method-invocation">method-invocation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + static_method_invocation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="257" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">::</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-argument-list" xlink:title="SQL_argument_list" shape="rect"> + <rect x="117" y="22" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="34">SQL_argument_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m96 0 h4 m23 -21 h-3"/> + <polygon points="247 10 255 6 255 14"/> + <polygon points="247 10 239 6 239 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#static-method-invocation" title="static_method_invocation" shape="rect">static_method_invocation</a></div> + <div>         ::= '::' <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#sql-argument-list" title="SQL_argument_list" shape="rect">SQL_argument_list</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primary-suffix" title="primary-suffix">primary-suffix</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + new_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="389" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NEW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="61" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="65" y="13">path_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-argument-list" xlink:title="SQL_argument_list" shape="rect"> + <rect x="269" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="273" y="13">SQL_argument_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m30 0 h4 m0 0 h4 m200 0 h4 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="379 10 387 6 387 14"/> + <polygon points="379 10 371 6 371 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#new-specification" title="new_specification" shape="rect">new_specification</a></div> + <div>         ::= 'NEW' <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a> <a href="#sql-argument-list" title="SQL_argument_list" shape="rect">SQL_argument_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + new_invocation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#method-invocation" xlink:title="method_invocation" shape="rect"> + <rect x="43" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">method_invocation</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-invocation" xlink:title="routine_invocation" shape="rect"> + <rect x="43" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">routine_invocation</text></a><path class="line" d="m17 10 h2 m20 0 h4 m98 0 h4 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v8 m126 0 v-8 m-126 8 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m92 0 h4 m0 0 h6 m23 -28 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#new-invocation" title="new_invocation" shape="rect">new_invocation</a></div> + <div>         ::= <a href="#method-invocation" title="method_invocation" shape="rect">method_invocation</a></div> + <div>           | <a href="#routine-invocation" title="routine_invocation" shape="rect">routine_invocation</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + attribute_or_method_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="121" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lambda-body" xlink:title="lambda_body" shape="rect"> + <rect x="23" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">lambda_body</text></a><path class="line" d="m17 10 h2 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="111 10 119 6 119 14"/> + <polygon points="111 10 103 6 103 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#attribute-or-method-reference" title="attribute_or_method_reference" shape="rect">attribute_or_method_reference</a></div> + <div>         ::= <a href="#lambda-body" title="lambda_body" shape="rect">lambda_body</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primary-suffix" title="primary-suffix">primary-suffix</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dereference_operation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-value-expression" xlink:title="reference_value_expression" shape="rect"> + <rect x="23" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">reference_value_expression</text></a><rect x="169" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="13">-></text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="195" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="199" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m138 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dereference-operation" title="dereference_operation" shape="rect">dereference_operation</a></div> + <div>         ::= <a href="#reference-value-expression" title="reference_value_expression" shape="rect">reference_value_expression</a> '->' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + reference_resolution +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="269" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DEREF</text> + <rect x="67" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-value-expression" xlink:title="reference_value_expression" shape="rect"> + <rect x="87" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">reference_value_expression</text></a><rect x="233" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="259 10 267 6 267 14"/> + <polygon points="259 10 251 6 251 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#reference-resolution" title="reference_resolution" shape="rect">reference_resolution</a></div> + <div>         ::= 'DEREF' '(' <a href="#reference-value-expression" title="reference_value_expression" shape="rect">reference_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_element_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="395" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#left-bracket-or-trigraph" xlink:title="left_bracket_or_trigraph" shape="rect"> + <rect x="23" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">left_bracket_or_trigraph</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="149" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="153" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#right-bracket-or-trigraph" xlink:title="right_bracket_or_trigraph" shape="rect"> + <rect x="247" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="251" y="13">right_bracket_or_trigraph</text></a><path class="line" d="m17 10 h2 m0 0 h4 m118 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="385 10 393 6 393 14"/> + <polygon points="385 10 377 6 377 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-element-reference" title="array_element_reference" shape="rect">array_element_reference</a></div> + <div>         ::= <a href="#left-bracket-or-trigraph" title="left_bracket_or_trigraph" shape="rect">left_bracket_or_trigraph</a> <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> <a href="#right-bracket-or-trigraph" title="right_bracket_or_trigraph" shape="rect">right_bracket_or_trigraph</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primary-suffix" title="primary-suffix">primary-suffix</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_element_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="273" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ELEMENT</text> + <rect x="79" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-expression" xlink:title="multiset_value_expression" shape="rect"> + <rect x="99" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">multiset_value_expression</text></a><rect x="237" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="241" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m130 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="263 10 271 6 271 14"/> + <polygon points="263 10 255 6 255 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-element-reference" title="multiset_element_reference" shape="rect">multiset_element_reference</a></div> + <div>         ::= 'ELEMENT' '(' <a href="#multiset-value-expression" title="multiset_value_expression" shape="rect">multiset_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-value-expression" xlink:title="boolean_value_expression" shape="rect"> + <rect x="43" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">boolean_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#common-value-expression" xlink:title="common_value_expression" shape="rect"> + <rect x="43" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">common_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-expression" xlink:title="row_value_expression" shape="rect"> + <rect x="43" y="57" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">row_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m132 0 h4 m0 0 h4 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m112 0 h4 m0 0 h24 m23 -56 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>         ::= <a href="#boolean-value-expression" title="boolean_value_expression" shape="rect">boolean_value_expression</a></div> + <div>           | <a href="#common-value-expression" title="common_value_expression" shape="rect">common_value_expression</a></div> + <div>           | <a href="#row-value-expression" title="row_value_expression" shape="rect">row_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-argument" title="sql-argument">sql-argument</a></li><li><a href="#array-aggregate-function" title="array-aggregate-function">array-aggregate-function</a></li><li><a href="#array-element" title="array-element">array-element</a></li><li><a href="#array-element-reference" title="array-element-reference">array-element-reference</a></li><li><a href="#case-abbreviation" title="case-abbreviation">case-abbreviation</a></li><li><a href="#cast-operand" title="cast-operand">cast-operand</a></li><li><a href="#count" title="count">count</a></li><li><a href="#cycle-clause" title="cycle-clause">cycle-clause</a></li><li><a href="#derived-column" title="derived-column">derived-column</a></li><li><a href="#extra-args-to-agg" title="extra-args-to-agg">extra-args-to-agg</a></li><li><a href="#first-or-last-value-function" title="first-or-last-value-function">first-or-last-value-function</a></li><li><a href="#general-set-function" title="general-set-function">general-set-function</a></li><li><a href="#generation-expression" title="generation-expression">generation-expression</a></li><li><a href="#grouping-expression" title="grouping-expression">grouping-expression</a></li><li><a href="#hypothetical-set-function-value-expression-list" title="hypothetical-set-function-value-expression-list">hypothetical-set-function-value-expression-list</a></li><li><a href="#lambda-body" title="lambda-body">lambda-body</a></li><li><a href="#lead-or-lag-function" title="lead-or-lag-function">lead-or-lag-function</a></li><li><a href="#merge-insert-value-element" title="merge-insert-value-element">merge-insert-value-element</a></li><li><a href="#multiset-element" title="multiset-element">multiset-element</a></li><li><a href="#named-argument-sql-argument" title="named-argument-sql-argument">named-argument-sql-argument</a></li><li><a href="#nth-value-function" title="nth-value-function">nth-value-function</a></li><li><a href="#number-of-tiles" title="number-of-tiles">number-of-tiles</a></li><li><a href="#parameter-default" title="parameter-default">parameter-default</a></li><li><a href="#parenthesized-value-expression" title="parenthesized-value-expression">parenthesized-value-expression</a></li><li><a href="#presto-aggregations" title="presto-aggregations">presto-aggregations</a></li><li><a href="#result" title="result">result</a></li><li><a href="#return-value" title="return-value">return-value</a></li><li><a href="#row-value-constructor-element" title="row-value-constructor-element">row-value-constructor-element</a></li><li><a href="#sort-key" title="sort-key">sort-key</a></li><li><a href="#subtype-treatment" title="subtype-treatment">subtype-treatment</a></li><li><a href="#table-attributes" title="table-attributes">table-attributes</a></li><li><a href="#update-source" title="update-source">update-source</a></li><li><a href="#window-frame-following" title="window-frame-following">window-frame-following</a></li><li><a href="#window-frame-preceding" title="window-frame-preceding">window-frame-preceding</a></li><li><a href="#window-partition-column-reference" title="window-partition-column-reference">window-partition-column-reference</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + common_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="269" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="43" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">numeric_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#string-value-expression" xlink:title="string_value_expression" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">string_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-value-expression" xlink:title="datetime_value_expression" shape="rect"> + <rect x="43" y="57" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">datetime_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-value-expression" xlink:title="interval_value_expression" shape="rect"> + <rect x="43" y="85" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">interval_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-value-expression" xlink:title="user_defined_type_value_expression" shape="rect"> + <rect x="43" y="113" width="182" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">user_defined_type_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-value-expression" xlink:title="reference_value_expression" shape="rect"> + <rect x="43" y="141" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">reference_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collection-value-expression" xlink:title="collection_value_expression" shape="rect"> + <rect x="43" y="169" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">collection_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m132 0 h4 m0 0 h50 m-210 0 h20 m190 0 h20 m-230 0 q10 0 10 10 m210 0 q0 -10 10 -10 m-220 10 v8 m210 0 v-8 m-210 8 q0 10 10 10 m190 0 q10 0 10 -10 m-200 10 h4 m120 0 h4 m0 0 h62 m-200 -10 v20 m210 0 v-20 m-210 20 v8 m210 0 v-8 m-210 8 q0 10 10 10 m190 0 q10 0 10 -10 m-200 10 h4 m136 0 h4 m0 0 h46 m-200 -10 v20 m210 0 v-20 m-210 20 v8 m210 0 v-8 m-210 8 q0 10 10 10 m190 0 q10 0 10 -10 m-200 10 h4 m128 0 h4 m0 0 h54 m-200 -10 v20 m210 0 v-20 m-210 20 v8 m210 0 v-8 m-210 8 q0 10 10 10 m190 0 q10 0 10 -10 m-200 10 h4 m182 0 h4 m-200 -10 v20 m210 0 v-20 m-210 20 v8 m210 0 v-8 m-210 8 q0 10 10 10 m190 0 q10 0 10 -10 m-200 10 h4 m138 0 h4 m0 0 h44 m-200 -10 v20 m210 0 v-20 m-210 20 v8 m210 0 v-8 m-210 8 q0 10 10 10 m190 0 q10 0 10 -10 m-200 10 h4 m134 0 h4 m0 0 h48 m23 -168 h-3"/> + <polygon points="259 10 267 6 267 14"/> + <polygon points="259 10 251 6 251 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#common-value-expression" title="common_value_expression" shape="rect">common_value_expression</a></div> + <div>         ::= <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div> + <div>           | <a href="#string-value-expression" title="string_value_expression" shape="rect">string_value_expression</a></div> + <div>           | <a href="#datetime-value-expression" title="datetime_value_expression" shape="rect">datetime_value_expression</a></div> + <div>           | <a href="#interval-value-expression" title="interval_value_expression" shape="rect">interval_value_expression</a></div> + <div>           | <a href="#user-defined-type-value-expression" title="user_defined_type_value_expression" shape="rect">user_defined_type_value_expression</a></div> + <div>           | <a href="#reference-value-expression" title="reference_value_expression" shape="rect">reference_value_expression</a></div> + <div>           | <a href="#collection-value-expression" title="collection_value_expression" shape="rect">collection_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#contextually-typed-row-value-constructor" title="contextually-typed-row-value-constructor">contextually-typed-row-value-constructor</a></li><li><a href="#row-value-constructor" title="row-value-constructor">row-value-constructor</a></li><li><a href="#row-value-constructor-predicand" title="row-value-constructor-predicand">row-value-constructor-predicand</a></li><li><a href="#row-value-special-case" title="row-value-special-case">row-value-special-case</a></li><li><a href="#value-expression" title="value-expression">value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_type_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression-primary" xlink:title="value_expression_primary" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression_primary</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-type-value-expression" title="user_defined_type_value_expression" shape="rect">user_defined_type_value_expression</a></div> + <div>         ::= <a href="#value-expression-primary" title="value_expression_primary" shape="rect">value_expression_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#common-value-expression" title="common-value-expression">common-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + reference_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression-primary" xlink:title="value_expression_primary" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression_primary</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#reference-value-expression" title="reference_value_expression" shape="rect">reference_value_expression</a></div> + <div>         ::= <a href="#value-expression-primary" title="value_expression_primary" shape="rect">value_expression_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#common-value-expression" title="common-value-expression">common-value-expression</a></li><li><a href="#dereference-operation" title="dereference-operation">dereference-operation</a></li><li><a href="#reference-resolution" title="reference-resolution">reference-resolution</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + collection_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-expression" xlink:title="array_value_expression" shape="rect"> + <rect x="43" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">array_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-expression" xlink:title="multiset_value_expression" shape="rect"> + <rect x="43" y="29" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">multiset_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m118 0 h4 m0 0 h12 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m130 0 h4 m23 -28 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#collection-value-expression" title="collection_value_expression" shape="rect">collection_value_expression</a></div> + <div>         ::= <a href="#array-value-expression" title="array_value_expression" shape="rect">array_value_expression</a></div> + <div>           | <a href="#multiset-value-expression" title="multiset_value_expression" shape="rect">multiset_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cardinality-expression" title="cardinality-expression">cardinality-expression</a></li><li><a href="#collection-derived-table" title="collection-derived-table">collection-derived-table</a></li><li><a href="#common-value-expression" title="common-value-expression">common-value-expression</a></li><li><a href="#table-function-derived-table" title="table-function-derived-table">table-function-derived-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + numeric_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="119" height="77"> + <polygon points="9 66 1 62 1 70"/> + <polygon points="17 66 9 62 9 70"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#term" xlink:title="term" shape="rect"> + <rect x="43" y="57" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">term</text></a><rect x="43" y="29" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">+</text> + <rect x="43" y="1" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">-</text> + <path class="line" d="m17 66 h2 m20 0 h4 m32 0 h4 m-60 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m40 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-40 0 h4 m14 0 h4 m0 0 h18 m-50 10 l0 -28 q0 -10 10 -10 m50 38 l0 -28 q0 -10 -10 -10 m-40 0 h4 m10 0 h4 m0 0 h22 m23 56 h-3"/> + <polygon points="109 66 117 62 117 70"/> + <polygon points="109 66 101 62 101 70"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div> + <div>         ::= <a href="#term" title="term" shape="rect">term</a> ( ( '+' | '-' ) <a href="#term" title="term" shape="rect">term</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#absolute-value-expression" title="absolute-value-expression">absolute-value-expression</a></li><li><a href="#binary-overlay-function" title="binary-overlay-function">binary-overlay-function</a></li><li><a href="#binary-substring-function" title="binary-substring-function">binary-substring-function</a></li><li><a href="#boolean-predicand" title="boolean-predicand">boolean-predicand</a></li><li><a href="#ceiling-function" title="ceiling-function">ceiling-function</a></li><li><a href="#character-overlay-function" title="character-overlay-function">character-overlay-function</a></li><li><a href="#character-substring-function" title="character-substring-function">character-substring-function</a></li><li><a href="#common-value-expression" title="common-value-expression">common-value-expression</a></li><li><a href="#dependent-variable-expression" title="dependent-variable-expression">dependent-variable-expression</a></li><li><a href="#exponential-function" title="exponential-function">exponential-function</a></li><li><a href="#floor-function" title="floor-function">floor-function</a></li><li><a href="#independent-variable-expression" title="independent-variable-expression">independent-variable-expression</a></li><li><a href="#inverse-distribution-function-argument" title="inverse-distribution-function-argument">inverse-distribution-function-argument</a></li><li><a href="#modulus-expression" title="modulus-expression">modulus-expression</a></li><li><a href="#natural-logarithm" title="natural-logarithm">natural-logarithm</a></li><li><a href="#power-function" title="power-function">power-function</a></li><li><a href="#regex-occurrences-function" title="regex-occurrences-function">regex-occurrences-function</a></li><li><a href="#regex-position-expression" title="regex-position-expression">regex-position-expression</a></li><li><a href="#regex-substring-function" title="regex-substring-function">regex-substring-function</a></li><li><a href="#regex-transliteration" title="regex-transliteration">regex-transliteration</a></li><li><a href="#regex-transliteration-occurrence" title="regex-transliteration-occurrence">regex-transliteration-occurrence</a></li><li><a href="#repeat-argument" title="repeat-argument">repeat-argument</a></li><li><a href="#sample-percentage" title="sample-percentage">sample-percentage</a></li><li><a href="#square-root" title="square-root">square-root</a></li><li><a href="#trim-array-function" title="trim-array-function">trim-array-function</a></li><li><a href="#width-bucket-function" title="width-bucket-function">width-bucket-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + term +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="121" height="105"> + <polygon points="9 94 1 90 1 98"/> + <polygon points="17 94 9 90 9 98"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#factor" xlink:title="factor" shape="rect"> + <rect x="43" y="85" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">factor</text></a><rect x="43" y="57" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">*</text> + <rect x="43" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">/</text> + <rect x="43" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">%</text> + <path class="line" d="m17 94 h2 m20 0 h4 m34 0 h4 m-62 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m42 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-42 0 h4 m14 0 h4 m0 0 h20 m-52 10 l0 -28 q0 -10 10 -10 m52 38 l0 -28 q0 -10 -10 -10 m-42 0 h4 m12 0 h4 m0 0 h22 m-52 10 l0 -28 q0 -10 10 -10 m52 38 l0 -28 q0 -10 -10 -10 m-42 0 h4 m20 0 h4 m0 0 h14 m23 84 h-3"/> + <polygon points="111 94 119 90 119 98"/> + <polygon points="111 94 103 90 103 98"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#term" title="term" shape="rect">term</a>     ::= <a href="#factor" title="factor" shape="rect">factor</a> ( ( '*' | '/' | '%' ) <a href="#factor" title="factor" shape="rect">factor</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-expression" title="numeric-value-expression">numeric-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + factor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">+</text> + <rect x="43" y="50" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">-</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-primary" xlink:title="numeric_primary" shape="rect"> + <rect x="85" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">numeric_primary</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h12 m-42 0 h20 m22 0 h20 m-62 0 q10 0 10 10 m42 0 q0 -10 10 -10 m-52 10 v1 m42 0 v-1 m-42 1 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m14 0 h4 m-32 -10 v20 m42 0 v-20 m-42 20 v8 m42 0 v-8 m-42 8 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m10 0 h4 m0 0 h4 m20 -49 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="185 10 193 6 193 14"/> + <polygon points="185 10 177 6 177 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#factor" title="factor" shape="rect">factor</a>   ::= ( '+' | '-' )? <a href="#numeric-primary" title="numeric_primary" shape="rect">numeric_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-term" title="interval-term">interval-term</a></li><li><a href="#term" title="term">term</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + numeric_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-function" xlink:title="numeric_value_function" shape="rect"> + <rect x="43" y="1" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">numeric_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="43" y="29" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">character_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m116 0 h4 m0 0 h22 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m138 0 h4 m23 -28 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#numeric-primary" title="numeric_primary" shape="rect">numeric_primary</a></div> + <div>         ::= <a href="#numeric-value-function" title="numeric_value_function" shape="rect">numeric_value_function</a></div> + <div>           | <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#factor" title="factor">factor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + numeric_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="441"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#position-expression" xlink:title="position_expression" shape="rect"> + <rect x="43" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">position_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-occurrences-function" xlink:title="regex_occurrences_function" shape="rect"> + <rect x="43" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">regex_occurrences_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-position-expression" xlink:title="regex_position_expression" shape="rect"> + <rect x="43" y="57" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">regex_position_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extract-expression" xlink:title="extract_expression" shape="rect"> + <rect x="43" y="85" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">extract_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#length-expression" xlink:title="length_expression" shape="rect"> + <rect x="43" y="113" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">length_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cardinality-expression" xlink:title="cardinality_expression" shape="rect"> + <rect x="43" y="141" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">cardinality_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#max-cardinality-expression" xlink:title="max_cardinality_expression" shape="rect"> + <rect x="43" y="169" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">max_cardinality_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#absolute-value-expression" xlink:title="absolute_value_expression" shape="rect"> + <rect x="43" y="197" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">absolute_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#modulus-expression" xlink:title="modulus_expression" shape="rect"> + <rect x="43" y="225" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">modulus_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#natural-logarithm" xlink:title="natural_logarithm" shape="rect"> + <rect x="43" y="253" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">natural_logarithm</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#exponential-function" xlink:title="exponential_function" shape="rect"> + <rect x="43" y="281" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="293">exponential_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#power-function" xlink:title="power_function" shape="rect"> + <rect x="43" y="309" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="321">power_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#square-root" xlink:title="square_root" shape="rect"> + <rect x="43" y="337" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="349">square_root</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#floor-function" xlink:title="floor_function" shape="rect"> + <rect x="43" y="365" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="377">floor_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ceiling-function" xlink:title="ceiling_function" shape="rect"> + <rect x="43" y="393" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="405">ceiling_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#width-bucket-function" xlink:title="width_bucket_function" shape="rect"> + <rect x="43" y="421" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="433">width_bucket_function</text></a><path class="line" d="m17 10 h2 m20 0 h4 m100 0 h4 m0 0 h36 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m132 0 h4 m0 0 h4 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m96 0 h4 m0 0 h40 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m94 0 h4 m0 0 h42 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m108 0 h4 m0 0 h28 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m134 0 h4 m0 0 h2 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m104 0 h4 m0 0 h32 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m90 0 h4 m0 0 h46 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m102 0 h4 m0 0 h34 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m80 0 h4 m0 0 h56 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m66 0 h4 m0 0 h70 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m68 0 h4 m0 0 h68 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m76 0 h4 m0 0 h60 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m110 0 h4 m0 0 h26 m23 -420 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#numeric-value-function" title="numeric_value_function" shape="rect">numeric_value_function</a></div> + <div>         ::= <a href="#position-expression" title="position_expression" shape="rect">position_expression</a></div> + <div>           | <a href="#regex-occurrences-function" title="regex_occurrences_function" shape="rect">regex_occurrences_function</a></div> + <div>           | <a href="#regex-position-expression" title="regex_position_expression" shape="rect">regex_position_expression</a></div> + <div>           | <a href="#extract-expression" title="extract_expression" shape="rect">extract_expression</a></div> + <div>           | <a href="#length-expression" title="length_expression" shape="rect">length_expression</a></div> + <div>           | <a href="#cardinality-expression" title="cardinality_expression" shape="rect">cardinality_expression</a></div> + <div>           | <a href="#max-cardinality-expression" title="max_cardinality_expression" shape="rect">max_cardinality_expression</a></div> + <div>           | <a href="#absolute-value-expression" title="absolute_value_expression" shape="rect">absolute_value_expression</a></div> + <div>           | <a href="#modulus-expression" title="modulus_expression" shape="rect">modulus_expression</a></div> + <div>           | <a href="#natural-logarithm" title="natural_logarithm" shape="rect">natural_logarithm</a></div> + <div>           | <a href="#exponential-function" title="exponential_function" shape="rect">exponential_function</a></div> + <div>           | <a href="#power-function" title="power_function" shape="rect">power_function</a></div> + <div>           | <a href="#square-root" title="square_root" shape="rect">square_root</a></div> + <div>           | <a href="#floor-function" title="floor_function" shape="rect">floor_function</a></div> + <div>           | <a href="#ceiling-function" title="ceiling_function" shape="rect">ceiling_function</a></div> + <div>           | <a href="#width-bucket-function" title="width_bucket_function" shape="rect">width_bucket_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-primary" title="numeric-primary">numeric-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + position_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-position-expression" xlink:title="character_position_expression" shape="rect"> + <rect x="43" y="1" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">character_position_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-position-expression" xlink:title="binary_position_expression" shape="rect"> + <rect x="43" y="29" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">binary_position_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m148 0 h4 m-176 0 h20 m156 0 h20 m-196 0 q10 0 10 10 m176 0 q0 -10 10 -10 m-186 10 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m134 0 h4 m0 0 h14 m23 -28 h-3"/> + <polygon points="225 10 233 6 233 14"/> + <polygon points="225 10 217 6 217 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#position-expression" title="position_expression" shape="rect">position_expression</a></div> + <div>         ::= <a href="#character-position-expression" title="character_position_expression" shape="rect">character_position_expression</a></div> + <div>           | <a href="#binary-position-expression" title="binary_position_expression" shape="rect">binary_position_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regex_occurrences_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="715" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="112" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OCCURRENCES_REGEX</text> + <rect x="143" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="163" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="167" y="13">character_value_expression</text></a><rect x="329" y="22" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="333" y="34">FLAG</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="367" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="371" y="34">character_value_expression</text></a><rect x="533" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="537" y="13">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="559" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="563" y="13">character_value_expression</text></a><rect x="291" y="85" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="295" y="97">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="335" y="85" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="339" y="97">numeric_value_expression</text></a><rect x="515" y="85" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="519" y="97">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="561" y="85" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="565" y="97">char_length_units</text></a><rect x="679" y="64" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="683" y="76">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m112 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m30 0 h4 m0 0 h4 m138 0 h4 m20 -21 h4 m18 0 h4 m0 0 h4 m138 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-458 63 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m36 0 h4 m0 0 h4 m132 0 h4 m40 -21 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="705 73 713 69 713 77"/> + <polygon points="705 73 697 69 697 77"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regex-occurrences-function" title="regex_occurrences_function" shape="rect">regex_occurrences_function</a></div> + <div>         ::= 'OCCURRENCES_REGEX' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'FLAG' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )? 'IN' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'FROM' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ( 'USING' <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regex_position_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="739" height="168"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="90" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">POSITION_REGEX</text> + <rect x="121" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-position-start-or-after" xlink:title="regex_position_start_or_after" shape="rect"> + <rect x="161" y="22" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="34">regex_position_start_or_after</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="333" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="337" y="13">character_value_expression</text></a><rect x="499" y="22" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="503" y="34">FLAG</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="537" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="541" y="34">character_value_expression</text></a><rect x="703" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="707" y="13">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="96" y="64" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="100" y="76">character_value_expression</text></a><rect x="262" y="85" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="266" y="97">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="306" y="85" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="310" y="97">numeric_value_expression</text></a><rect x="486" y="85" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="490" y="97">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="532" y="85" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="536" y="97">char_length_units</text></a><rect x="235" y="148" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="160">OCCURRENCE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="313" y="148" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="160">numeric_value_expression</text></a><rect x="493" y="148" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="497" y="160">GROUP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="543" y="148" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="547" y="160">numeric_value_expression</text></a><rect x="703" y="127" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="707" y="139">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h142 m-172 0 h20 m152 0 h20 m-192 0 q10 0 10 10 m172 0 q0 -10 10 -10 m-182 10 v1 m172 0 v-1 m-172 1 q0 10 10 10 m152 0 q10 0 10 -10 m-162 10 h4 m144 0 h4 m20 -21 h4 m138 0 h4 m20 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m30 0 h4 m0 0 h4 m138 0 h4 m20 -21 h4 m18 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-657 63 l2 0 m2 0 l2 0 m2 0 l2 0 m2 0 h4 m138 0 h4 m20 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m36 0 h4 m0 0 h4 m132 0 h4 m40 -21 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-459 63 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h208 m-238 0 h20 m218 0 h20 m-258 0 q10 0 10 10 m238 0 q0 -10 10 -10 m-248 10 v1 m238 0 v-1 m-238 1 q0 10 10 10 m218 0 q10 0 10 -10 m-228 10 h4 m70 0 h4 m0 0 h4 m132 0 h4 m40 -21 h10 m0 0 h180 m-210 0 h20 m190 0 h20 m-230 0 q10 0 10 10 m210 0 q0 -10 10 -10 m-220 10 v1 m210 0 v-1 m-210 1 q0 10 10 10 m190 0 q10 0 10 -10 m-200 10 h4 m42 0 h4 m0 0 h4 m132 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="729 136 737 132 737 140"/> + <polygon points="729 136 721 132 721 140"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regex-position-expression" title="regex_position_expression" shape="rect">regex_position_expression</a></div> + <div>         ::= 'POSITION_REGEX' '(' <a href="#regex-position-start-or-after" title="regex_position_start_or_after" shape="rect">regex_position_start_or_after</a>? <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'FLAG' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )? 'IN' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'FROM' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ( 'USING' <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a> )? ( 'OCCURRENCE' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ( 'GROUP' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regex_position_start_or_after +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">START</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">AFTER</text> + <path class="line" d="m17 10 h2 m20 0 h4 m36 0 h4 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m36 0 h4 m23 -28 h-3"/> + <polygon points="113 10 121 6 121 14"/> + <polygon points="113 10 105 6 105 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regex-position-start-or-after" title="regex_position_start_or_after" shape="rect">regex_position_start_or_after</a></div> + <div>         ::= 'START'</div> + <div>           | 'AFTER'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regex-position-expression" title="regex-position-expression">regex-position-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_position_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="643" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">POSITION</text> + <rect x="85" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="105" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">character_value_expression</text></a><rect x="251" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="255" y="13">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="277" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="281" y="13">character_value_expression</text></a><rect x="443" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="447" y="34">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="489" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="493" y="34">char_length_units</text></a><rect x="607" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="611" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="633 10 641 6 641 14"/> + <polygon points="633 10 625 6 625 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-position-expression" title="character_position_expression" shape="rect">character_position_expression</a></div> + <div>         ::= 'POSITION' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> 'IN' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'USING' <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#position-expression" title="position-expression">position-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_position_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="427" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">POSITION</text> + <rect x="85" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="105" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">binary_value_expression</text></a><rect x="235" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="13">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="261" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="265" y="13">binary_value_expression</text></a><rect x="391" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="395" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="417 10 425 6 425 14"/> + <polygon points="417 10 409 6 409 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-position-expression" title="binary_position_expression" shape="rect">binary_position_expression</a></div> + <div>         ::= 'POSITION' '(' <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> 'IN' <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#position-expression" title="position-expression">position-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + length_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-expression" xlink:title="char_length_expression" shape="rect"> + <rect x="43" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">char_length_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#octet-length-expression" xlink:title="octet_length_expression" shape="rect"> + <rect x="43" y="29" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">octet_length_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m118 0 h4 m0 0 h4 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v8 m150 0 v-8 m-150 8 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m122 0 h4 m23 -28 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#length-expression" title="length_expression" shape="rect">length_expression</a></div> + <div>         ::= <a href="#char-length-expression" title="char_length_expression" shape="rect">char_length_expression</a></div> + <div>           | <a href="#octet-length-expression" title="octet_length_expression" shape="rect">octet_length_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + char_length_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="561" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="76" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CHAR_LENGTH</text> + <rect x="43" y="29" width="104" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CHARACTER_LENGTH</text> + <rect x="175" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="179" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="195" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="199" y="13">character_value_expression</text></a><rect x="361" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" y="34">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="407" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="411" y="34">char_length_units</text></a><rect x="525" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="529" y="13">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h28 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v8 m132 0 v-8 m-132 8 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m104 0 h4 m20 -28 h4 m12 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="551 10 559 6 559 14"/> + <polygon points="551 10 543 6 543 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#char-length-expression" title="char_length_expression" shape="rect">char_length_expression</a></div> + <div>         ::= ( 'CHAR_LENGTH' | 'CHARACTER_LENGTH' ) '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'USING' <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#length-expression" title="length-expression">length-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + octet_length_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="295" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OCTET_LENGTH</text> + <rect x="111" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#string-value-expression" xlink:title="string_value_expression" shape="rect"> + <rect x="131" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="13">string_value_expression</text></a><rect x="259" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m80 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m120 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="285 10 293 6 293 14"/> + <polygon points="285 10 277 6 277 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#octet-length-expression" title="octet_length_expression" shape="rect">octet_length_expression</a></div> + <div>         ::= 'OCTET_LENGTH' '(' <a href="#string-value-expression" title="string_value_expression" shape="rect">string_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#length-expression" title="length-expression">length-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + extract_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="333" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EXTRACT</text> + <rect x="79" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extract-field" xlink:title="extract_field" shape="rect"> + <rect x="99" y="1" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">extract_field</text></a><rect x="169" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extract-source" xlink:title="extract_source" shape="rect"> + <rect x="213" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="13">extract_source</text></a><rect x="297" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="301" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m76 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="323 10 331 6 331 14"/> + <polygon points="323 10 315 6 315 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#extract-expression" title="extract_expression" shape="rect">extract_expression</a></div> + <div>         ::= 'EXTRACT' '(' <a href="#extract-field" title="extract_field" shape="rect">extract_field</a> 'FROM' <a href="#extract-source" title="extract_source" shape="rect">extract_source</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + extract_field +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="201" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#primary-datetime-field" xlink:title="primary_datetime_field" shape="rect"> + <rect x="43" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">primary_datetime_field</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#time-zone-field" xlink:title="time_zone_field" shape="rect"> + <rect x="43" y="29" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">time_zone_field</text></a><path class="line" d="m17 10 h2 m20 0 h4 m114 0 h4 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v8 m142 0 v-8 m-142 8 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m82 0 h4 m0 0 h32 m23 -28 h-3"/> + <polygon points="191 10 199 6 199 14"/> + <polygon points="191 10 183 6 183 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#extract-field" title="extract_field" shape="rect">extract_field</a></div> + <div>         ::= <a href="#primary-datetime-field" title="primary_datetime_field" shape="rect">primary_datetime_field</a></div> + <div>           | <a href="#time-zone-field" title="time_zone_field" shape="rect">time_zone_field</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#extract-expression" title="extract-expression">extract-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + time_zone_field +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="90" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">TIMEZONE_HOUR</text> + <rect x="43" y="29" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">TIMEZONE_MINUTE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h8 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v8 m126 0 v-8 m-126 8 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m98 0 h4 m23 -28 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#time-zone-field" title="time_zone_field" shape="rect">time_zone_field</a></div> + <div>         ::= 'TIMEZONE_HOUR'</div> + <div>           | 'TIMEZONE_MINUTE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#extract-field" title="extract-field">extract-field</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + extract_source +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-value-expression" xlink:title="datetime_value_expression" shape="rect"> + <rect x="43" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">datetime_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-value-expression" xlink:title="interval_value_expression" shape="rect"> + <rect x="43" y="29" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">interval_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m136 0 h4 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m128 0 h4 m0 0 h8 m23 -28 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#extract-source" title="extract_source" shape="rect">extract_source</a></div> + <div>         ::= <a href="#datetime-value-expression" title="datetime_value_expression" shape="rect">datetime_value_expression</a></div> + <div>           | <a href="#interval-value-expression" title="interval_value_expression" shape="rect">interval_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#extract-expression" title="extract-expression">extract-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cardinality_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="299" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CARDINALITY</text> + <rect x="101" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collection-value-expression" xlink:title="collection_value_expression" shape="rect"> + <rect x="121" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="125" y="13">collection_value_expression</text></a><rect x="263" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m70 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m134 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="289 10 297 6 297 14"/> + <polygon points="289 10 281 6 281 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cardinality-expression" title="cardinality_expression" shape="rect">cardinality_expression</a></div> + <div>         ::= 'CARDINALITY' '(' <a href="#collection-value-expression" title="collection_value_expression" shape="rect">collection_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + max_cardinality_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="309" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MAX_CARDINALITY</text> + <rect x="127" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-expression" xlink:title="array_value_expression" shape="rect"> + <rect x="147" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="13">array_value_expression</text></a><rect x="273" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m118 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="299 10 307 6 307 14"/> + <polygon points="299 10 291 6 291 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#max-cardinality-expression" title="max_cardinality_expression" shape="rect">max_cardinality_expression</a></div> + <div>         ::= 'MAX_CARDINALITY' '(' <a href="#array-value-expression" title="array_value_expression" shape="rect">array_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + absolute_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ABS</text> + <rect x="57" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="61" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="77" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">numeric_value_expression</text></a><rect x="217" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m26 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#absolute-value-expression" title="absolute_value_expression" shape="rect">absolute_value_expression</a></div> + <div>         ::= 'ABS' '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + modulus_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="413" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MOD</text> + <rect x="61" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="65" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="81" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="13">numeric_value_expression</text></a><rect x="221" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="237" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="241" y="13">numeric_value_expression</text></a><rect x="377" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="381" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m30 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="403 10 411 6 411 14"/> + <polygon points="403 10 395 6 395 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#modulus-expression" title="modulus_expression" shape="rect">modulus_expression</a></div> + <div>         ::= 'MOD' '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ',' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + natural_logarithm +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LN</text> + <rect x="51" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="55" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="71" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="13">numeric_value_expression</text></a><rect x="211" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="215" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="237 10 245 6 245 14"/> + <polygon points="237 10 229 6 229 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#natural-logarithm" title="natural_logarithm" shape="rect">natural_logarithm</a></div> + <div>         ::= 'LN' '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + exponential_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EXP</text> + <rect x="55" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="75" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">numeric_value_expression</text></a><rect x="215" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#exponential-function" title="exponential_function" shape="rect">exponential_function</a></div> + <div>         ::= 'EXP' '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + power_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="427" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">POWER</text> + <rect x="75" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="95" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="13">numeric_value_expression</text></a><rect x="235" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="251" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="255" y="13">numeric_value_expression</text></a><rect x="391" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="395" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="417 10 425 6 425 14"/> + <polygon points="417 10 409 6 409 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#power-function" title="power_function" shape="rect">power_function</a></div> + <div>         ::= 'POWER' '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ',' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + square_root +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SQRT</text> + <rect x="65" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="85" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">numeric_value_expression</text></a><rect x="225" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="229" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="251 10 259 6 259 14"/> + <polygon points="251 10 243 6 243 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#square-root" title="square_root" shape="rect">square_root</a></div> + <div>         ::= 'SQRT' '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + floor_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="267" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FLOOR</text> + <rect x="71" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="91" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="13">numeric_value_expression</text></a><rect x="231" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="257 10 265 6 265 14"/> + <polygon points="257 10 249 6 249 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#floor-function" title="floor_function" shape="rect">floor_function</a></div> + <div>         ::= 'FLOOR' '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ceiling_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="311" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CEIL</text> + <rect x="43" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CEILING</text> + <rect x="115" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="119" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="135" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">numeric_value_expression</text></a><rect x="275" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="279" y="13">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m28 0 h4 m0 0 h16 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m44 0 h4 m20 -28 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="301 10 309 6 309 14"/> + <polygon points="301 10 293 6 293 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#ceiling-function" title="ceiling_function" shape="rect">ceiling_function</a></div> + <div>         ::= ( 'CEIL' | 'CEILING' ) '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + width_bucket_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="791" height="84"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WIDTH_BUCKET</text> + <rect x="113" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="133" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">numeric_value_expression</text></a><rect x="273" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="289" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="293" y="13">numeric_value_expression</text></a><rect x="449" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="453" y="34">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="465" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="469" y="34">numeric_value_expression</text></a><rect x="605" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="609" y="34">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="621" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="625" y="34">numeric_value_expression</text></a><rect x="755" y="64" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="759" y="76">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m82 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m132 0 h4 m20 0 h10 m0 0 h302 m-332 0 h20 m312 0 h20 m-352 0 q10 0 10 10 m332 0 q0 -10 10 -10 m-342 10 v1 m332 0 v-1 m-332 1 q0 10 10 10 m312 0 q10 0 10 -10 m-322 10 h4 m8 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m132 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-50 63 l2 0 m2 0 l2 0 m2 0 l2 0 m2 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="781 73 789 69 789 77"/> + <polygon points="781 73 773 69 773 77"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#width-bucket-function" title="width_bucket_function" shape="rect">width_bucket_function</a></div> + <div>         ::= 'WIDTH_BUCKET' '(' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ',' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ( ',' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ',' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#numeric-value-function" title="numeric-value-function">numeric-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + string_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="43" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">character_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="43" y="29" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">binary_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m138 0 h4 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m122 0 h4 m0 0 h16 m23 -28 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#string-value-expression" title="string_value_expression" shape="rect">string_value_expression</a></div> + <div>         ::= <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a></div> + <div>           | <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#common-value-expression" title="common-value-expression">common-value-expression</a></li><li><a href="#current-collation-specification" title="current-collation-specification">current-collation-specification</a></li><li><a href="#octet-length-expression" title="octet-length-expression">octet-length-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="42"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-factor" xlink:title="character_factor" shape="rect"> + <rect x="23" y="22" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">character_factor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#concatenation" xlink:title="concatenation" shape="rect"> + <rect x="133" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">concatenation</text></a><path class="line" d="m17 31 h2 m0 0 h4 m82 0 h4 m20 0 h10 m0 0 h72 m-102 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m82 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-82 0 h4 m74 0 h4 m23 21 h-3"/> + <polygon points="241 31 249 27 249 35"/> + <polygon points="241 31 233 27 233 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a></div> + <div>         ::= <a href="#character-factor" title="character_factor" shape="rect">character_factor</a> <a href="#concatenation" title="concatenation" shape="rect">concatenation</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#char-length-expression" title="char-length-expression">char-length-expression</a></li><li><a href="#character-like-predicate-part-2" title="character-like-predicate-part-2">character-like-predicate-part-2</a></li><li><a href="#character-overlay-function" title="character-overlay-function">character-overlay-function</a></li><li><a href="#character-position-expression" title="character-position-expression">character-position-expression</a></li><li><a href="#character-substring-function" title="character-substring-function">character-substring-function</a></li><li><a href="#character-transliteration" title="character-transliteration">character-transliteration</a></li><li><a href="#fold" title="fold">fold</a></li><li><a href="#normalize-function" title="normalize-function">normalize-function</a></li><li><a href="#numeric-primary" title="numeric-primary">numeric-primary</a></li><li><a href="#regex-like-predicate-part-2" title="regex-like-predicate-part-2">regex-like-predicate-part-2</a></li><li><a href="#regex-occurrences-function" title="regex-occurrences-function">regex-occurrences-function</a></li><li><a href="#regex-position-expression" title="regex-position-expression">regex-position-expression</a></li><li><a href="#regex-substring-function" title="regex-substring-function">regex-substring-function</a></li><li><a href="#regex-transliteration" title="regex-transliteration">regex-transliteration</a></li><li><a href="#regular-expression-substring-function" title="regular-expression-substring-function">regular-expression-substring-function</a></li><li><a href="#similar-predicate-part-2" title="similar-predicate-part-2">similar-predicate-part-2</a></li><li><a href="#string-value-expression" title="string-value-expression">string-value-expression</a></li><li><a href="#transcoding" title="transcoding">transcoding</a></li><li><a href="#trim-operands" title="trim-operands">trim-operands</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + concatenation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="151" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">||</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-factor" xlink:title="character_factor" shape="rect"> + <rect x="45" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="49" y="13">character_factor</text></a><path class="line" d="m17 10 h2 m0 0 h4 m14 0 h4 m0 0 h4 m82 0 h4 m3 0 h-3"/> + <polygon points="141 10 149 6 149 14"/> + <polygon points="141 10 133 6 133 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#concatenation" title="concatenation" shape="rect">concatenation</a></div> + <div>         ::= '||' <a href="#character-factor" title="character_factor" shape="rect">character_factor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-expression" title="character-value-expression">character-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_factor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="259" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-primary" xlink:title="character_primary" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_primary</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collate-clause" xlink:title="collate_clause" shape="rect"> + <rect x="143" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="34">collate_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m23 -21 h-3"/> + <polygon points="249 10 257 6 257 14"/> + <polygon points="249 10 241 6 241 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-factor" title="character_factor" shape="rect">character_factor</a></div> + <div>         ::= <a href="#character-primary" title="character_primary" shape="rect">character_primary</a> <a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-expression" title="character-value-expression">character-value-expression</a></li><li><a href="#concatenation" title="concatenation">concatenation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#string-value-function" xlink:title="string_value_function" shape="rect"> + <rect x="43" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">string_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="43" y="29" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">binary_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m106 0 h4 m0 0 h16 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v8 m150 0 v-8 m-150 8 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m122 0 h4 m23 -28 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-primary" title="character_primary" shape="rect">character_primary</a></div> + <div>         ::= <a href="#string-value-function" title="string_value_function" shape="rect">string_value_function</a></div> + <div>           | <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-factor" title="character-factor">character-factor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="279" height="42"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-primary" xlink:title="binary_primary" shape="rect"> + <rect x="23" y="22" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">binary_primary</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-concatenation" xlink:title="binary_concatenation" shape="rect"> + <rect x="129" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="133" y="13">binary_concatenation</text></a><path class="line" d="m17 31 h2 m0 0 h4 m78 0 h4 m20 0 h10 m0 0 h104 m-134 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m114 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-114 0 h4 m106 0 h4 m23 21 h-3"/> + <polygon points="269 31 277 27 277 35"/> + <polygon points="269 31 261 27 261 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a></div> + <div>         ::= <a href="#binary-primary" title="binary_primary" shape="rect">binary_primary</a> <a href="#binary-concatenation" title="binary_concatenation" shape="rect">binary_concatenation</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-overlay-function" title="binary-overlay-function">binary-overlay-function</a></li><li><a href="#binary-position-expression" title="binary-position-expression">binary-position-expression</a></li><li><a href="#binary-substring-function" title="binary-substring-function">binary-substring-function</a></li><li><a href="#binary-trim-operands" title="binary-trim-operands">binary-trim-operands</a></li><li><a href="#character-primary" title="character-primary">character-primary</a></li><li><a href="#octet-like-predicate-part-2" title="octet-like-predicate-part-2">octet-like-predicate-part-2</a></li><li><a href="#string-value-expression" title="string-value-expression">string-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#string-value-function" xlink:title="string_value_function" shape="rect"> + <rect x="43" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">string_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-value-expression" xlink:title="datetime_value_expression" shape="rect"> + <rect x="43" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">datetime_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m106 0 h4 m0 0 h30 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m23 -28 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-primary" title="binary_primary" shape="rect">binary_primary</a></div> + <div>         ::= <a href="#string-value-function" title="string_value_function" shape="rect">string_value_function</a></div> + <div>           | <a href="#datetime-value-expression" title="datetime_value_expression" shape="rect">datetime_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-concatenation" title="binary-concatenation">binary-concatenation</a></li><li><a href="#binary-value-expression" title="binary-value-expression">binary-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_concatenation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">||</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-primary" xlink:title="binary_primary" shape="rect"> + <rect x="45" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="49" y="13">binary_primary</text></a><path class="line" d="m17 10 h2 m0 0 h4 m14 0 h4 m0 0 h4 m78 0 h4 m3 0 h-3"/> + <polygon points="137 10 145 6 145 14"/> + <polygon points="137 10 129 6 129 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-concatenation" title="binary_concatenation" shape="rect">binary_concatenation</a></div> + <div>         ::= '||' <a href="#binary-primary" title="binary_primary" shape="rect">binary_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-value-expression" title="binary-value-expression">binary-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + string_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-function" xlink:title="character_value_function" shape="rect"> + <rect x="43" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">character_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-function" xlink:title="binary_value_function" shape="rect"> + <rect x="43" y="29" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">binary_value_function</text></a><path class="line" d="m17 10 h2 m20 0 h4 m122 0 h4 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v8 m150 0 v-8 m-150 8 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m108 0 h4 m0 0 h14 m23 -28 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#string-value-function" title="string_value_function" shape="rect">string_value_function</a></div> + <div>         ::= <a href="#character-value-function" title="character_value_function" shape="rect">character_value_function</a></div> + <div>           | <a href="#binary-value-function" title="binary_value_function" shape="rect">binary_value_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-primary" title="binary-primary">binary-primary</a></li><li><a href="#character-primary" title="character-primary">character-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="271" height="301"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-substring-function" xlink:title="character_substring_function" shape="rect"> + <rect x="43" y="1" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">character_substring_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regular-expression-substring-function" xlink:title="regular_expression_substring_function" shape="rect"> + <rect x="43" y="29" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">regular_expression_substring_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-substring-function" xlink:title="regex_substring_function" shape="rect"> + <rect x="43" y="57" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">regex_substring_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fold" xlink:title="fold" shape="rect"> + <rect x="43" y="85" width="26" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">fold</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transcoding" xlink:title="transcoding" shape="rect"> + <rect x="43" y="113" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">transcoding</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-transliteration" xlink:title="character_transliteration" shape="rect"> + <rect x="43" y="141" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">character_transliteration</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-transliteration" xlink:title="regex_transliteration" shape="rect"> + <rect x="43" y="169" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">regex_transliteration</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trim-function" xlink:title="trim_function" shape="rect"> + <rect x="43" y="197" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">trim_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-overlay-function" xlink:title="character_overlay_function" shape="rect"> + <rect x="43" y="225" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">character_overlay_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#normalize-function" xlink:title="normalize_function" shape="rect"> + <rect x="43" y="253" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">normalize_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-type-method" xlink:title="specific_type_method" shape="rect"> + <rect x="43" y="281" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="293">specific_type_method</text></a><path class="line" d="m17 10 h2 m20 0 h4 m140 0 h4 m0 0 h44 m-212 0 h20 m192 0 h20 m-232 0 q10 0 10 10 m212 0 q0 -10 10 -10 m-222 10 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m184 0 h4 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m124 0 h4 m0 0 h60 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m26 0 h4 m0 0 h158 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m62 0 h4 m0 0 h122 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m118 0 h4 m0 0 h66 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m102 0 h4 m0 0 h82 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m68 0 h4 m0 0 h116 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m130 0 h4 m0 0 h54 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m94 0 h4 m0 0 h90 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m108 0 h4 m0 0 h76 m23 -280 h-3"/> + <polygon points="261 10 269 6 269 14"/> + <polygon points="261 10 253 6 253 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-value-function" title="character_value_function" shape="rect">character_value_function</a></div> + <div>         ::= <a href="#character-substring-function" title="character_substring_function" shape="rect">character_substring_function</a></div> + <div>           | <a href="#regular-expression-substring-function" title="regular_expression_substring_function" shape="rect">regular_expression_substring_function</a></div> + <div>           | <a href="#regex-substring-function" title="regex_substring_function" shape="rect">regex_substring_function</a></div> + <div>           | <a href="#fold" title="fold" shape="rect">fold</a></div> + <div>           | <a href="#transcoding" title="transcoding" shape="rect">transcoding</a></div> + <div>           | <a href="#character-transliteration" title="character_transliteration" shape="rect">character_transliteration</a></div> + <div>           | <a href="#regex-transliteration" title="regex_transliteration" shape="rect">regex_transliteration</a></div> + <div>           | <a href="#trim-function" title="trim_function" shape="rect">trim_function</a></div> + <div>           | <a href="#character-overlay-function" title="character_overlay_function" shape="rect">character_overlay_function</a></div> + <div>           | <a href="#normalize-function" title="normalize_function" shape="rect">normalize_function</a></div> + <div>           | <a href="#specific-type-method" title="specific_type_method" shape="rect">specific_type_method</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#string-value-function" title="string-value-function">string-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_substring_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="667" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SUBSTRING</text> + <rect x="93" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="113" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="13">character_value_expression</text></a><rect x="259" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="303" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="307" y="13">numeric_value_expression</text></a><rect x="463" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="467" y="34">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="497" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="501" y="34">numeric_value_expression</text></a><rect x="467" y="85" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="471" y="97">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="513" y="85" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="517" y="97">char_length_units</text></a><rect x="631" y="64" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="635" y="76">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m132 0 h4 m20 0 h10 m0 0 h164 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v1 m194 0 v-1 m-194 1 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m26 0 h4 m0 0 h4 m132 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-234 63 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="657 73 665 69 665 77"/> + <polygon points="657 73 649 69 649 77"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-substring-function" title="character_substring_function" shape="rect">character_substring_function</a></div> + <div>         ::= 'SUBSTRING' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> 'FROM' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ( 'FOR' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ( 'USING' <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regular_expression_substring_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="691" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SUBSTRING</text> + <rect x="93" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="113" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="13">character_value_expression</text></a><rect x="259" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="13">SIMILAR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="313" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="13">character_value_expression</text></a><rect x="459" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="463" y="13">ESCAPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="509" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="513" y="13">character_value_expression</text></a><rect x="655" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="659" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="681 10 689 6 689 14"/> + <polygon points="681 10 673 6 673 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regular-expression-substring-function" title="regular_expression_substring_function" shape="rect">regular_expression_substring_function</a></div> + <div>         ::= 'SUBSTRING' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> 'SIMILAR' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> 'ESCAPE' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regex_substring_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="699" height="159"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SUBSTRING_REGEX</text> + <rect x="127" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="147" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="13">character_value_expression</text></a><rect x="313" y="22" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="34">FLAG</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="351" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="355" y="34">character_value_expression</text></a><rect x="517" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="521" y="13">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="543" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="547" y="13">character_value_expression</text></a><rect x="40" y="76" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="44" y="88">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="84" y="76" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="88" y="88">numeric_value_expression</text></a><rect x="264" y="76" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="268" y="88">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="310" y="76" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="314" y="88">char_length_units</text></a><rect x="448" y="76" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="452" y="88">OCCURRENCE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="526" y="76" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="530" y="88">numeric_value_expression</text></a><rect x="453" y="139" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="457" y="151">GROUP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="503" y="139" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="507" y="151">numeric_value_expression</text></a><rect x="663" y="118" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="667" y="130">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m30 0 h4 m0 0 h4 m138 0 h4 m20 -21 h4 m18 0 h4 m0 0 h4 m138 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-693 54 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m36 0 h4 m0 0 h4 m132 0 h4 m40 -21 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m40 -21 h10 m0 0 h208 m-238 0 h20 m218 0 h20 m-258 0 q10 0 10 10 m238 0 q0 -10 10 -10 m-248 10 v1 m238 0 v-1 m-238 1 q0 10 10 10 m218 0 q10 0 10 -10 m-228 10 h4 m70 0 h4 m0 0 h4 m132 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-277 63 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h180 m-210 0 h20 m190 0 h20 m-230 0 q10 0 10 10 m210 0 q0 -10 10 -10 m-220 10 v1 m210 0 v-1 m-210 1 q0 10 10 10 m190 0 q10 0 10 -10 m-200 10 h4 m42 0 h4 m0 0 h4 m132 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="689 127 697 123 697 131"/> + <polygon points="689 127 681 123 681 131"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regex-substring-function" title="regex_substring_function" shape="rect">regex_substring_function</a></div> + <div>         ::= 'SUBSTRING_REGEX' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'FLAG' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )? 'IN' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'FROM' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ( 'USING' <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a> )? ( 'OCCURRENCE' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ( 'GROUP' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + fold +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">UPPER</text> + <rect x="43" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LOWER</text> + <rect x="115" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="119" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="135" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">character_value_expression</text></a><rect x="281" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="285" y="13">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m0 0 h6 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m44 0 h4 m20 -28 h4 m12 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="307 10 315 6 315 14"/> + <polygon points="307 10 299 6 299 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#fold" title="fold" shape="rect">fold</a>     ::= ( 'UPPER' | 'LOWER' ) '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transcoding +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="461" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CONVERT</text> + <rect x="83" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="103" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="13">character_value_expression</text></a><rect x="249" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="253" y="13">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="295" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="299" y="13">schema_qualified_name</text></a><rect x="425" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="429" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m38 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="451 10 459 6 459 14"/> + <polygon points="451 10 443 6 443 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transcoding" title="transcoding" shape="rect">transcoding</a></div> + <div>         ::= 'CONVERT' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> 'USING' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_transliteration +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="469" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRANSLATE</text> + <rect x="91" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="111" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">character_value_expression</text></a><rect x="257" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="13">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="303" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="307" y="13">schema_qualified_name</text></a><rect x="433" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="437" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m38 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="459 10 467 6 467 14"/> + <polygon points="459 10 451 6 451 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-transliteration" title="character_transliteration" shape="rect">character_transliteration</a></div> + <div>         ::= 'TRANSLATE' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> 'USING' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regex_transliteration +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="699" height="159"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRANSLATE_REGEX</text> + <rect x="127" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="147" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="13">character_value_expression</text></a><rect x="313" y="22" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="34">FLAG</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="351" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="355" y="34">character_value_expression</text></a><rect x="517" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="521" y="13">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="543" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="547" y="13">character_value_expression</text></a><rect x="55" y="76" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="88">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="97" y="76" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="88">character_value_expression</text></a><rect x="283" y="76" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="287" y="88">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="327" y="76" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="88">numeric_value_expression</text></a><rect x="507" y="76" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="511" y="88">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="553" y="76" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="557" y="88">char_length_units</text></a><rect x="401" y="139" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="405" y="151">OCCURRENCE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-transliteration-occurrence" xlink:title="regex_transliteration_occurrence" shape="rect"> + <rect x="479" y="139" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="483" y="151">regex_transliteration_occurrence</text></a><rect x="663" y="118" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="667" y="130">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m30 0 h4 m0 0 h4 m138 0 h4 m20 -21 h4 m18 0 h4 m0 0 h4 m138 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-678 54 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h178 m-208 0 h20 m188 0 h20 m-228 0 q10 0 10 10 m208 0 q0 -10 10 -10 m-218 10 v1 m208 0 v-1 m-208 1 q0 10 10 10 m188 0 q10 0 10 -10 m-198 10 h4 m34 0 h4 m0 0 h4 m138 0 h4 m40 -21 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m36 0 h4 m0 0 h4 m132 0 h4 m40 -21 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-314 63 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h232 m-262 0 h20 m242 0 h20 m-282 0 q10 0 10 10 m262 0 q0 -10 10 -10 m-272 10 v1 m262 0 v-1 m-262 1 q0 10 10 10 m242 0 q10 0 10 -10 m-252 10 h4 m70 0 h4 m0 0 h4 m156 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="689 127 697 123 697 131"/> + <polygon points="689 127 681 123 681 131"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regex-transliteration" title="regex_transliteration" shape="rect">regex_transliteration</a></div> + <div>         ::= 'TRANSLATE_REGEX' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'FLAG' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )? 'IN' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'WITH' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )? ( 'FROM' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ( 'USING' <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a> )? ( 'OCCURRENCE' <a href="#regex-transliteration-occurrence" title="regex_transliteration_occurrence" shape="rect">regex_transliteration_occurrence</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regex_transliteration_occurrence +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ALL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">numeric_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m24 0 h4 m0 0 h108 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v8 m160 0 v-8 m-160 8 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m23 -28 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regex-transliteration-occurrence" title="regex_transliteration_occurrence" shape="rect">regex_transliteration_occurrence</a></div> + <div>         ::= 'ALL'</div> + <div>           | <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regex-transliteration" title="regex-transliteration">regex-transliteration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + trim_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRIM</text> + <rect x="63" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trim-operands" xlink:title="trim_operands" shape="rect"> + <rect x="83" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">trim_operands</text></a><rect x="167" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="171" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m76 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="193 10 201 6 201 14"/> + <polygon points="193 10 185 6 185 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#trim-function" title="trim_function" shape="rect">trim_function</a></div> + <div>         ::= 'TRIM' '(' <a href="#trim-operands" title="trim_operands" shape="rect">trim_operands</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + trim_operands +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="589" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trim-specification" xlink:title="trim_specification" shape="rect"> + <rect x="43" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">trim_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="157" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="13">character_value_expression</text></a><rect x="343" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="347" y="34">,</text> + <rect x="343" y="50" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="347" y="62">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="407" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="411" y="34">character_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m20 -21 h4 m138 0 h4 m20 0 h10 m0 0 h220 m-250 0 h20 m230 0 h20 m-270 0 q10 0 10 10 m250 0 q0 -10 10 -10 m-260 10 v1 m250 0 v-1 m-250 1 q0 10 10 10 m230 0 q10 0 10 -10 m-220 10 h4 m8 0 h4 m0 0 h28 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m36 0 h4 m20 -28 h4 m138 0 h4 m23 -21 h-3"/> + <polygon points="579 10 587 6 587 14"/> + <polygon points="579 10 571 6 571 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#trim-operands" title="trim_operands" shape="rect">trim_operands</a></div> + <div>         ::= <a href="#trim-specification" title="trim_specification" shape="rect">trim_specification</a>? <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( ( ',' | 'FROM' ) <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#trim-function" title="trim-function">trim-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + trim_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">LEADING</text> + <rect x="43" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">TRAILING</text> + <rect x="43" y="57" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">BOTH</text> + <path class="line" d="m17 10 h2 m20 0 h4 m48 0 h4 m0 0 h4 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m34 0 h4 m0 0 h18 m23 -56 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#trim-specification" title="trim_specification" shape="rect">trim_specification</a></div> + <div>         ::= 'LEADING'</div> + <div>           | 'TRAILING'</div> + <div>           | 'BOTH'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-trim-operands" title="binary-trim-operands">binary-trim-operands</a></li><li><a href="#trim-operands" title="trim-operands">trim-operands</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_overlay_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="643" height="84"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OVERLAY</text> + <rect x="81" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="85" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="101" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="13">character_value_expression</text></a><rect x="247" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="251" y="13">PLACING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="303" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="307" y="13">character_value_expression</text></a><rect x="449" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="453" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="493" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="497" y="13">numeric_value_expression</text></a><rect x="229" y="64" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="76">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="263" y="64" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="267" y="76">numeric_value_expression</text></a><rect x="443" y="64" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="447" y="76">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#char-length-units" xlink:title="char_length_units" shape="rect"> + <rect x="489" y="64" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="493" y="76">char_length_units</text></a><rect x="607" y="43" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="611" y="55">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m138 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m132 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-448 42 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h164 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v1 m194 0 v-1 m-194 1 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m26 0 h4 m0 0 h4 m132 0 h4 m40 -21 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="633 52 641 48 641 56"/> + <polygon points="633 52 625 48 625 56"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-overlay-function" title="character_overlay_function" shape="rect">character_overlay_function</a></div> + <div>         ::= 'OVERLAY' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> 'PLACING' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> 'FROM' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ( 'FOR' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ( 'USING' <a href="#char-length-units" title="char_length_units" shape="rect">char_length_units</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + normalize_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="651" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NORMALIZE</text> + <rect x="93" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="113" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="13">character_value_expression</text></a><rect x="279" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="283" y="34">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#normal-form" xlink:title="normal_form" shape="rect"> + <rect x="295" y="22" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="299" y="34">normal_form</text></a><rect x="391" y="43" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="395" y="55">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#normalize-function-result-length" xlink:title="normalize_function_result_length" shape="rect"> + <rect x="407" y="43" width="160" height="18" class="nonterminal"/> + <text class="nonterminal" x="411" y="55">normalize_function_result_length</text></a><rect x="615" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="619" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h306 m-336 0 h20 m316 0 h20 m-356 0 q10 0 10 10 m336 0 q0 -10 10 -10 m-346 10 v1 m336 0 v-1 m-336 1 q0 10 10 10 m316 0 q10 0 10 -10 m-326 10 h4 m8 0 h4 m0 0 h4 m68 0 h4 m20 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m8 0 h4 m0 0 h4 m160 0 h4 m40 -42 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="641 10 649 6 649 14"/> + <polygon points="641 10 633 6 633 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#normalize-function" title="normalize_function" shape="rect">normalize_function</a></div> + <div>         ::= 'NORMALIZE' '(' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( ',' <a href="#normal-form" title="normal_form" shape="rect">normal_form</a> ( ',' <a href="#normalize-function-result-length" title="normalize_function_result_length" shape="rect">normalize_function_result_length</a> )? )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + normal_form +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="119" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NFC</text> + <rect x="43" y="29" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NFD</text> + <rect x="43" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">NFKC</text> + <rect x="43" y="85" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">NFKD</text> + <path class="line" d="m17 10 h2 m20 0 h4 m26 0 h4 m0 0 h6 m-60 0 h20 m40 0 h20 m-80 0 q10 0 10 10 m60 0 q0 -10 10 -10 m-70 10 v8 m60 0 v-8 m-60 8 q0 10 10 10 m40 0 q10 0 10 -10 m-50 10 h4 m26 0 h4 m0 0 h6 m-50 -10 v20 m60 0 v-20 m-60 20 v8 m60 0 v-8 m-60 8 q0 10 10 10 m40 0 q10 0 10 -10 m-50 10 h4 m32 0 h4 m-50 -10 v20 m60 0 v-20 m-60 20 v8 m60 0 v-8 m-60 8 q0 10 10 10 m40 0 q10 0 10 -10 m-50 10 h4 m32 0 h4 m23 -84 h-3"/> + <polygon points="109 10 117 6 117 14"/> + <polygon points="109 10 101 6 101 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#normal-form" title="normal_form" shape="rect">normal_form</a></div> + <div>         ::= 'NFC'</div> + <div>           | 'NFD'</div> + <div>           | 'NFKC'</div> + <div>           | 'NFKD'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#normalize-function" title="normalize-function">normalize-function</a></li><li><a href="#normalized-predicate-part-2" title="normalized-predicate-part-2">normalized-predicate-part-2</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + normalize_function_result_length +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-length" xlink:title="character_length" shape="rect"> + <rect x="43" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">character_length</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-large-object-length" xlink:title="character_large_object_length" shape="rect"> + <rect x="43" y="29" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">character_large_object_length</text></a><path class="line" d="m17 10 h2 m20 0 h4 m86 0 h4 m0 0 h62 m-176 0 h20 m156 0 h20 m-196 0 q10 0 10 10 m176 0 q0 -10 10 -10 m-186 10 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m148 0 h4 m23 -28 h-3"/> + <polygon points="225 10 233 6 233 14"/> + <polygon points="225 10 217 6 217 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#normalize-function-result-length" title="normalize_function_result_length" shape="rect">normalize_function_result_length</a></div> + <div>         ::= <a href="#character-length" title="character_length" shape="rect">character_length</a></div> + <div>           | <a href="#character-large-object-length" title="character_large_object_length" shape="rect">character_large_object_length</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#normalize-function" title="normalize-function">normalize-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + specific_type_method +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">.</text> + <rect x="39" y="1" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="43" y="13">SPECIFICTYPE</text> + <rect x="137" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="34">(</text> + <rect x="157" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m8 0 h4 m0 0 h4 m70 0 h4 m20 0 h10 m0 0 h30 m-60 0 h20 m40 0 h20 m-80 0 q10 0 10 10 m60 0 q0 -10 10 -10 m-70 10 v1 m60 0 v-1 m-60 1 q0 10 10 10 m40 0 q10 0 10 -10 m-50 10 h4 m12 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#specific-type-method" title="specific_type_method" shape="rect">specific_type_method</a></div> + <div>         ::= '.' 'SPECIFICTYPE' ( '(' ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-value-function" title="character-value-function">character-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-substring-function" xlink:title="binary_substring_function" shape="rect"> + <rect x="43" y="1" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">binary_substring_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-trim-function" xlink:title="binary_trim_function" shape="rect"> + <rect x="43" y="29" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">binary_trim_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-overlay-function" xlink:title="binary_overlay_function" shape="rect"> + <rect x="43" y="57" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">binary_overlay_function</text></a><path class="line" d="m17 10 h2 m20 0 h4 m126 0 h4 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v8 m154 0 v-8 m-154 8 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m100 0 h4 m0 0 h26 m-144 -10 v20 m154 0 v-20 m-154 20 v8 m154 0 v-8 m-154 8 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m116 0 h4 m0 0 h10 m23 -56 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-value-function" title="binary_value_function" shape="rect">binary_value_function</a></div> + <div>         ::= <a href="#binary-substring-function" title="binary_substring_function" shape="rect">binary_substring_function</a></div> + <div>           | <a href="#binary-trim-function" title="binary_trim_function" shape="rect">binary_trim_function</a></div> + <div>           | <a href="#binary-overlay-function" title="binary_overlay_function" shape="rect">binary_overlay_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#string-value-function" title="string-value-function">string-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_substring_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="677" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SUBSTRING</text> + <rect x="93" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="113" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="13">binary_value_expression</text></a><rect x="243" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="287" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="291" y="13">numeric_value_expression</text></a><rect x="447" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="451" y="34">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="481" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="485" y="34">numeric_value_expression</text></a><rect x="641" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="645" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m132 0 h4 m20 0 h10 m0 0 h164 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v1 m194 0 v-1 m-194 1 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m26 0 h4 m0 0 h4 m132 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="667 10 675 6 675 14"/> + <polygon points="667 10 659 6 659 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-substring-function" title="binary_substring_function" shape="rect">binary_substring_function</a></div> + <div>         ::= 'SUBSTRING' '(' <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> 'FROM' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ( 'FOR' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-value-function" title="binary-value-function">binary-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_trim_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRIM</text> + <rect x="63" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-trim-operands" xlink:title="binary_trim_operands" shape="rect"> + <rect x="83" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">binary_trim_operands</text></a><rect x="201" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m110 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-trim-function" title="binary_trim_function" shape="rect">binary_trim_function</a></div> + <div>         ::= 'TRIM' '(' <a href="#binary-trim-operands" title="binary_trim_operands" shape="rect">binary_trim_operands</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-value-function" title="binary-value-function">binary-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_trim_operands +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="557" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trim-specification" xlink:title="trim_specification" shape="rect"> + <rect x="43" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">trim_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="157" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="13">binary_value_expression</text></a><rect x="327" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="34">,</text> + <rect x="327" y="50" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="62">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="391" y="22" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="395" y="34">binary_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m20 -21 h4 m122 0 h4 m20 0 h10 m0 0 h204 m-234 0 h20 m214 0 h20 m-254 0 q10 0 10 10 m234 0 q0 -10 10 -10 m-244 10 v1 m234 0 v-1 m-234 1 q0 10 10 10 m214 0 q10 0 10 -10 m-204 10 h4 m8 0 h4 m0 0 h28 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m36 0 h4 m20 -28 h4 m122 0 h4 m23 -21 h-3"/> + <polygon points="547 10 555 6 555 14"/> + <polygon points="547 10 539 6 539 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-trim-operands" title="binary_trim_operands" shape="rect">binary_trim_operands</a></div> + <div>         ::= <a href="#trim-specification" title="trim_specification" shape="rect">trim_specification</a>? <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> ( ( ',' | 'FROM' ) <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-trim-function" title="binary-trim-function">binary-trim-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_overlay_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="611" height="84"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OVERLAY</text> + <rect x="81" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="85" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="101" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="13">binary_value_expression</text></a><rect x="231" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="13">PLACING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="287" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="291" y="13">binary_value_expression</text></a><rect x="417" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="421" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="461" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="465" y="13">numeric_value_expression</text></a><rect x="381" y="64" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="385" y="76">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="415" y="64" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="419" y="76">numeric_value_expression</text></a><rect x="575" y="43" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="579" y="55">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m132 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-264 42 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h164 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v1 m194 0 v-1 m-194 1 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m26 0 h4 m0 0 h4 m132 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="601 52 609 48 609 56"/> + <polygon points="601 52 593 48 593 56"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-overlay-function" title="binary_overlay_function" shape="rect">binary_overlay_function</a></div> + <div>         ::= 'OVERLAY' '(' <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> 'PLACING' <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> 'FROM' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ( 'FOR' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-value-function" title="binary-value-function">binary-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + datetime_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-term" xlink:title="datetime_term" shape="rect"> + <rect x="43" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">datetime_term</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-value-expression" xlink:title="interval_value_expression" shape="rect"> + <rect x="43" y="29" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">interval_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m78 0 h4 m0 0 h50 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m128 0 h4 m23 -28 h-3"/> + <polygon points="205 10 213 6 213 14"/> + <polygon points="205 10 197 6 197 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#datetime-value-expression" title="datetime_value_expression" shape="rect">datetime_value_expression</a></div> + <div>         ::= <a href="#datetime-term" title="datetime_term" shape="rect">datetime_term</a></div> + <div>           | <a href="#interval-value-expression" title="interval_value_expression" shape="rect">interval_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-primary" title="binary-primary">binary-primary</a></li><li><a href="#common-value-expression" title="common-value-expression">common-value-expression</a></li><li><a href="#extract-source" title="extract-source">extract-source</a></li><li><a href="#interval-value-expression" title="interval-value-expression">interval-value-expression</a></li><li><a href="#system-version-specification" title="system-version-specification">system-version-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + datetime_term +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="127" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-factor" xlink:title="datetime_factor" shape="rect"> + <rect x="23" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">datetime_factor</text></a><path class="line" d="m17 10 h2 m0 0 h4 m80 0 h4 m3 0 h-3"/> + <polygon points="117 10 125 6 125 14"/> + <polygon points="117 10 109 6 109 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#datetime-term" title="datetime_term" shape="rect">datetime_term</a></div> + <div>         ::= <a href="#datetime-factor" title="datetime_factor" shape="rect">datetime_factor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-value-expression" title="datetime-value-expression">datetime-value-expression</a></li><li><a href="#interval-value-expression" title="interval-value-expression">interval-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + datetime_factor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-primary" xlink:title="datetime_primary" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">datetime_primary</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#time-zone" xlink:title="time_zone" shape="rect"> + <rect x="141" y="22" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="34">time_zone</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m20 0 h10 m0 0 h56 m-86 0 h20 m66 0 h20 m-106 0 q10 0 10 10 m86 0 q0 -10 10 -10 m-96 10 v1 m86 0 v-1 m-86 1 q0 10 10 10 m66 0 q10 0 10 -10 m-76 10 h4 m58 0 h4 m23 -21 h-3"/> + <polygon points="233 10 241 6 241 14"/> + <polygon points="233 10 225 6 225 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#datetime-factor" title="datetime_factor" shape="rect">datetime_factor</a></div> + <div>         ::= <a href="#datetime-primary" title="datetime_primary" shape="rect">datetime_primary</a> <a href="#time-zone" title="time_zone" shape="rect">time_zone</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-term" title="datetime-term">datetime-term</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + datetime_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-value-function" xlink:title="datetime_value_function" shape="rect"> + <rect x="43" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">datetime_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-value-expression" xlink:title="interval_value_expression" shape="rect"> + <rect x="43" y="29" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">interval_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m122 0 h4 m0 0 h6 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m128 0 h4 m23 -28 h-3"/> + <polygon points="205 10 213 6 213 14"/> + <polygon points="205 10 197 6 197 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#datetime-primary" title="datetime_primary" shape="rect">datetime_primary</a></div> + <div>         ::= <a href="#datetime-value-function" title="datetime_value_function" shape="rect">datetime_value_function</a></div> + <div>           | <a href="#interval-value-expression" title="interval_value_expression" shape="rect">interval_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-factor" title="datetime-factor">datetime-factor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + time_zone +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="175" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">AT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#time-zone-specifier" xlink:title="time_zone_specifier" shape="rect"> + <rect x="51" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="55" y="13">time_zone_specifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m100 0 h4 m3 0 h-3"/> + <polygon points="165 10 173 6 173 14"/> + <polygon points="165 10 157 6 157 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#time-zone" title="time_zone" shape="rect">time_zone</a></div> + <div>         ::= 'AT' <a href="#time-zone-specifier" title="time_zone_specifier" shape="rect">time_zone_specifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-factor" title="datetime-factor">datetime-factor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + time_zone_specifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">LOCAL</text> + <rect x="43" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">TIME</text> + <rect x="81" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="85" y="41">ZONE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-primary" xlink:title="interval_primary" shape="rect"> + <rect x="123" y="29" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="41">interval_primary</text></a><path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m0 0 h124 m-190 0 h20 m170 0 h20 m-210 0 q10 0 10 10 m190 0 q0 -10 10 -10 m-200 10 v8 m190 0 v-8 m-190 8 q0 10 10 10 m170 0 q10 0 10 -10 m-180 10 h4 m30 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m82 0 h4 m23 -28 h-3"/> + <polygon points="239 10 247 6 247 14"/> + <polygon points="239 10 231 6 231 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#time-zone-specifier" title="time_zone_specifier" shape="rect">time_zone_specifier</a></div> + <div>         ::= 'LOCAL'</div> + <div>           | 'TIME' 'ZONE' <a href="#interval-primary" title="interval_primary" shape="rect">interval_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#time-zone" title="time-zone">time-zone</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + datetime_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="279" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CURRENT_DATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#current-time-value-function" xlink:title="current_time_value_function" shape="rect"> + <rect x="43" y="29" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">current_time_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#current-timestamp-value-function" xlink:title="current_timestamp_value_function" shape="rect"> + <rect x="43" y="57" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">current_timestamp_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#current-local-time-value-function" xlink:title="current_local_time_value_function" shape="rect"> + <rect x="43" y="85" width="162" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">current_local_time_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#current-local-timestamp-value-function" xlink:title="current_local_timestamp_value_function" shape="rect"> + <rect x="43" y="113" width="192" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">current_local_timestamp_value_function</text></a><path class="line" d="m17 10 h2 m20 0 h4 m80 0 h4 m0 0 h112 m-220 0 h20 m200 0 h20 m-240 0 q10 0 10 10 m220 0 q0 -10 10 -10 m-230 10 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m138 0 h4 m0 0 h54 m-210 -10 v20 m220 0 v-20 m-220 20 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m168 0 h4 m0 0 h24 m-210 -10 v20 m220 0 v-20 m-220 20 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m162 0 h4 m0 0 h30 m-210 -10 v20 m220 0 v-20 m-220 20 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m192 0 h4 m23 -112 h-3"/> + <polygon points="269 10 277 6 277 14"/> + <polygon points="269 10 261 6 261 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#datetime-value-function" title="datetime_value_function" shape="rect">datetime_value_function</a></div> + <div>         ::= 'CURRENT_DATE'</div> + <div>           | <a href="#current-time-value-function" title="current_time_value_function" shape="rect">current_time_value_function</a></div> + <div>           | <a href="#current-timestamp-value-function" title="current_timestamp_value_function" shape="rect">current_timestamp_value_function</a></div> + <div>           | <a href="#current-local-time-value-function" title="current_local_time_value_function" shape="rect">current_local_time_value_function</a></div> + <div>           | <a href="#current-local-timestamp-value-function" title="current_local_timestamp_value_function" shape="rect">current_local_timestamp_value_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-primary" title="datetime-primary">datetime-primary</a></li><li><a href="#default-option" title="default-option">default-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + current_time_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="303" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CURRENT_TIME</text> + <rect x="129" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="149" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="153" y="34">unsigned_integer</text></a><rect x="247" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="251" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m78 0 h4 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="293 10 301 6 301 14"/> + <polygon points="293 10 285 6 285 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#current-time-value-function" title="current_time_value_function" shape="rect">current_time_value_function</a></div> + <div>         ::= 'CURRENT_TIME' ( '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-value-function" title="datetime-value-function">datetime-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + current_local_time_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="285" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LOCALTIME</text> + <rect x="111" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="131" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="34">unsigned_integer</text></a><rect x="229" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m60 0 h4 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="275 10 283 6 283 14"/> + <polygon points="275 10 267 6 267 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#current-local-time-value-function" title="current_local_time_value_function" shape="rect">current_local_time_value_function</a></div> + <div>         ::= 'LOCALTIME' ( '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-value-function" title="datetime-value-function">datetime-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + current_timestamp_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="335" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="110" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CURRENT_TIMESTAMP</text> + <rect x="161" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="181" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="34">unsigned_integer</text></a><rect x="279" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="283" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m110 0 h4 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="325 10 333 6 333 14"/> + <polygon points="325 10 317 6 317 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#current-timestamp-value-function" title="current_timestamp_value_function" shape="rect">current_timestamp_value_function</a></div> + <div>         ::= 'CURRENT_TIMESTAMP' ( '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-value-function" title="datetime-value-function">datetime-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + current_local_timestamp_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="92" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LOCALTIMESTAMP</text> + <rect x="143" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="163" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="167" y="34">unsigned_integer</text></a><rect x="261" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="265" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="307 10 315 6 315 14"/> + <polygon points="307 10 299 6 299 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#current-local-timestamp-value-function" title="current_local_timestamp_value_function" shape="rect">current_local_timestamp_value_function</a></div> + <div>         ::= 'LOCALTIMESTAMP' ( '(' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#datetime-value-function" title="datetime-value-function">datetime-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="455" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-term" xlink:title="interval_term" shape="rect"> + <rect x="43" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">interval_term</text></a><rect x="43" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-value-expression" xlink:title="datetime_value_expression" shape="rect"> + <rect x="63" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">datetime_value_expression</text></a><rect x="207" y="29" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="41">-</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-term" xlink:title="datetime_term" shape="rect"> + <rect x="225" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="229" y="41">datetime_term</text></a><rect x="311" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="315" y="41">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-qualifier" xlink:title="interval_qualifier" shape="rect"> + <rect x="331" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="335" y="41">interval_qualifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m70 0 h4 m0 0 h298 m-396 0 h20 m376 0 h20 m-416 0 q10 0 10 10 m396 0 q0 -10 10 -10 m-406 10 v8 m396 0 v-8 m-396 8 q0 10 10 10 m376 0 q10 0 10 -10 m-386 10 h4 m12 0 h4 m0 0 h4 m136 0 h4 m0 0 h4 m10 0 h4 m0 0 h4 m78 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m80 0 h4 m23 -28 h-3"/> + <polygon points="445 10 453 6 453 14"/> + <polygon points="445 10 437 6 437 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-value-expression" title="interval_value_expression" shape="rect">interval_value_expression</a></div> + <div>         ::= <a href="#interval-term" title="interval_term" shape="rect">interval_term</a></div> + <div>           | '(' <a href="#datetime-value-expression" title="datetime_value_expression" shape="rect">datetime_value_expression</a> '-' <a href="#datetime-term" title="datetime_term" shape="rect">datetime_term</a> ')' <a href="#interval-qualifier" title="interval_qualifier" shape="rect">interval_qualifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#common-value-expression" title="common-value-expression">common-value-expression</a></li><li><a href="#datetime-primary" title="datetime-primary">datetime-primary</a></li><li><a href="#datetime-value-expression" title="datetime-value-expression">datetime-value-expression</a></li><li><a href="#extract-source" title="extract-source">extract-source</a></li><li><a href="#interval-absolute-value-function" title="interval-absolute-value-function">interval-absolute-value-function</a></li><li><a href="#set-time-zone-value" title="set-time-zone-value">set-time-zone-value</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_term +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="263" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-factor" xlink:title="interval_factor" shape="rect"> + <rect x="23" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">interval_factor</text></a><rect x="143" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="34">*</text> + <rect x="143" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="62">/</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#factor" xlink:title="factor" shape="rect"> + <rect x="185" y="22" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="189" y="34">factor</text></a><path class="line" d="m17 10 h2 m0 0 h4 m72 0 h4 m20 0 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-94 10 h4 m14 0 h4 m-42 0 h20 m22 0 h20 m-62 0 q10 0 10 10 m42 0 q0 -10 10 -10 m-52 10 v8 m42 0 v-8 m-42 8 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m12 0 h4 m0 0 h2 m20 -28 h4 m34 0 h4 m23 -21 h-3"/> + <polygon points="253 10 261 6 261 14"/> + <polygon points="253 10 245 6 245 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-term" title="interval_term" shape="rect">interval_term</a></div> + <div>         ::= <a href="#interval-factor" title="interval_factor" shape="rect">interval_factor</a> ( ( '*' | '/' ) <a href="#factor" title="factor" shape="rect">factor</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-value-expression" title="interval-value-expression">interval-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_factor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">+</text> + <rect x="43" y="50" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">-</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-primary" xlink:title="interval_primary" shape="rect"> + <rect x="85" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">interval_primary</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h12 m-42 0 h20 m22 0 h20 m-62 0 q10 0 10 10 m42 0 q0 -10 10 -10 m-52 10 v1 m42 0 v-1 m-42 1 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m14 0 h4 m-32 -10 v20 m42 0 v-20 m-42 20 v8 m42 0 v-8 m-42 8 q0 10 10 10 m22 0 q10 0 10 -10 m-32 10 h4 m10 0 h4 m0 0 h4 m20 -49 h4 m82 0 h4 m3 0 h-3"/> + <polygon points="181 10 189 6 189 14"/> + <polygon points="181 10 173 6 173 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-factor" title="interval_factor" shape="rect">interval_factor</a></div> + <div>         ::= ( '+' | '-' )? <a href="#interval-primary" title="interval_primary" shape="rect">interval_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-term" title="interval-term">interval-term</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="333" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-value-function" xlink:title="interval_value_function" shape="rect"> + <rect x="43" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">interval_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-expression" xlink:title="array_value_expression" shape="rect"> + <rect x="43" y="29" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">array_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-qualifier" xlink:title="interval_qualifier" shape="rect"> + <rect x="189" y="50" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="193" y="62">interval_qualifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m112 0 h4 m0 0 h134 m-274 0 h20 m254 0 h20 m-294 0 q10 0 10 10 m274 0 q0 -10 10 -10 m-284 10 v8 m274 0 v-8 m-274 8 q0 10 10 10 m254 0 q10 0 10 -10 m-264 10 h4 m118 0 h4 m20 0 h10 m0 0 h78 m-108 0 h20 m88 0 h20 m-128 0 q10 0 10 10 m108 0 q0 -10 10 -10 m-118 10 v1 m108 0 v-1 m-108 1 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m80 0 h4 m43 -49 h-3"/> + <polygon points="323 10 331 6 331 14"/> + <polygon points="323 10 315 6 315 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-primary" title="interval_primary" shape="rect">interval_primary</a></div> + <div>         ::= <a href="#interval-value-function" title="interval_value_function" shape="rect">interval_value_function</a></div> + <div>           | <a href="#array-value-expression" title="array_value_expression" shape="rect">array_value_expression</a> <a href="#interval-qualifier" title="interval_qualifier" shape="rect">interval_qualifier</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-factor" title="interval-factor">interval-factor</a></li><li><a href="#time-zone-specifier" title="time-zone-specifier">time-zone-specifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-absolute-value-function" xlink:title="interval_absolute_value_function" shape="rect"> + <rect x="23" y="1" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">interval_absolute_value_function</text></a><path class="line" d="m17 10 h2 m0 0 h4 m158 0 h4 m3 0 h-3"/> + <polygon points="195 10 203 6 203 14"/> + <polygon points="195 10 187 6 187 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-value-function" title="interval_value_function" shape="rect">interval_value_function</a></div> + <div>         ::= <a href="#interval-absolute-value-function" title="interval_absolute_value_function" shape="rect">interval_absolute_value_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-primary" title="interval-primary">interval-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_absolute_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ABS</text> + <rect x="57" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="61" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-value-expression" xlink:title="interval_value_expression" shape="rect"> + <rect x="77" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">interval_value_expression</text></a><rect x="213" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m26 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m128 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="239 10 247 6 247 14"/> + <polygon points="239 10 231 6 231 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-absolute-value-function" title="interval_absolute_value_function" shape="rect">interval_absolute_value_function</a></div> + <div>         ::= 'ABS' '(' <a href="#interval-value-expression" title="interval_value_expression" shape="rect">interval_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-value-function" title="interval-value-function">interval-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + boolean_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="161" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-term" xlink:title="boolean_term" shape="rect"> + <rect x="43" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">boolean_term</text></a><rect x="43" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">OR</text> + <path class="line" d="m17 38 h2 m20 0 h4 m74 0 h4 m-102 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m82 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-82 0 h4 m22 0 h4 m0 0 h52 m23 28 h-3"/> + <polygon points="151 38 159 34 159 42"/> + <polygon points="151 38 143 34 143 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#boolean-value-expression" title="boolean_value_expression" shape="rect">boolean_value_expression</a></div> + <div>         ::= <a href="#boolean-term" title="boolean_term" shape="rect">boolean_term</a> ( 'OR' <a href="#boolean-term" title="boolean_term" shape="rect">boolean_term</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#contextually-typed-row-value-constructor" title="contextually-typed-row-value-constructor">contextually-typed-row-value-constructor</a></li><li><a href="#parenthesized-boolean-value-expression" title="parenthesized-boolean-value-expression">parenthesized-boolean-value-expression</a></li><li><a href="#row-value-constructor" title="row-value-constructor">row-value-constructor</a></li><li><a href="#search-condition" title="search-condition">search-condition</a></li><li><a href="#value-expression" title="value-expression">value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + boolean_term +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="165" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-factor" xlink:title="boolean_factor" shape="rect"> + <rect x="43" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">boolean_factor</text></a><rect x="43" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">AND</text> + <path class="line" d="m17 38 h2 m20 0 h4 m78 0 h4 m-106 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m86 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-86 0 h4 m28 0 h4 m0 0 h50 m23 28 h-3"/> + <polygon points="155 38 163 34 163 42"/> + <polygon points="155 38 147 34 147 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#boolean-term" title="boolean_term" shape="rect">boolean_term</a></div> + <div>         ::= <a href="#boolean-factor" title="boolean_factor" shape="rect">boolean_factor</a> ( 'AND' <a href="#boolean-factor" title="boolean_factor" shape="rect">boolean_factor</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#boolean-value-expression" title="boolean-value-expression">boolean-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + boolean_factor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-test" xlink:title="boolean_test" shape="rect"> + <rect x="99" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">boolean_test</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="183 10 191 6 191 14"/> + <polygon points="183 10 175 6 175 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#boolean-factor" title="boolean_factor" shape="rect">boolean_factor</a></div> + <div>         ::= 'NOT'? <a href="#boolean-test" title="boolean_test" shape="rect">boolean_test</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#boolean-term" title="boolean-term">boolean-term</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + boolean_test +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="347" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-primary" xlink:title="boolean_primary" shape="rect"> + <rect x="23" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">boolean_primary</text></a><rect x="139" y="22" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="34">IS</text> + <rect x="185" y="43" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="55">NOT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#truth-value" xlink:title="truth_value" shape="rect"> + <rect x="241" y="22" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="34">truth_value</text></a><path class="line" d="m17 10 h2 m0 0 h4 m88 0 h4 m20 0 h10 m0 0 h162 m-192 0 h20 m172 0 h20 m-212 0 q10 0 10 10 m192 0 q0 -10 10 -10 m-202 10 v1 m192 0 v-1 m-192 1 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m18 0 h4 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m62 0 h4 m23 -21 h-3"/> + <polygon points="337 10 345 6 345 14"/> + <polygon points="337 10 329 6 329 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#boolean-test" title="boolean_test" shape="rect">boolean_test</a></div> + <div>         ::= <a href="#boolean-primary" title="boolean_primary" shape="rect">boolean_primary</a> ( 'IS' 'NOT'? <a href="#truth-value" title="truth_value" shape="rect">truth_value</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#boolean-factor" title="boolean-factor">boolean-factor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + truth_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">TRUE</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">FALSE</text> + <rect x="43" y="57" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">UNKNOWN</text> + <path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h28 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m36 0 h4 m0 0 h24 m-78 -10 v20 m88 0 v-20 m-88 20 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m23 -56 h-3"/> + <polygon points="137 10 145 6 145 14"/> + <polygon points="137 10 129 6 129 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#truth-value" title="truth_value" shape="rect">truth_value</a></div> + <div>         ::= 'TRUE'</div> + <div>           | 'FALSE'</div> + <div>           | 'UNKNOWN'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#boolean-test" title="boolean-test">boolean-test</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + boolean_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#predicate" xlink:title="predicate" shape="rect"> + <rect x="43" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-predicand" xlink:title="boolean_predicand" shape="rect"> + <rect x="43" y="29" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">boolean_predicand</text></a><path class="line" d="m17 10 h2 m20 0 h4 m52 0 h4 m0 0 h46 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v8 m126 0 v-8 m-126 8 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m98 0 h4 m23 -28 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#boolean-primary" title="boolean_primary" shape="rect">boolean_primary</a></div> + <div>         ::= <a href="#predicate" title="predicate" shape="rect">predicate</a></div> + <div>           | <a href="#boolean-predicand" title="boolean_predicand" shape="rect">boolean_predicand</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#boolean-test" title="boolean-test">boolean-test</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + boolean_predicand +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="291" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parenthesized-boolean-value-expression" xlink:title="parenthesized_boolean_value_expression" shape="rect"> + <rect x="43" y="1" width="204" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">parenthesized_boolean_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">numeric_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m204 0 h4 m-232 0 h20 m212 0 h20 m-252 0 q10 0 10 10 m232 0 q0 -10 10 -10 m-242 10 v8 m232 0 v-8 m-232 8 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m132 0 h4 m0 0 h72 m23 -28 h-3"/> + <polygon points="281 10 289 6 289 14"/> + <polygon points="281 10 273 6 273 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#boolean-predicand" title="boolean_predicand" shape="rect">boolean_predicand</a></div> + <div>         ::= <a href="#parenthesized-boolean-value-expression" title="parenthesized_boolean_value_expression" shape="rect">parenthesized_boolean_value_expression</a></div> + <div>           | <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#boolean-primary" title="boolean-primary">boolean-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parenthesized_boolean_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-value-expression" xlink:title="boolean_value_expression" shape="rect"> + <rect x="43" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">boolean_value_expression</text></a><rect x="183" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parenthesized-boolean-value-expression" title="parenthesized_boolean_value_expression" shape="rect">parenthesized_boolean_value_expression</a></div> + <div>         ::= '(' <a href="#boolean-value-expression" title="boolean_value_expression" shape="rect">boolean_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#boolean-predicand" title="boolean-predicand">boolean-predicand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="161" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-primary" xlink:title="array_primary" shape="rect"> + <rect x="43" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">array_primary</text></a><rect x="43" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">||</text> + <path class="line" d="m17 38 h2 m20 0 h4 m74 0 h4 m-102 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m82 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-82 0 h4 m14 0 h4 m0 0 h60 m23 28 h-3"/> + <polygon points="151 38 159 34 159 42"/> + <polygon points="151 38 143 34 143 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-value-expression" title="array_value_expression" shape="rect">array_value_expression</a></div> + <div>         ::= <a href="#array-primary" title="array_primary" shape="rect">array_primary</a> ( '||' <a href="#array-primary" title="array_primary" shape="rect">array_primary</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-value-expression-1" title="array-value-expression-1">array-value-expression-1</a></li><li><a href="#collection-value-expression" title="collection-value-expression">collection-value-expression</a></li><li><a href="#interval-primary" title="interval-primary">interval-primary</a></li><li><a href="#max-cardinality-expression" title="max-cardinality-expression">max-cardinality-expression</a></li><li><a href="#trim-array-function" title="trim-array-function">trim-array-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_value_expression_1 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="165" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-expression" xlink:title="array_value_expression" shape="rect"> + <rect x="23" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">array_value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m118 0 h4 m3 0 h-3"/> + <polygon points="155 10 163 6 163 14"/> + <polygon points="155 10 147 6 147 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-value-expression-1" title="array_value_expression_1" shape="rect">array_value_expression_1</a></div> + <div>         ::= <a href="#array-value-expression" title="array_value_expression" shape="rect">array_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + array_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-function" xlink:title="array_value_function" shape="rect"> + <rect x="43" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">array_value_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-expression" xlink:title="multiset_value_expression" shape="rect"> + <rect x="43" y="29" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">multiset_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m104 0 h4 m0 0 h26 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m130 0 h4 m23 -28 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-primary" title="array_primary" shape="rect">array_primary</a></div> + <div>         ::= <a href="#array-value-function" title="array_value_function" shape="rect">array_value_function</a></div> + <div>           | <a href="#multiset-value-expression" title="multiset_value_expression" shape="rect">multiset_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-value-expression" title="array-value-expression">array-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_value_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trim-array-function" xlink:title="trim_array_function" shape="rect"> + <rect x="23" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">trim_array_function</text></a><path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="133 10 141 6 141 14"/> + <polygon points="133 10 125 6 125 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-value-function" title="array_value_function" shape="rect">array_value_function</a></div> + <div>         ::= <a href="#trim-array-function" title="trim_array_function" shape="rect">trim_array_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-primary" title="array-primary">array-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + trim_array_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="437" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRIM_ARRAY</text> + <rect x="99" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-expression" xlink:title="array_value_expression" shape="rect"> + <rect x="119" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="13">array_value_expression</text></a><rect x="245" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="261" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="265" y="13">numeric_value_expression</text></a><rect x="401" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="405" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m68 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m118 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="427 10 435 6 435 14"/> + <polygon points="427 10 419 6 419 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#trim-array-function" title="trim_array_function" shape="rect">trim_array_function</a></div> + <div>         ::= 'TRIM_ARRAY' '(' <a href="#array-value-expression" title="array_value_expression" shape="rect">array_value_expression</a> ',' <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-value-function" title="array-value-function">array-value-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_value_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-constructor-by-enumeration" xlink:title="array_value_constructor_by_enumeration" shape="rect"> + <rect x="43" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">array_value_constructor_by_enumeration</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-value-constructor-by-query" xlink:title="array_value_constructor_by_query" shape="rect"> + <rect x="43" y="29" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">array_value_constructor_by_query</text></a><path class="line" d="m17 10 h2 m20 0 h4 m200 0 h4 m-228 0 h20 m208 0 h20 m-248 0 q10 0 10 10 m228 0 q0 -10 10 -10 m-238 10 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m168 0 h4 m0 0 h32 m23 -28 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-value-constructor" title="array_value_constructor" shape="rect">array_value_constructor</a></div> + <div>         ::= <a href="#array-value-constructor-by-enumeration" title="array_value_constructor_by_enumeration" shape="rect">array_value_constructor_by_enumeration</a></div> + <div>           | <a href="#array-value-constructor-by-query" title="array_value_constructor_by_query" shape="rect">array_value_constructor_by_query</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#collection-value-constructor" title="collection-value-constructor">collection-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_value_constructor_by_enumeration +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="485" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ARRAY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#left-bracket-or-trigraph" xlink:title="left_bracket_or_trigraph" shape="rect"> + <rect x="69" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="73" y="13">left_bracket_or_trigraph</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-element-list" xlink:title="array_element_list" shape="rect"> + <rect x="215" y="22" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="34">array_element_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#right-bracket-or-trigraph" xlink:title="right_bracket_or_trigraph" shape="rect"> + <rect x="337" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="341" y="13">right_bracket_or_trigraph</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m118 0 h4 m20 0 h10 m0 0 h92 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v1 m122 0 v-1 m-122 1 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m94 0 h4 m20 -21 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="475 10 483 6 483 14"/> + <polygon points="475 10 467 6 467 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-value-constructor-by-enumeration" title="array_value_constructor_by_enumeration" shape="rect">array_value_constructor_by_enumeration</a></div> + <div>         ::= 'ARRAY' <a href="#left-bracket-or-trigraph" title="left_bracket_or_trigraph" shape="rect">left_bracket_or_trigraph</a> <a href="#array-element-list" title="array_element_list" shape="rect">array_element_list</a>? <a href="#right-bracket-or-trigraph" title="right_bracket_or_trigraph" shape="rect">right_bracket_or_trigraph</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-value-constructor" title="array-value-constructor">array-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="163" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-element" xlink:title="array_element" shape="rect"> + <rect x="43" y="29" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">array_element</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m76 0 h4 m-104 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m84 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-84 0 h4 m8 0 h4 m0 0 h68 m23 28 h-3"/> + <polygon points="153 38 161 34 161 42"/> + <polygon points="153 38 145 34 145 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-element-list" title="array_element_list" shape="rect">array_element_list</a></div> + <div>         ::= <a href="#array-element" title="array_element" shape="rect">array_element</a> ( ',' <a href="#array-element" title="array_element" shape="rect">array_element</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-value-constructor-by-enumeration" title="array-value-constructor-by-enumeration">array-value-constructor-by-enumeration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-element" title="array_element" shape="rect">array_element</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-element-list" title="array-element-list">array-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_value_constructor_by_query +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="145" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ARRAY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="69" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="73" y="13">subquery</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="135 10 143 6 143 14"/> + <polygon points="135 10 127 6 127 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-value-constructor-by-query" title="array_value_constructor_by_query" shape="rect">array_value_constructor_by_query</a></div> + <div>         ::= 'ARRAY' <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-value-constructor" title="array-value-constructor">array-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="487" height="91"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-term" xlink:title="multiset_term" shape="rect"> + <rect x="23" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">multiset_term</text></a><rect x="123" y="22" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="127" y="34">MULTISET</text> + <rect x="203" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="207" y="34">UNION</text> + <rect x="203" y="50" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="207" y="62">EXCEPT</text> + <rect x="293" y="43" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="297" y="55">ALL</text> + <rect x="293" y="71" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="297" y="83">DISTINCT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-term" xlink:title="multiset_term" shape="rect"> + <rect x="371" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="375" y="34">multiset_term</text></a><path class="line" d="m17 10 h2 m0 0 h4 m72 0 h4 m20 0 h10 m0 0 h318 m-348 0 h20 m328 0 h20 m-368 0 q10 0 10 10 m348 0 q0 -10 10 -10 m-358 10 v1 m348 0 v-1 m-348 1 q0 10 10 10 m328 0 q10 0 10 -10 m-338 10 h4 m52 0 h4 m20 0 h4 m40 0 h4 m0 0 h2 m-70 0 h20 m50 0 h20 m-90 0 q10 0 10 10 m70 0 q0 -10 10 -10 m-80 10 v8 m70 0 v-8 m-70 8 q0 10 10 10 m50 0 q10 0 10 -10 m-60 10 h4 m42 0 h4 m40 -28 h10 m0 0 h48 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v1 m78 0 v-1 m-78 1 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m24 0 h4 m0 0 h26 m-68 -10 v20 m78 0 v-20 m-78 20 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m20 -49 h4 m72 0 h4 m23 -21 h-3"/> + <polygon points="477 10 485 6 485 14"/> + <polygon points="477 10 469 6 469 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-value-expression" title="multiset_value_expression" shape="rect">multiset_value_expression</a></div> + <div>         ::= <a href="#multiset-term" title="multiset_term" shape="rect">multiset_term</a> ( 'MULTISET' ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? <a href="#multiset-term" title="multiset_term" shape="rect">multiset_term</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-primary" title="array-primary">array-primary</a></li><li><a href="#collection-value-expression" title="collection-value-expression">collection-value-expression</a></li><li><a href="#member-predicate-part-2" title="member-predicate-part-2">member-predicate-part-2</a></li><li><a href="#multiset-element-reference" title="multiset-element-reference">multiset-element-reference</a></li><li><a href="#multiset-set-function" title="multiset-set-function">multiset-set-function</a></li><li><a href="#submultiset-predicate-part-2" title="submultiset-predicate-part-2">submultiset-predicate-part-2</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_term +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="487" height="91"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-primary" xlink:title="multiset_primary" shape="rect"> + <rect x="23" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">multiset_primary</text></a><rect x="135" y="22" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="34">MULTISET</text> + <rect x="195" y="22" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="34">INTERSECT</text> + <rect x="281" y="43" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="285" y="55">ALL</text> + <rect x="281" y="71" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="285" y="83">DISTINCT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-primary" xlink:title="multiset_primary" shape="rect"> + <rect x="359" y="22" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="363" y="34">multiset_primary</text></a><path class="line" d="m17 10 h2 m0 0 h4 m84 0 h4 m20 0 h10 m0 0 h306 m-336 0 h20 m316 0 h20 m-356 0 q10 0 10 10 m336 0 q0 -10 10 -10 m-346 10 v1 m336 0 v-1 m-336 1 q0 10 10 10 m316 0 q10 0 10 -10 m-326 10 h4 m52 0 h4 m0 0 h4 m58 0 h4 m20 0 h10 m0 0 h48 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v1 m78 0 v-1 m-78 1 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m24 0 h4 m0 0 h26 m-68 -10 v20 m78 0 v-20 m-78 20 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m20 -49 h4 m84 0 h4 m23 -21 h-3"/> + <polygon points="477 10 485 6 485 14"/> + <polygon points="477 10 469 6 469 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-term" title="multiset_term" shape="rect">multiset_term</a></div> + <div>         ::= <a href="#multiset-primary" title="multiset_primary" shape="rect">multiset_primary</a> ( 'MULTISET' 'INTERSECT' ( 'ALL' | 'DISTINCT' )? <a href="#multiset-primary" title="multiset_primary" shape="rect">multiset_primary</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiset-value-expression" title="multiset-value-expression">multiset-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-set-function" xlink:title="multiset_set_function" shape="rect"> + <rect x="43" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">multiset_set_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression-primary" xlink:title="value_expression_primary" shape="rect"> + <rect x="43" y="29" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">value_expression_primary</text></a><path class="line" d="m17 10 h2 m20 0 h4 m106 0 h4 m0 0 h24 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m130 0 h4 m23 -28 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-primary" title="multiset_primary" shape="rect">multiset_primary</a></div> + <div>         ::= <a href="#multiset-set-function" title="multiset_set_function" shape="rect">multiset_set_function</a></div> + <div>           | <a href="#value-expression-primary" title="value_expression_primary" shape="rect">value_expression_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiset-term" title="multiset-term">multiset-term</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_set_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-expression" xlink:title="multiset_value_expression" shape="rect"> + <rect x="75" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">multiset_value_expression</text></a><rect x="213" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m130 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="239 10 247 6 247 14"/> + <polygon points="239 10 231 6 231 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-set-function" title="multiset_set_function" shape="rect">multiset_set_function</a></div> + <div>         ::= 'SET' '(' <a href="#multiset-value-expression" title="multiset_value_expression" shape="rect">multiset_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiset-primary" title="multiset-primary">multiset-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_value_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="299" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-constructor-by-enumeration" xlink:title="multiset_value_constructor_by_enumeration" shape="rect"> + <rect x="43" y="1" width="212" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">multiset_value_constructor_by_enumeration</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-constructor-by-query" xlink:title="multiset_value_constructor_by_query" shape="rect"> + <rect x="43" y="29" width="180" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">multiset_value_constructor_by_query</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-value-constructor-by-query" xlink:title="table_value_constructor_by_query" shape="rect"> + <rect x="43" y="57" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">table_value_constructor_by_query</text></a><path class="line" d="m17 10 h2 m20 0 h4 m212 0 h4 m-240 0 h20 m220 0 h20 m-260 0 q10 0 10 10 m240 0 q0 -10 10 -10 m-250 10 v8 m240 0 v-8 m-240 8 q0 10 10 10 m220 0 q10 0 10 -10 m-230 10 h4 m180 0 h4 m0 0 h32 m-230 -10 v20 m240 0 v-20 m-240 20 v8 m240 0 v-8 m-240 8 q0 10 10 10 m220 0 q10 0 10 -10 m-230 10 h4 m168 0 h4 m0 0 h44 m23 -56 h-3"/> + <polygon points="289 10 297 6 297 14"/> + <polygon points="289 10 281 6 281 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-value-constructor" title="multiset_value_constructor" shape="rect">multiset_value_constructor</a></div> + <div>         ::= <a href="#multiset-value-constructor-by-enumeration" title="multiset_value_constructor_by_enumeration" shape="rect">multiset_value_constructor_by_enumeration</a></div> + <div>           | <a href="#multiset-value-constructor-by-query" title="multiset_value_constructor_by_query" shape="rect">multiset_value_constructor_by_query</a></div> + <div>           | <a href="#table-value-constructor-by-query" title="table_value_constructor_by_query" shape="rect">table_value_constructor_by_query</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#collection-value-constructor" title="collection-value-constructor">collection-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_value_constructor_by_enumeration +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="471" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MULTISET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#left-bracket-or-trigraph" xlink:title="left_bracket_or_trigraph" shape="rect"> + <rect x="83" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">left_bracket_or_trigraph</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-element-list" xlink:title="multiset_element_list" shape="rect"> + <rect x="209" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="213" y="13">multiset_element_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#right-bracket-or-trigraph" xlink:title="right_bracket_or_trigraph" shape="rect"> + <rect x="323" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="327" y="13">right_bracket_or_trigraph</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m118 0 h4 m0 0 h4 m106 0 h4 m0 0 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="461 10 469 6 469 14"/> + <polygon points="461 10 453 6 453 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-value-constructor-by-enumeration" title="multiset_value_constructor_by_enumeration" shape="rect">multiset_value_constructor_by_enumeration</a></div> + <div>         ::= 'MULTISET' <a href="#left-bracket-or-trigraph" title="left_bracket_or_trigraph" shape="rect">left_bracket_or_trigraph</a> <a href="#multiset-element-list" title="multiset_element_list" shape="rect">multiset_element_list</a> <a href="#right-bracket-or-trigraph" title="right_bracket_or_trigraph" shape="rect">right_bracket_or_trigraph</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiset-value-constructor" title="multiset-value-constructor">multiset-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="175" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-element" xlink:title="multiset_element" shape="rect"> + <rect x="43" y="29" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">multiset_element</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m88 0 h4 m-116 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m96 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-96 0 h4 m8 0 h4 m0 0 h80 m23 28 h-3"/> + <polygon points="165 38 173 34 173 42"/> + <polygon points="165 38 157 34 157 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-element-list" title="multiset_element_list" shape="rect">multiset_element_list</a></div> + <div>         ::= <a href="#multiset-element" title="multiset_element" shape="rect">multiset_element</a> ( ',' <a href="#multiset-element" title="multiset_element" shape="rect">multiset_element</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiset-value-constructor-by-enumeration" title="multiset-value-constructor-by-enumeration">multiset-value-constructor-by-enumeration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-element" title="multiset_element" shape="rect">multiset_element</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiset-element-list" title="multiset-element-list">multiset-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiset_value_constructor_by_query +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="159" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MULTISET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="83" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">subquery</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="149 10 157 6 157 14"/> + <polygon points="149 10 141 6 141 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiset-value-constructor-by-query" title="multiset_value_constructor_by_query" shape="rect">multiset_value_constructor_by_query</a></div> + <div>         ::= 'MULTISET' <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiset-value-constructor" title="multiset-value-constructor">multiset-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_value_constructor_by_query +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="67" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="71" y="13">subquery</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="133 10 141 6 141 14"/> + <polygon points="133 10 125 6 125 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-value-constructor-by-query" title="table_value_constructor_by_query" shape="rect">table_value_constructor_by_query</a></div> + <div>         ::= 'TABLE' <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiset-value-constructor" title="multiset-value-constructor">multiset-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="233" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#explicit-row-value-constructor" xlink:title="explicit_row_value_constructor" shape="rect"> + <rect x="43" y="1" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">explicit_row_value_constructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#common-value-expression" xlink:title="common_value_expression" shape="rect"> + <rect x="43" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">common_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-value-expression" xlink:title="boolean_value_expression" shape="rect"> + <rect x="43" y="57" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">boolean_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m146 0 h4 m-174 0 h20 m154 0 h20 m-194 0 q10 0 10 10 m174 0 q0 -10 10 -10 m-184 10 v8 m174 0 v-8 m-174 8 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m136 0 h4 m0 0 h10 m-164 -10 v20 m174 0 v-20 m-174 20 v8 m174 0 v-8 m-174 8 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m132 0 h4 m0 0 h14 m23 -56 h-3"/> + <polygon points="223 10 231 6 231 14"/> + <polygon points="223 10 215 6 215 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-constructor" title="row_value_constructor" shape="rect">row_value_constructor</a></div> + <div>         ::= <a href="#explicit-row-value-constructor" title="explicit_row_value_constructor" shape="rect">explicit_row_value_constructor</a></div> + <div>           | <a href="#common-value-expression" title="common_value_expression" shape="rect">common_value_expression</a></div> + <div>           | <a href="#boolean-value-expression" title="boolean_value_expression" shape="rect">boolean_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-row-value-expression" title="table-row-value-expression">table-row-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + explicit_row_value_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="559" height="98"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">ROW</text> + <rect x="103" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-constructor-element-list" xlink:title="row_value_constructor_element_list" shape="rect"> + <rect x="123" y="1" width="172" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="13">row_value_constructor_element_list</text></a><rect x="63" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-constructor-element" xlink:title="row_value_constructor_element" shape="rect"> + <rect x="83" y="29" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">row_value_constructor_element</text></a><rect x="267" y="50" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="271" y="62">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-constructor-element-list" xlink:title="row_value_constructor_element_list" shape="rect"> + <rect x="283" y="50" width="172" height="18" class="nonterminal"/> + <text class="nonterminal" x="287" y="62">row_value_constructor_element_list</text></a><rect x="503" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="507" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="43" y="78" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="90">subquery</text></a><path class="line" d="m17 10 h2 m40 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m172 0 h4 m0 0 h180 m-440 0 h20 m420 0 h20 m-460 0 q10 0 10 10 m440 0 q0 -10 10 -10 m-450 10 v8 m440 0 v-8 m-440 8 q0 10 10 10 m420 0 q10 0 10 -10 m-430 10 h4 m12 0 h4 m0 0 h4 m156 0 h4 m20 0 h10 m0 0 h186 m-216 0 h20 m196 0 h20 m-236 0 q10 0 10 10 m216 0 q0 -10 10 -10 m-226 10 v1 m216 0 v-1 m-216 1 q0 10 10 10 m196 0 q10 0 10 -10 m-206 10 h4 m8 0 h4 m0 0 h4 m172 0 h4 m40 -49 h4 m12 0 h4 m-500 0 h20 m480 0 h20 m-520 0 q10 0 10 10 m500 0 q0 -10 10 -10 m-510 10 v57 m500 0 v-57 m-500 57 q0 10 10 10 m480 0 q10 0 10 -10 m-490 10 h4 m52 0 h4 m0 0 h420 m23 -77 h-3"/> + <polygon points="549 10 557 6 557 14"/> + <polygon points="549 10 541 6 541 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#explicit-row-value-constructor" title="explicit_row_value_constructor" shape="rect">explicit_row_value_constructor</a></div> + <div>         ::= ( 'ROW' '(' <a href="#row-value-constructor-element-list" title="row_value_constructor_element_list" shape="rect">row_value_constructor_element_list</a> | '(' <a href="#row-value-constructor-element" title="row_value_constructor_element" shape="rect">row_value_constructor_element</a> ( ',' <a href="#row-value-constructor-element-list" title="row_value_constructor_element_list" shape="rect">row_value_constructor_element_list</a> )? ) ')'</div> + <div>           | <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#row-value-constructor" title="row-value-constructor">row-value-constructor</a></li><li><a href="#row-value-constructor-predicand" title="row-value-constructor-predicand">row-value-constructor-predicand</a></li><li><a href="#row-value-expression" title="row-value-expression">row-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_constructor_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-constructor-element" xlink:title="row_value_constructor_element" shape="rect"> + <rect x="43" y="29" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">row_value_constructor_element</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m156 0 h4 m-184 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m164 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-164 0 h4 m8 0 h4 m0 0 h148 m23 28 h-3"/> + <polygon points="233 38 241 34 241 42"/> + <polygon points="233 38 225 34 225 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-constructor-element-list" title="row_value_constructor_element_list" shape="rect">row_value_constructor_element_list</a></div> + <div>         ::= <a href="#row-value-constructor-element" title="row_value_constructor_element" shape="rect">row_value_constructor_element</a> ( ',' <a href="#row-value-constructor-element" title="row_value_constructor_element" shape="rect">row_value_constructor_element</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#explicit-row-value-constructor" title="explicit-row-value-constructor">explicit-row-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_constructor_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-constructor-element" title="row_value_constructor_element" shape="rect">row_value_constructor_element</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#explicit-row-value-constructor" title="explicit-row-value-constructor">explicit-row-value-constructor</a></li><li><a href="#row-value-constructor-element-list" title="row-value-constructor-element-list">row-value-constructor-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + contextually_typed_row_value_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="743" height="161"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#common-value-expression" xlink:title="common_value_expression" shape="rect"> + <rect x="43" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">common_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-value-expression" xlink:title="boolean_value_expression" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">boolean_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="43" y="57" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">contextually_typed_value_specification</text></a><rect x="63" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="97">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="103" y="85" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="97">contextually_typed_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-row-value-constructor-element" xlink:title="contextually_typed_row_value_constructor_element" shape="rect"> + <rect x="103" y="113" width="248" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="125">contextually_typed_row_value_constructor_element</text></a><rect x="359" y="113" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="363" y="125">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-row-value-constructor-element-list" xlink:title="contextually_typed_row_value_constructor_element_list" shape="rect"> + <rect x="375" y="113" width="264" height="18" class="nonterminal"/> + <text class="nonterminal" x="379" y="125">contextually_typed_row_value_constructor_element_list</text></a><rect x="63" y="141" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="153">ROW</text> + <rect x="103" y="141" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="153">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-row-value-constructor-element-list" xlink:title="contextually_typed_row_value_constructor_element_list" shape="rect"> + <rect x="123" y="141" width="264" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="153">contextually_typed_row_value_constructor_element_list</text></a><rect x="687" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="691" y="97">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m136 0 h4 m0 0 h520 m-684 0 h20 m664 0 h20 m-704 0 q10 0 10 10 m684 0 q0 -10 10 -10 m-694 10 v8 m684 0 v-8 m-684 8 q0 10 10 10 m664 0 q10 0 10 -10 m-674 10 h4 m132 0 h4 m0 0 h524 m-674 -10 v20 m684 0 v-20 m-684 20 v8 m684 0 v-8 m-684 8 q0 10 10 10 m664 0 q10 0 10 -10 m-674 10 h4 m184 0 h4 m0 0 h472 m-674 -10 v20 m684 0 v-20 m-684 20 v8 m684 0 v-8 m-684 8 q0 10 10 10 m664 0 q10 0 10 -10 m-654 10 h4 m12 0 h4 m20 0 h4 m184 0 h4 m0 0 h352 m-564 0 h20 m544 0 h20 m-584 0 q10 0 10 10 m564 0 q0 -10 10 -10 m-574 10 v8 m564 0 v-8 m-564 8 q0 10 10 10 m544 0 q10 0 10 -10 m-554 10 h4 m248 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m264 0 h4 m-604 -28 h20 m604 0 h20 m-644 0 q10 0 10 10 m624 0 q0 -10 10 -10 m-634 10 v36 m624 0 v-36 m-624 36 q0 10 10 10 m604 0 q10 0 10 -10 m-614 10 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m264 0 h4 m0 0 h272 m20 -56 h4 m12 0 h4 m23 -84 h-3"/> + <polygon points="733 10 741 6 741 14"/> + <polygon points="733 10 725 6 725 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#contextually-typed-row-value-constructor" title="contextually_typed_row_value_constructor" shape="rect">contextually_typed_row_value_constructor</a></div> + <div>         ::= <a href="#common-value-expression" title="common_value_expression" shape="rect">common_value_expression</a></div> + <div>           | <a href="#boolean-value-expression" title="boolean_value_expression" shape="rect">boolean_value_expression</a></div> + <div>           | <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div> + <div>           | ( '(' ( <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a> | <a href="#contextually-typed-row-value-constructor-element" title="contextually_typed_row_value_constructor_element" shape="rect">contextually_typed_row_value_constructor_element</a> ',' <a href="#contextually-typed-row-value-constructor-element-list" title="contextually_typed_row_value_constructor_element_list" shape="rect">contextually_typed_row_value_constructor_element_list</a> ) | 'ROW' '(' <a href="#contextually-typed-row-value-constructor-element-list" title="contextually_typed_row_value_constructor_element_list" shape="rect">contextually_typed_row_value_constructor_element_list</a> ) ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#contextually-typed-row-value-expression" title="contextually-typed-row-value-expression">contextually-typed-row-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + contextually_typed_row_value_constructor_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="335" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-row-value-constructor-element" xlink:title="contextually_typed_row_value_constructor_element" shape="rect"> + <rect x="43" y="29" width="248" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">contextually_typed_row_value_constructor_element</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m248 0 h4 m-276 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m256 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-256 0 h4 m8 0 h4 m0 0 h240 m23 28 h-3"/> + <polygon points="325 38 333 34 333 42"/> + <polygon points="325 38 317 34 317 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#contextually-typed-row-value-constructor-element-list" title="contextually_typed_row_value_constructor_element_list" shape="rect">contextually_typed_row_value_constructor_element_list</a></div> + <div>         ::= <a href="#contextually-typed-row-value-constructor-element" title="contextually_typed_row_value_constructor_element" shape="rect">contextually_typed_row_value_constructor_element</a> ( ',' <a href="#contextually-typed-row-value-constructor-element" title="contextually_typed_row_value_constructor_element" shape="rect">contextually_typed_row_value_constructor_element</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#contextually-typed-row-value-constructor" title="contextually-typed-row-value-constructor">contextually-typed-row-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + contextually_typed_row_value_constructor_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="23" y="1" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">contextually_typed_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m184 0 h4 m3 0 h-3"/> + <polygon points="221 10 229 6 229 14"/> + <polygon points="221 10 213 6 213 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#contextually-typed-row-value-constructor-element" title="contextually_typed_row_value_constructor_element" shape="rect">contextually_typed_row_value_constructor_element</a></div> + <div>         ::= <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#contextually-typed-row-value-constructor" title="contextually-typed-row-value-constructor">contextually-typed-row-value-constructor</a></li><li><a href="#contextually-typed-row-value-constructor-element-list" title="contextually-typed-row-value-constructor-element-list">contextually-typed-row-value-constructor-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_constructor_predicand +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="233" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#common-value-expression" xlink:title="common_value_expression" shape="rect"> + <rect x="43" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">common_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#explicit-row-value-constructor" xlink:title="explicit_row_value_constructor" shape="rect"> + <rect x="43" y="29" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">explicit_row_value_constructor</text></a><path class="line" d="m17 10 h2 m20 0 h4 m136 0 h4 m0 0 h10 m-174 0 h20 m154 0 h20 m-194 0 q10 0 10 10 m174 0 q0 -10 10 -10 m-184 10 v8 m174 0 v-8 m-174 8 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m146 0 h4 m23 -28 h-3"/> + <polygon points="223 10 231 6 231 14"/> + <polygon points="223 10 215 6 215 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-constructor-predicand" title="row_value_constructor_predicand" shape="rect">row_value_constructor_predicand</a></div> + <div>         ::= <a href="#common-value-expression" title="common_value_expression" shape="rect">common_value_expression</a></div> + <div>           | <a href="#explicit-row-value-constructor" title="explicit_row_value_constructor" shape="rect">explicit_row_value_constructor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#row-value-predicand" title="row-value-predicand">row-value-predicand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="233" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#explicit-row-value-constructor" xlink:title="explicit_row_value_constructor" shape="rect"> + <rect x="43" y="1" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">explicit_row_value_constructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-special-case" xlink:title="row_value_special_case" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">row_value_special_case</text></a><path class="line" d="m17 10 h2 m20 0 h4 m146 0 h4 m-174 0 h20 m154 0 h20 m-194 0 q10 0 10 10 m174 0 q0 -10 10 -10 m-184 10 v8 m174 0 v-8 m-174 8 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m120 0 h4 m0 0 h26 m23 -28 h-3"/> + <polygon points="223 10 231 6 231 14"/> + <polygon points="223 10 215 6 215 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-expression" title="row_value_expression" shape="rect">row_value_expression</a></div> + <div>         ::= <a href="#explicit-row-value-constructor" title="explicit_row_value_constructor" shape="rect">explicit_row_value_constructor</a></div> + <div>           | <a href="#row-value-special-case" title="row_value_special_case" shape="rect">row_value_special_case</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#in-value-list" title="in-value-list">in-value-list</a></li><li><a href="#value-expression" title="value-expression">value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_row_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="207" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-constructor" xlink:title="row_value_constructor" shape="rect"> + <rect x="43" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">row_value_constructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-special-case" xlink:title="row_value_special_case" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">row_value_special_case</text></a><path class="line" d="m17 10 h2 m20 0 h4 m112 0 h4 m0 0 h8 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v8 m148 0 v-8 m-148 8 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m120 0 h4 m23 -28 h-3"/> + <polygon points="197 10 205 6 205 14"/> + <polygon points="197 10 189 6 189 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-row-value-expression" title="table_row_value_expression" shape="rect">table_row_value_expression</a></div> + <div>         ::= <a href="#row-value-constructor" title="row_value_constructor" shape="rect">row_value_constructor</a></div> + <div>           | <a href="#row-value-special-case" title="row_value_special_case" shape="rect">row_value_special_case</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#row-value-expression-list" title="row-value-expression-list">row-value-expression-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + contextually_typed_row_value_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="291" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-row-value-constructor" xlink:title="contextually_typed_row_value_constructor" shape="rect"> + <rect x="43" y="1" width="204" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">contextually_typed_row_value_constructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-special-case" xlink:title="row_value_special_case" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">row_value_special_case</text></a><path class="line" d="m17 10 h2 m20 0 h4 m204 0 h4 m-232 0 h20 m212 0 h20 m-252 0 q10 0 10 10 m232 0 q0 -10 10 -10 m-242 10 v8 m232 0 v-8 m-232 8 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m120 0 h4 m0 0 h84 m23 -28 h-3"/> + <polygon points="281 10 289 6 289 14"/> + <polygon points="281 10 273 6 273 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#contextually-typed-row-value-expression" title="contextually_typed_row_value_expression" shape="rect">contextually_typed_row_value_expression</a></div> + <div>         ::= <a href="#contextually-typed-row-value-constructor" title="contextually_typed_row_value_constructor" shape="rect">contextually_typed_row_value_constructor</a></div> + <div>           | <a href="#row-value-special-case" title="row_value_special_case" shape="rect">row_value_special_case</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#assigned-row" title="assigned-row">assigned-row</a></li><li><a href="#contextually-typed-row-value-expression-list" title="contextually-typed-row-value-expression-list">contextually-typed-row-value-expression-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_predicand +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-constructor-predicand" xlink:title="row_value_constructor_predicand" shape="rect"> + <rect x="43" y="1" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">row_value_constructor_predicand</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-special-case" xlink:title="row_value_special_case" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">row_value_special_case</text></a><path class="line" d="m17 10 h2 m20 0 h4 m164 0 h4 m-192 0 h20 m172 0 h20 m-212 0 q10 0 10 10 m192 0 q0 -10 10 -10 m-202 10 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m120 0 h4 m0 0 h44 m23 -28 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div> + <div>         ::= <a href="#row-value-constructor-predicand" title="row_value_constructor_predicand" shape="rect">row_value_constructor_predicand</a></div> + <div>           | <a href="#row-value-special-case" title="row_value_special_case" shape="rect">row_value_special_case</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#between-predicate-part-2" title="between-predicate-part-2">between-predicate-part-2</a></li><li><a href="#case-operand" title="case-operand">case-operand</a></li><li><a href="#comparison-predicate-part-2" title="comparison-predicate-part-2">comparison-predicate-part-2</a></li><li><a href="#predicate" title="predicate">predicate</a></li><li><a href="#row-value-predicand-1" title="row-value-predicand-1">row-value-predicand-1</a></li><li><a href="#row-value-predicand-2" title="row-value-predicand-2">row-value-predicand-2</a></li><li><a href="#row-value-predicand-3" title="row-value-predicand-3">row-value-predicand-3</a></li><li><a href="#row-value-predicand-4" title="row-value-predicand-4">row-value-predicand-4</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_special_case +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="307" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#common-value-expression" xlink:title="common_value_expression" shape="rect"> + <rect x="43" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">common_value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nonparenthesized-value-expression-primary" xlink:title="nonparenthesized_value_expression_primary" shape="rect"> + <rect x="43" y="29" width="220" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">nonparenthesized_value_expression_primary</text></a><path class="line" d="m17 10 h2 m20 0 h4 m136 0 h4 m0 0 h84 m-248 0 h20 m228 0 h20 m-268 0 q10 0 10 10 m248 0 q0 -10 10 -10 m-258 10 v8 m248 0 v-8 m-248 8 q0 10 10 10 m228 0 q10 0 10 -10 m-238 10 h4 m220 0 h4 m23 -28 h-3"/> + <polygon points="297 10 305 6 305 14"/> + <polygon points="297 10 289 6 289 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-special-case" title="row_value_special_case" shape="rect">row_value_special_case</a></div> + <div>         ::= <a href="#common-value-expression" title="common_value_expression" shape="rect">common_value_expression</a></div> + <div>           | <a href="#nonparenthesized-value-expression-primary" title="nonparenthesized_value_expression_primary" shape="rect">nonparenthesized_value_expression_primary</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#contextually-typed-row-value-expression" title="contextually-typed-row-value-expression">contextually-typed-row-value-expression</a></li><li><a href="#row-value-expression" title="row-value-expression">row-value-expression</a></li><li><a href="#row-value-predicand" title="row-value-predicand">row-value-predicand</a></li><li><a href="#table-row-value-expression" title="table-row-value-expression">table-row-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_value_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">VALUES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-expression-list" xlink:title="row_value_expression_list" shape="rect"> + <rect x="73" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="77" y="13">row_value_expression_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-value-constructor" title="table_value_constructor" shape="rect">table_value_constructor</a></div> + <div>         ::= 'VALUES' <a href="#row-value-expression-list" title="row_value_expression_list" shape="rect">row_value_expression_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#simple-table" title="simple-table">simple-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_expression_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="227" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-row-value-expression" xlink:title="table_row_value_expression" shape="rect"> + <rect x="43" y="29" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">table_row_value_expression</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m140 0 h4 m-168 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m148 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-148 0 h4 m8 0 h4 m0 0 h132 m23 28 h-3"/> + <polygon points="217 38 225 34 225 42"/> + <polygon points="217 38 209 34 209 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-expression-list" title="row_value_expression_list" shape="rect">row_value_expression_list</a></div> + <div>         ::= <a href="#table-row-value-expression" title="table_row_value_expression" shape="rect">table_row_value_expression</a> ( ',' <a href="#table-row-value-expression" title="table_row_value_expression" shape="rect">table_row_value_expression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-value-constructor" title="table-value-constructor">table-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + contextually_typed_table_value_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">VALUES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-row-value-expression-list" xlink:title="contextually_typed_row_value_expression_list" shape="rect"> + <rect x="73" y="1" width="220" height="18" class="nonterminal"/> + <text class="nonterminal" x="77" y="13">contextually_typed_row_value_expression_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m220 0 h4 m3 0 h-3"/> + <polygon points="307 10 315 6 315 14"/> + <polygon points="307 10 299 6 299 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#contextually-typed-table-value-constructor" title="contextually_typed_table_value_constructor" shape="rect">contextually_typed_table_value_constructor</a></div> + <div>         ::= 'VALUES' <a href="#contextually-typed-row-value-expression-list" title="contextually_typed_row_value_expression_list" shape="rect">contextually_typed_row_value_expression_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#from-constructor" title="from-constructor">from-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + contextually_typed_row_value_expression_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="291" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-row-value-expression" xlink:title="contextually_typed_row_value_expression" shape="rect"> + <rect x="43" y="29" width="204" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">contextually_typed_row_value_expression</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m204 0 h4 m-232 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m212 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-212 0 h4 m8 0 h4 m0 0 h196 m23 28 h-3"/> + <polygon points="281 38 289 34 289 42"/> + <polygon points="281 38 273 34 273 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#contextually-typed-row-value-expression-list" title="contextually_typed_row_value_expression_list" shape="rect">contextually_typed_row_value_expression_list</a></div> + <div>         ::= <a href="#contextually-typed-row-value-expression" title="contextually_typed_row_value_expression" shape="rect">contextually_typed_row_value_expression</a> ( ',' <a href="#contextually-typed-row-value-expression" title="contextually_typed_row_value_expression" shape="rect">contextually_typed_row_value_expression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#contextually-typed-table-value-constructor" title="contextually-typed-table-value-constructor">contextually-typed-table-value-constructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="615" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#from-clause" xlink:title="from_clause" shape="rect"> + <rect x="23" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">from_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#where-clause" xlink:title="where_clause" shape="rect"> + <rect x="115" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="34">where_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#group-by-clause" xlink:title="group_by_clause" shape="rect"> + <rect x="235" y="22" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="239" y="34">group_by_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#having-clause" xlink:title="having_clause" shape="rect"> + <rect x="371" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="375" y="34">having_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-clause" xlink:title="window_clause" shape="rect"> + <rect x="493" y="22" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="497" y="34">window_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m64 0 h4 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m40 -21 h10 m0 0 h86 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v1 m116 0 v-1 m-116 1 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m88 0 h4 m40 -21 h10 m0 0 h72 m-102 0 h20 m82 0 h20 m-122 0 q10 0 10 10 m102 0 q0 -10 10 -10 m-112 10 v1 m102 0 v-1 m-102 1 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m74 0 h4 m40 -21 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m23 -21 h-3"/> + <polygon points="605 10 613 6 613 14"/> + <polygon points="605 10 597 6 597 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-expression" title="table_expression" shape="rect">table_expression</a></div> + <div>         ::= <a href="#from-clause" title="from_clause" shape="rect">from_clause</a> <a href="#where-clause" title="where_clause" shape="rect">where_clause</a>? <a href="#group-by-clause" title="group_by_clause" shape="rect">group_by_clause</a>? <a href="#having-clause" title="having_clause" shape="rect">having_clause</a>? <a href="#window-clause" title="window_clause" shape="rect">window_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-specification" title="query-specification">query-specification</a></li><li><a href="#select-statement-single-row" title="select-statement-single-row">select-statement-single-row</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + from_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="189" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-reference-list" xlink:title="table_reference_list" shape="rect"> + <rect x="67" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="71" y="13">table_reference_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m98 0 h4 m3 0 h-3"/> + <polygon points="179 10 187 6 187 14"/> + <polygon points="179 10 171 6 171 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#from-clause" title="from_clause" shape="rect">from_clause</a></div> + <div>         ::= 'FROM' <a href="#table-reference-list" title="table_reference_list" shape="rect">table_reference_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-expression" title="table-expression">table-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_reference_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-reference" xlink:title="table_reference" shape="rect"> + <rect x="43" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">table_reference</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m80 0 h4 m-108 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m88 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-88 0 h4 m8 0 h4 m0 0 h72 m23 28 h-3"/> + <polygon points="157 38 165 34 165 42"/> + <polygon points="157 38 149 34 149 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-reference-list" title="table_reference_list" shape="rect">table_reference_list</a></div> + <div>         ::= <a href="#table-reference" title="table_reference" shape="rect">table_reference</a> ( ',' <a href="#table-reference" title="table_reference" shape="rect">table_reference</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#from-clause" title="from-clause">from-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="42"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-factor" xlink:title="table_factor" shape="rect"> + <rect x="23" y="22" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">table_factor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#joined-table" xlink:title="joined_table" shape="rect"> + <rect x="113" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="13">joined_table</text></a><path class="line" d="m17 31 h2 m0 0 h4 m62 0 h4 m20 0 h10 m0 0 h64 m-94 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m74 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-74 0 h4 m66 0 h4 m23 21 h-3"/> + <polygon points="213 31 221 27 221 35"/> + <polygon points="213 31 205 27 205 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-reference" title="table_reference" shape="rect">table_reference</a></div> + <div>         ::= <a href="#table-factor" title="table_factor" shape="rect">table_factor</a> <a href="#joined-table" title="joined_table" shape="rect">joined_table</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-statement" title="merge-statement">merge-statement</a></li><li><a href="#parenthesized-joined-table" title="parenthesized-joined-table">parenthesized-joined-table</a></li><li><a href="#qualified-join" title="qualified-join">qualified-join</a></li><li><a href="#table-reference-list" title="table-reference-list">table-reference-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_factor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="399" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-primary" xlink:title="table_primary" shape="rect"> + <rect x="23" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">table_primary</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sample-clause" xlink:title="sample_clause" shape="rect"> + <rect x="123" y="22" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="34">sample_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#partitioned-join-table" xlink:title="partitioned_join_table" shape="rect"> + <rect x="249" y="22" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="34">partitioned_join_table</text></a><path class="line" d="m17 10 h2 m0 0 h4 m72 0 h4 m20 0 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m40 -21 h10 m0 0 h104 m-134 0 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v1 m134 0 v-1 m-134 1 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m106 0 h4 m23 -21 h-3"/> + <polygon points="389 10 397 6 397 14"/> + <polygon points="389 10 381 6 381 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-factor" title="table_factor" shape="rect">table_factor</a></div> + <div>         ::= <a href="#table-primary" title="table_primary" shape="rect">table_primary</a> <a href="#sample-clause" title="sample_clause" shape="rect">sample_clause</a>? <a href="#partitioned-join-table" title="partitioned_join_table" shape="rect">partitioned_join_table</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cross-join" title="cross-join">cross-join</a></li><li><a href="#natural-join" title="natural-join">natural-join</a></li><li><a href="#table-reference" title="table-reference">table-reference</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sample_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="505" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TABLESAMPLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sample-method" xlink:title="sample_method" shape="rect"> + <rect x="103" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="13">sample_method</text></a><rect x="197" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sample-percentage" xlink:title="sample_percentage" shape="rect"> + <rect x="217" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="221" y="13">sample_percentage</text></a><rect x="327" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#repeatable-clause" xlink:title="repeatable_clause" shape="rect"> + <rect x="367" y="22" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="371" y="34">repeatable_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m72 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m102 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h92 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v1 m122 0 v-1 m-122 1 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m94 0 h4 m23 -21 h-3"/> + <polygon points="495 10 503 6 503 14"/> + <polygon points="495 10 487 6 487 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sample-clause" title="sample_clause" shape="rect">sample_clause</a></div> + <div>         ::= 'TABLESAMPLE' <a href="#sample-method" title="sample_method" shape="rect">sample_method</a> '(' <a href="#sample-percentage" title="sample_percentage" shape="rect">sample_percentage</a> ')' <a href="#repeatable-clause" title="repeatable_clause" shape="rect">repeatable_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-factor" title="table-factor">table-factor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sample_method +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">BERNOULLI</text> + <rect x="43" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SYSTEM</text> + <path class="line" d="m17 10 h2 m20 0 h4 m60 0 h4 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m44 0 h4 m0 0 h16 m23 -28 h-3"/> + <polygon points="137 10 145 6 145 14"/> + <polygon points="137 10 129 6 129 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sample-method" title="sample_method" shape="rect">sample_method</a></div> + <div>         ::= 'BERNOULLI'</div> + <div>           | 'SYSTEM'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sample-clause" title="sample-clause">sample-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + repeatable_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">REPEATABLE</text> + <rect x="95" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#repeat-argument" xlink:title="repeat_argument" shape="rect"> + <rect x="115" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="13">repeat_argument</text></a><rect x="215" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m64 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#repeatable-clause" title="repeatable_clause" shape="rect">repeatable_clause</a></div> + <div>         ::= 'REPEATABLE' '(' <a href="#repeat-argument" title="repeat_argument" shape="rect">repeat_argument</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sample-clause" title="sample-clause">sample-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sample_percentage +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">numeric_value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sample-percentage" title="sample_percentage" shape="rect">sample_percentage</a></div> + <div>         ::= <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sample-clause" title="sample-clause">sample-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + repeat_argument +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">numeric_value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#repeat-argument" title="repeat_argument" shape="rect">repeat_argument</a></div> + <div>         ::= <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#repeatable-clause" title="repeatable-clause">repeatable-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="305" height="217"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-or-query-name" xlink:title="table_or_query_name" shape="rect"> + <rect x="43" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">table_or_query_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#derived-table" xlink:title="derived_table" shape="rect"> + <rect x="43" y="29" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">derived_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parenthesized-joined-table" xlink:title="parenthesized_joined_table" shape="rect"> + <rect x="43" y="57" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">parenthesized_joined_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lateral-derived-table" xlink:title="lateral_derived_table" shape="rect"> + <rect x="43" y="85" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">lateral_derived_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collection-derived-table" xlink:title="collection_derived_table" shape="rect"> + <rect x="43" y="113" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">collection_derived_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-function-derived-table" xlink:title="table_function_derived_table" shape="rect"> + <rect x="43" y="141" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">table_function_derived_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#only-spec" xlink:title="only_spec" shape="rect"> + <rect x="43" y="169" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">only_spec</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-change-delta-table" xlink:title="data_change_delta_table" shape="rect"> + <rect x="43" y="197" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">data_change_delta_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="alias" shape="rect"> + <rect x="231" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="235" y="34">alias</text></a><path class="line" d="m17 10 h2 m20 0 h4 m112 0 h4 m0 0 h28 m-168 0 h20 m148 0 h20 m-188 0 q10 0 10 10 m168 0 q0 -10 10 -10 m-178 10 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m72 0 h4 m0 0 h68 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m136 0 h4 m0 0 h4 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m104 0 h4 m0 0 h36 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m116 0 h4 m0 0 h24 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m140 0 h4 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m56 0 h4 m0 0 h84 m-158 -10 v20 m168 0 v-20 m-168 20 v8 m168 0 v-8 m-168 8 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m128 0 h4 m0 0 h12 m40 -196 h10 m0 0 h28 m-58 0 h20 m38 0 h20 m-78 0 q10 0 10 10 m58 0 q0 -10 10 -10 m-68 10 v1 m58 0 v-1 m-58 1 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m30 0 h4 m23 -21 h-3"/> + <polygon points="295 10 303 6 303 14"/> + <polygon points="295 10 287 6 287 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-primary" title="table_primary" shape="rect">table_primary</a></div> + <div>         ::= ( <a href="#table-or-query-name" title="table_or_query_name" shape="rect">table_or_query_name</a> | <a href="#derived-table" title="derived_table" shape="rect">derived_table</a> | <a href="#parenthesized-joined-table" title="parenthesized_joined_table" shape="rect">parenthesized_joined_table</a> | <a href="#lateral-derived-table" title="lateral_derived_table" shape="rect">lateral_derived_table</a> | <a href="#collection-derived-table" title="collection_derived_table" shape="rect">collection_derived_table</a> | <a href="#table-function-derived-table" title="table_function_derived_table" shape="rect">table_function_derived_table</a> | <a href="#only-spec" title="only_spec" shape="rect">only_spec</a> | <a href="#data-change-delta-table" title="data_change_delta_table" shape="rect">data_change_delta_table</a> ) <a href="#alias" title="alias" shape="rect">alias</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#parenthesized-joined-table" title="parenthesized-joined-table">parenthesized-joined-table</a></li><li><a href="#table-factor" title="table-factor">table-factor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alias +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="493" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="91" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-suffix-chain" xlink:title="identifier_suffix_chain" shape="rect"> + <rect x="165" y="22" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="169" y="34">identifier_suffix_chain</text></a><rect x="317" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="321" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="337" y="22" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="341" y="34">column_name_list</text></a><rect x="437" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="441" y="34">)</text> + <path class="line" d="m17 10 h2 m20 0 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m46 0 h4 m20 0 h10 m0 0 h102 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v1 m132 0 v-1 m-132 1 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m104 0 h4 m40 -21 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="483 10 491 6 491 14"/> + <polygon points="483 10 475 6 475 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alias" title="alias" shape="rect">alias</a>    ::= 'AS'? <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#identifier-suffix-chain" title="identifier_suffix_chain" shape="rect">identifier_suffix_chain</a>? ( '(' <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + system_version_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="773" height="154"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">AS</text> + <rect x="71" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">OF</text> + <rect x="99" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">SYSTEM</text> + <rect x="151" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="155" y="13">TIME</text> + <rect x="43" y="29" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">VERSIONS</text> + <rect x="147" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="41">BEFORE</text> + <rect x="147" y="57" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="69">AFTER</text> + <rect x="219" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="41">SYSTEM</text> + <rect x="271" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="41">TIME</text> + <rect x="127" y="85" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="97">BETWEEN</text> + <rect x="207" y="106" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="118">ASYMMETRIC</text> + <rect x="207" y="134" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="146">SYMMETRIC</text> + <rect x="303" y="85" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="307" y="97">SYSTEM</text> + <rect x="355" y="85" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="359" y="97">TIME</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-value-expression" xlink:title="datetime_value_expression" shape="rect"> + <rect x="393" y="85" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="397" y="97">datetime_value_expression</text></a><rect x="537" y="85" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="541" y="97">AND</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-value-expression" xlink:title="datetime_value_expression" shape="rect"> + <rect x="613" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="617" y="13">datetime_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m20 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m30 0 h4 m0 0 h404 m-570 0 h20 m550 0 h20 m-590 0 q10 0 10 10 m570 0 q0 -10 10 -10 m-580 10 v8 m570 0 v-8 m-570 8 q0 10 10 10 m550 0 q10 0 10 -10 m-560 10 h4 m56 0 h4 m40 0 h4 m44 0 h4 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m36 0 h4 m0 0 h8 m20 -28 h4 m44 0 h4 m0 0 h4 m30 0 h4 m0 0 h264 m-466 0 h20 m446 0 h20 m-486 0 q10 0 10 10 m466 0 q0 -10 10 -10 m-476 10 v36 m466 0 v-36 m-466 36 q0 10 10 10 m446 0 q10 0 10 -10 m-456 10 h4 m52 0 h4 m20 0 h10 m0 0 h66 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v1 m96 0 v-1 m-96 1 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m68 0 h4 m-86 -10 v20 m96 0 v-20 m-96 20 v8 m96 0 v-8 m-96 8 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m62 0 h4 m0 0 h6 m20 -49 h4 m44 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m136 0 h4 m0 0 h4 m28 0 h4 m40 -84 h4 m136 0 h4 m3 0 h-3"/> + <polygon points="763 10 771 6 771 14"/> + <polygon points="763 10 755 6 755 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#system-version-specification" title="system_version_specification" shape="rect">system_version_specification</a></div> + <div>         ::= ( 'AS' 'OF' 'SYSTEM' 'TIME' | 'VERSIONS' ( ( 'BEFORE' | 'AFTER' ) 'SYSTEM' + 'TIME' | 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? 'SYSTEM' 'TIME' <a href="#datetime-value-expression" title="datetime_value_expression" shape="rect">datetime_value_expression</a> 'AND' ) ) <a href="#datetime-value-expression" title="datetime_value_expression" shape="rect">datetime_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + only_spec +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ONLY</text> + <rect x="65" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-or-query-name" xlink:title="table_or_query_name" shape="rect"> + <rect x="85" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">table_or_query_name</text></a><rect x="205" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="209" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m112 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#only-spec" title="only_spec" shape="rect">only_spec</a></div> + <div>         ::= 'ONLY' '(' <a href="#table-or-query-name" title="table_or_query_name" shape="rect">table_or_query_name</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + lateral_derived_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="153" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LATERAL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="77" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">subquery</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="143 10 151 6 151 14"/> + <polygon points="143 10 135 6 135 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#lateral-derived-table" title="lateral_derived_table" shape="rect">lateral_derived_table</a></div> + <div>         ::= 'LATERAL' <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + collection_derived_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="469" height="70"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">UNNEST</text> + <rect x="75" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collection-value-expression" xlink:title="collection_value_expression" shape="rect"> + <rect x="115" y="29" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="41">collection_value_expression</text></a><rect x="115" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="119" y="13">,</text> + <rect x="277" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="281" y="41">)</text> + <rect x="317" y="50" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="321" y="62">WITH</text> + <rect x="359" y="50" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="363" y="62">ORDINALITY</text> + <path class="line" d="m17 38 h2 m0 0 h4 m44 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m134 0 h4 m-162 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m142 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-142 0 h4 m8 0 h4 m0 0 h126 m20 28 h4 m12 0 h4 m20 0 h10 m0 0 h106 m-136 0 h20 m116 0 h20 m-156 0 q10 0 10 10 m136 0 q0 -10 10 -10 m-146 10 v1 m136 0 v-1 m-136 1 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m34 0 h4 m0 0 h4 m66 0 h4 m23 -21 h-3"/> + <polygon points="459 38 467 34 467 42"/> + <polygon points="459 38 451 34 451 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#collection-derived-table" title="collection_derived_table" shape="rect">collection_derived_table</a></div> + <div>         ::= 'UNNEST' '(' <a href="#collection-value-expression" title="collection_value_expression" shape="rect">collection_value_expression</a> ( ',' <a href="#collection-value-expression" title="collection_value_expression" shape="rect">collection_value_expression</a> )* ')' ( 'WITH' 'ORDINALITY' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_function_derived_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TABLE</text> + <rect x="67" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collection-value-expression" xlink:title="collection_value_expression" shape="rect"> + <rect x="87" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">collection_value_expression</text></a><rect x="229" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m134 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-function-derived-table" title="table_function_derived_table" shape="rect">table_function_derived_table</a></div> + <div>         ::= 'TABLE' '(' <a href="#collection-value-expression" title="collection_value_expression" shape="rect">collection_value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + derived_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-expression" xlink:title="query_expression" shape="rect"> + <rect x="43" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">query_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="43" y="29" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">subquery</text></a><path class="line" d="m17 10 h2 m20 0 h4 m92 0 h4 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m52 0 h4 m0 0 h40 m23 -28 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#derived-table" title="derived_table" shape="rect">derived_table</a></div> + <div>         ::= <a href="#query-expression" title="query_expression" shape="rect">query_expression</a></div> + <div>           | <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_or_query_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="153" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="43" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">table_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m66 0 h4 m-94 0 h20 m74 0 h20 m-114 0 q10 0 10 10 m94 0 q0 -10 10 -10 m-104 10 v8 m94 0 v-8 m-94 8 q0 10 10 10 m74 0 q10 0 10 -10 m-84 10 h4 m46 0 h4 m0 0 h20 m23 -28 h-3"/> + <polygon points="143 10 151 6 151 14"/> + <polygon points="143 10 135 6 135 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-or-query-name" title="table_or_query_name" shape="rect">table_or_query_name</a></div> + <div>         ::= <a href="#table-name" title="table_name" shape="rect">table_name</a></div> + <div>           | <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#explicit-table" title="explicit-table">explicit-table</a></li><li><a href="#only-spec" title="only-spec">only-spec</a></li><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_name_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m23 28 h-3"/> + <polygon points="123 38 131 34 131 42"/> + <polygon points="123 38 115 34 115 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> ( ',' <a href="#identifier" title="identifier" shape="rect">identifier</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alias" title="alias">alias</a></li><li><a href="#all-fields-column-name-list" title="all-fields-column-name-list">all-fields-column-name-list</a></li><li><a href="#as-subquery-clause" title="as-subquery-clause">as-subquery-clause</a></li><li><a href="#corresponding-spec" title="corresponding-spec">corresponding-spec</a></li><li><a href="#insert-column-list" title="insert-column-list">insert-column-list</a></li><li><a href="#join-column-list" title="join-column-list">join-column-list</a></li><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li><li><a href="#privilege-column-list" title="privilege-column-list">privilege-column-list</a></li><li><a href="#recursive-search-order" title="recursive-search-order">recursive-search-order</a></li><li><a href="#reference-column-list" title="reference-column-list">reference-column-list</a></li><li><a href="#trigger-column-list" title="trigger-column-list">trigger-column-list</a></li><li><a href="#unique-column-list" title="unique-column-list">unique-column-list</a></li><li><a href="#updatability-clause" title="updatability-clause">updatability-clause</a></li><li><a href="#view-column-list" title="view-column-list">view-column-list</a></li><li><a href="#with-list-element" title="with-list-element">with-list-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + data_change_delta_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="331" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result-option" xlink:title="result_option" shape="rect"> + <rect x="23" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">result_option</text></a><rect x="99" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">TABLE</text> + <rect x="143" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-change-statement" xlink:title="data_change_statement" shape="rect"> + <rect x="163" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="167" y="13">data_change_statement</text></a><rect x="295" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="299" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m68 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m124 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="321 10 329 6 329 14"/> + <polygon points="321 10 313 6 313 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#data-change-delta-table" title="data_change_delta_table" shape="rect">data_change_delta_table</a></div> + <div>         ::= <a href="#result-option" title="result_option" shape="rect">result_option</a> 'TABLE' '(' <a href="#data-change-statement" title="data_change_statement" shape="rect">data_change_statement</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + data_change_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delete-statement-searched" xlink:title="delete_statement_searched" shape="rect"> + <rect x="43" y="1" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">delete_statement_searched</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert-statement" xlink:title="insert_statement" shape="rect"> + <rect x="43" y="29" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">insert_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-statement" xlink:title="merge_statement" shape="rect"> + <rect x="43" y="57" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">merge_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-statement-searched" xlink:title="update_statement_searched" shape="rect"> + <rect x="43" y="85" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">update_statement_searched</text></a><path class="line" d="m17 10 h2 m20 0 h4 m140 0 h4 m0 0 h4 m-172 0 h20 m152 0 h20 m-192 0 q10 0 10 10 m172 0 q0 -10 10 -10 m-182 10 v8 m172 0 v-8 m-172 8 q0 10 10 10 m152 0 q10 0 10 -10 m-162 10 h4 m88 0 h4 m0 0 h56 m-162 -10 v20 m172 0 v-20 m-172 20 v8 m172 0 v-8 m-172 8 q0 10 10 10 m152 0 q10 0 10 -10 m-162 10 h4 m94 0 h4 m0 0 h50 m-162 -10 v20 m172 0 v-20 m-172 20 v8 m172 0 v-8 m-172 8 q0 10 10 10 m152 0 q10 0 10 -10 m-162 10 h4 m144 0 h4 m23 -84 h-3"/> + <polygon points="221 10 229 6 229 14"/> + <polygon points="221 10 213 6 213 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#data-change-statement" title="data_change_statement" shape="rect">data_change_statement</a></div> + <div>         ::= <a href="#delete-statement-searched" title="delete_statement_searched" shape="rect">delete_statement_searched</a></div> + <div>           | <a href="#insert-statement" title="insert_statement" shape="rect">insert_statement</a></div> + <div>           | <a href="#merge-statement" title="merge_statement" shape="rect">merge_statement</a></div> + <div>           | <a href="#update-statement-searched" title="update_statement_searched" shape="rect">update_statement_searched</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#data-change-delta-table" title="data-change-delta-table">data-change-delta-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + result_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="121" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">FINAL</text> + <rect x="43" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NEW</text> + <rect x="43" y="57" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">OLD</text> + <path class="line" d="m17 10 h2 m20 0 h4 m34 0 h4 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v8 m62 0 v-8 m-62 8 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m30 0 h4 m0 0 h4 m-52 -10 v20 m62 0 v-20 m-62 20 v8 m62 0 v-8 m-62 8 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m28 0 h4 m0 0 h6 m23 -56 h-3"/> + <polygon points="111 10 119 6 119 14"/> + <polygon points="111 10 103 6 103 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#result-option" title="result_option" shape="rect">result_option</a></div> + <div>         ::= 'FINAL'</div> + <div>           | 'NEW'</div> + <div>           | 'OLD'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#data-change-delta-table" title="data-change-delta-table">data-change-delta-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parenthesized_joined_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="321" height="70"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/> + <rect x="23" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-primary" xlink:title="table_primary" shape="rect"> + <rect x="63" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">table_primary</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-reference" xlink:title="table_reference" shape="rect"> + <rect x="63" y="50" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="62">table_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#joined-table" xlink:title="joined_table" shape="rect"> + <rect x="191" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="195" y="13">joined_table</text></a><rect x="285" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="289" y="34">)</text> + <path class="line" d="m17 31 h2 m0 0 h4 m12 0 h4 m20 0 h4 m72 0 h4 m0 0 h8 m-108 0 h20 m88 0 h20 m-128 0 q10 0 10 10 m108 0 q0 -10 10 -10 m-118 10 v8 m108 0 v-8 m-108 8 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m80 0 h4 m40 -28 h10 m0 0 h64 m-94 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m74 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-74 0 h4 m66 0 h4 m20 21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="311 31 319 27 319 35"/> + <polygon points="311 31 303 27 303 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parenthesized-joined-table" title="parenthesized_joined_table" shape="rect">parenthesized_joined_table</a></div> + <div>         ::= '(' ( <a href="#table-primary" title="table_primary" shape="rect">table_primary</a> | <a href="#table-reference" title="table_reference" shape="rect">table_reference</a> ) <a href="#joined-table" title="joined_table" shape="rect">joined_table</a>* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-primary" title="table-primary">table-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + joined_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cross-join" xlink:title="cross_join" shape="rect"> + <rect x="43" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">cross_join</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#qualified-join" xlink:title="qualified_join" shape="rect"> + <rect x="43" y="29" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">qualified_join</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#natural-join" xlink:title="natural_join" shape="rect"> + <rect x="43" y="57" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">natural_join</text></a><path class="line" d="m17 10 h2 m20 0 h4 m54 0 h4 m0 0 h14 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v8 m96 0 v-8 m-96 8 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m68 0 h4 m-86 -10 v20 m96 0 v-20 m-96 20 v8 m96 0 v-8 m-96 8 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m62 0 h4 m0 0 h6 m23 -56 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#joined-table" title="joined_table" shape="rect">joined_table</a></div> + <div>         ::= <a href="#cross-join" title="cross_join" shape="rect">cross_join</a></div> + <div>           | <a href="#qualified-join" title="qualified_join" shape="rect">qualified_join</a></div> + <div>           | <a href="#natural-join" title="natural_join" shape="rect">natural_join</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#parenthesized-joined-table" title="parenthesized-joined-table">parenthesized-joined-table</a></li><li><a href="#table-reference" title="table-reference">table-reference</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cross_join +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CROSS</text> + <rect x="71" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">JOIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-factor" xlink:title="table_factor" shape="rect"> + <rect x="109" y="1" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="113" y="13">table_factor</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m62 0 h4 m3 0 h-3"/> + <polygon points="185 10 193 6 193 14"/> + <polygon points="185 10 177 6 177 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cross-join" title="cross_join" shape="rect">cross_join</a></div> + <div>         ::= 'CROSS' 'JOIN' <a href="#table-factor" title="table_factor" shape="rect">table_factor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#joined-table" title="joined-table">joined-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + qualified_join +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="423" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#join-type" xlink:title="join_type" shape="rect"> + <rect x="43" y="22" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">join_type</text></a><rect x="123" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="127" y="13">JOIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-reference" xlink:title="table_reference" shape="rect"> + <rect x="181" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="13">table_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#partitioned-join-table" xlink:title="partitioned_join_table" shape="rect"> + <rect x="181" y="29" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="41">partitioned_join_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#join-specification" xlink:title="join_specification" shape="rect"> + <rect x="315" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="319" y="13">join_specification</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h50 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v1 m80 0 v-1 m-80 1 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m20 -21 h4 m30 0 h4 m20 0 h4 m80 0 h4 m0 0 h26 m-134 0 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m106 0 h4 m20 -28 h4 m84 0 h4 m3 0 h-3"/> + <polygon points="413 10 421 6 421 14"/> + <polygon points="413 10 405 6 405 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#qualified-join" title="qualified_join" shape="rect">qualified_join</a></div> + <div>         ::= <a href="#join-type" title="join_type" shape="rect">join_type</a>? 'JOIN' ( <a href="#table-reference" title="table_reference" shape="rect">table_reference</a> | <a href="#partitioned-join-table" title="partitioned_join_table" shape="rect">partitioned_join_table</a> ) <a href="#join-specification" title="join_specification" shape="rect">join_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#joined-table" title="joined-table">joined-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + partitioned_join_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="323" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">PARTITION</text> + <rect x="89" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#partitioned-join-column-reference-list" xlink:title="partitioned_join_column_reference_list" shape="rect"> + <rect x="117" y="1" width="182" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="13">partitioned_join_column_reference_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m58 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m182 0 h4 m3 0 h-3"/> + <polygon points="313 10 321 6 321 14"/> + <polygon points="313 10 305 6 305 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#partitioned-join-table" title="partitioned_join_table" shape="rect">partitioned_join_table</a></div> + <div>         ::= 'PARTITION' 'BY' <a href="#partitioned-join-column-reference-list" title="partitioned_join_column_reference_list" shape="rect">partitioned_join_column_reference_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#natural-join" title="natural-join">natural-join</a></li><li><a href="#qualified-join" title="qualified-join">qualified-join</a></li><li><a href="#table-factor" title="table-factor">table-factor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + partitioned_join_column_reference_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="293" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#partitioned-join-column-reference" xlink:title="partitioned_join_column_reference" shape="rect"> + <rect x="63" y="29" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">partitioned_join_column_reference</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="257" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m166 0 h4 m-194 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m174 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-174 0 h4 m8 0 h4 m0 0 h158 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="283 38 291 34 291 42"/> + <polygon points="283 38 275 34 275 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#partitioned-join-column-reference-list" title="partitioned_join_column_reference_list" shape="rect">partitioned_join_column_reference_list</a></div> + <div>         ::= '(' <a href="#partitioned-join-column-reference" title="partitioned_join_column_reference" shape="rect">partitioned_join_column_reference</a> ( ',' <a href="#partitioned-join-column-reference" title="partitioned_join_column_reference" shape="rect">partitioned_join_column_reference</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#partitioned-join-table" title="partitioned-join-table">partitioned-join-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + partitioned_join_column_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-reference" xlink:title="column_reference" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_reference</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#partitioned-join-column-reference" title="partitioned_join_column_reference" shape="rect">partitioned_join_column_reference</a></div> + <div>         ::= <a href="#column-reference" title="column_reference" shape="rect">column_reference</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#partitioned-join-column-reference-list" title="partitioned-join-column-reference-list">partitioned-join-column-reference-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + natural_join +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="389" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NATURAL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#join-type" xlink:title="join_type" shape="rect"> + <rect x="101" y="22" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="34">join_type</text></a><rect x="181" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="13">JOIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-factor" xlink:title="table_factor" shape="rect"> + <rect x="239" y="1" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="243" y="13">table_factor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#partitioned-join-table" xlink:title="partitioned_join_table" shape="rect"> + <rect x="239" y="29" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="243" y="41">partitioned_join_table</text></a><path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m20 0 h10 m0 0 h50 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v1 m80 0 v-1 m-80 1 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m20 -21 h4 m30 0 h4 m20 0 h4 m62 0 h4 m0 0 h44 m-134 0 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m106 0 h4 m23 -28 h-3"/> + <polygon points="379 10 387 6 387 14"/> + <polygon points="379 10 371 6 371 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#natural-join" title="natural_join" shape="rect">natural_join</a></div> + <div>         ::= 'NATURAL' <a href="#join-type" title="join_type" shape="rect">join_type</a>? 'JOIN' ( <a href="#table-factor" title="table_factor" shape="rect">table_factor</a> | <a href="#partitioned-join-table" title="partitioned_join_table" shape="rect">partitioned_join_table</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#joined-table" title="joined-table">joined-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + join_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#join-condition" xlink:title="join_condition" shape="rect"> + <rect x="43" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">join_condition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#named-columns-join" xlink:title="named_columns_join" shape="rect"> + <rect x="43" y="29" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">named_columns_join</text></a><path class="line" d="m17 10 h2 m20 0 h4 m70 0 h4 m0 0 h38 m-136 0 h20 m116 0 h20 m-156 0 q10 0 10 10 m136 0 q0 -10 10 -10 m-146 10 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m108 0 h4 m23 -28 h-3"/> + <polygon points="185 10 193 6 193 14"/> + <polygon points="185 10 177 6 177 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#join-specification" title="join_specification" shape="rect">join_specification</a></div> + <div>         ::= <a href="#join-condition" title="join_condition" shape="rect">join_condition</a></div> + <div>           | <a href="#named-columns-join" title="named_columns_join" shape="rect">named_columns_join</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#qualified-join" title="qualified-join">qualified-join</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + join_condition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="163" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ON</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="53" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="57" y="13">search_condition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m22 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="153 10 161 6 161 14"/> + <polygon points="153 10 145 6 145 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#join-condition" title="join_condition" shape="rect">join_condition</a></div> + <div>         ::= 'ON' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#join-specification" title="join-specification">join-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + named_columns_join +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">USING</text> + <rect x="69" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#join-column-list" xlink:title="join_column_list" shape="rect"> + <rect x="89" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="93" y="13">join_column_list</text></a><rect x="177" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m80 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#named-columns-join" title="named_columns_join" shape="rect">named_columns_join</a></div> + <div>         ::= 'USING' '(' <a href="#join-column-list" title="join_column_list" shape="rect">join_column_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#join-specification" title="join-specification">join-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + join_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="257" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">INNER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#outer-join-type" xlink:title="outer_join_type" shape="rect"> + <rect x="43" y="29" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">outer_join_type</text></a><rect x="153" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="62">OUTER</text> + <path class="line" d="m17 10 h2 m20 0 h4 m36 0 h4 m0 0 h134 m-198 0 h20 m178 0 h20 m-218 0 q10 0 10 10 m198 0 q0 -10 10 -10 m-208 10 v8 m198 0 v-8 m-198 8 q0 10 10 10 m178 0 q10 0 10 -10 m-188 10 h4 m82 0 h4 m20 0 h10 m0 0 h38 m-68 0 h20 m48 0 h20 m-88 0 q10 0 10 10 m68 0 q0 -10 10 -10 m-78 10 v1 m68 0 v-1 m-68 1 q0 10 10 10 m48 0 q10 0 10 -10 m-58 10 h4 m40 0 h4 m43 -49 h-3"/> + <polygon points="247 10 255 6 255 14"/> + <polygon points="247 10 239 6 239 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#join-type" title="join_type" shape="rect">join_type</a></div> + <div>         ::= 'INNER'</div> + <div>           | <a href="#outer-join-type" title="outer_join_type" shape="rect">outer_join_type</a> 'OUTER'?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#natural-join" title="natural-join">natural-join</a></li><li><a href="#qualified-join" title="qualified-join">qualified-join</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + outer_join_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">LEFT</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">RIGHT</text> + <rect x="43" y="57" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">FULL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m28 0 h4 m0 0 h8 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m36 0 h4 m-54 -10 v20 m64 0 v-20 m-64 20 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m30 0 h4 m0 0 h6 m23 -56 h-3"/> + <polygon points="113 10 121 6 121 14"/> + <polygon points="113 10 105 6 105 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#outer-join-type" title="outer_join_type" shape="rect">outer_join_type</a></div> + <div>         ::= 'LEFT'</div> + <div>           | 'RIGHT'</div> + <div>           | 'FULL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#join-type" title="join-type">join-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + join_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#join-column-list" title="join_column_list" shape="rect">join_column_list</a></div> + <div>         ::= <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#named-columns-join" title="named-columns-join">named-columns-join</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + where_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="73" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="77" y="13">search_condition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="173 10 181 6 181 14"/> + <polygon points="173 10 165 6 165 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#where-clause" title="where_clause" shape="rect">where_clause</a></div> + <div>         ::= 'WHERE' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-expression" title="table-expression">table-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + group_by_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="353" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GROUP</text> + <rect x="73" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-quantifier" xlink:title="set_quantifier" shape="rect"> + <rect x="121" y="22" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="125" y="34">set_quantifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-element-list" xlink:title="grouping_element_list" shape="rect"> + <rect x="219" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="223" y="13">grouping_element_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m20 0 h4 m20 0 h10 m0 0 h68 m-98 0 h20 m78 0 h20 m-118 0 q10 0 10 10 m98 0 q0 -10 10 -10 m-108 10 v1 m98 0 v-1 m-98 1 q0 10 10 10 m78 0 q10 0 10 -10 m-88 10 h4 m70 0 h4 m20 -21 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="343 10 351 6 351 14"/> + <polygon points="343 10 335 6 335 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#group-by-clause" title="group_by_clause" shape="rect">group_by_clause</a></div> + <div>         ::= 'GROUP' 'BY' <a href="#set-quantifier" title="set_quantifier" shape="rect">set_quantifier</a>? <a href="#grouping-element-list" title="grouping_element_list" shape="rect">grouping_element_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-expression" title="table-expression">table-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-element" xlink:title="grouping_element" shape="rect"> + <rect x="43" y="29" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">grouping_element</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m94 0 h4 m-122 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m102 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-102 0 h4 m8 0 h4 m0 0 h86 m23 28 h-3"/> + <polygon points="171 38 179 34 179 42"/> + <polygon points="171 38 163 34 163 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-element-list" title="grouping_element_list" shape="rect">grouping_element_list</a></div> + <div>         ::= <a href="#grouping-element" title="grouping_element" shape="rect">grouping_element</a> ( ',' <a href="#grouping-element" title="grouping_element" shape="rect">grouping_element</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#group-by-clause" title="group-by-clause">group-by-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rollup-list" xlink:title="rollup_list" shape="rect"> + <rect x="43" y="1" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">rollup_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cube-list" xlink:title="cube_list" shape="rect"> + <rect x="43" y="29" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">cube_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-sets-specification" xlink:title="grouping_sets_specification" shape="rect"> + <rect x="43" y="57" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">grouping_sets_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#empty-grouping-set" xlink:title="empty_grouping_set" shape="rect"> + <rect x="43" y="85" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">empty_grouping_set</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordinary-grouping-set" xlink:title="ordinary_grouping_set" shape="rect"> + <rect x="43" y="113" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">ordinary_grouping_set</text></a><path class="line" d="m17 10 h2 m20 0 h4 m50 0 h4 m0 0 h84 m-162 0 h20 m142 0 h20 m-182 0 q10 0 10 10 m162 0 q0 -10 10 -10 m-172 10 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m48 0 h4 m0 0 h86 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m134 0 h4 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m106 0 h4 m0 0 h28 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m112 0 h4 m0 0 h22 m23 -112 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-element" title="grouping_element" shape="rect">grouping_element</a></div> + <div>         ::= <a href="#rollup-list" title="rollup_list" shape="rect">rollup_list</a></div> + <div>           | <a href="#cube-list" title="cube_list" shape="rect">cube_list</a></div> + <div>           | <a href="#grouping-sets-specification" title="grouping_sets_specification" shape="rect">grouping_sets_specification</a></div> + <div>           | <a href="#empty-grouping-set" title="empty_grouping_set" shape="rect">empty_grouping_set</a></div> + <div>           | <a href="#ordinary-grouping-set" title="ordinary_grouping_set" shape="rect">ordinary_grouping_set</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-element-list" title="grouping-element-list">grouping-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ordinary_grouping_set +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="281" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-column-reference" xlink:title="grouping_column_reference" shape="rect"> + <rect x="43" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">grouping_column_reference</text></a><rect x="43" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-column-reference-list" xlink:title="grouping_column_reference_list" shape="rect"> + <rect x="63" y="29" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">grouping_column_reference_list</text></a><rect x="225" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="229" y="41">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m138 0 h4 m0 0 h56 m-222 0 h20 m202 0 h20 m-242 0 q10 0 10 10 m222 0 q0 -10 10 -10 m-232 10 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m12 0 h4 m0 0 h4 m154 0 h4 m0 0 h4 m12 0 h4 m23 -28 h-3"/> + <polygon points="271 10 279 6 279 14"/> + <polygon points="271 10 263 6 263 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#ordinary-grouping-set" title="ordinary_grouping_set" shape="rect">ordinary_grouping_set</a></div> + <div>         ::= <a href="#grouping-column-reference" title="grouping_column_reference" shape="rect">grouping_column_reference</a></div> + <div>           | '(' <a href="#grouping-column-reference-list" title="grouping_column_reference_list" shape="rect">grouping_column_reference_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-element" title="grouping-element">grouping-element</a></li><li><a href="#grouping-set" title="grouping-set">grouping-set</a></li><li><a href="#ordinary-grouping-set-list" title="ordinary-grouping-set-list">ordinary-grouping-set-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_column_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="313" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-expression" xlink:title="grouping_expression" shape="rect"> + <rect x="43" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">grouping_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-reference" xlink:title="column_reference" shape="rect"> + <rect x="43" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">column_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collate-clause" xlink:title="collate_clause" shape="rect"> + <rect x="197" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="201" y="34">collate_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m106 0 h4 m-134 0 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m92 0 h4 m0 0 h14 m40 -28 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m23 -21 h-3"/> + <polygon points="303 10 311 6 311 14"/> + <polygon points="303 10 295 6 295 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-column-reference" title="grouping_column_reference" shape="rect">grouping_column_reference</a></div> + <div>         ::= ( <a href="#grouping-expression" title="grouping_expression" shape="rect">grouping_expression</a> | <a href="#column-reference" title="column_reference" shape="rect">column_reference</a> ) <a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-column-reference-list" title="grouping-column-reference-list">grouping-column-reference-list</a></li><li><a href="#ordinary-grouping-set" title="ordinary-grouping-set">ordinary-grouping-set</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_column_reference_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-column-reference" xlink:title="grouping_column_reference" shape="rect"> + <rect x="43" y="29" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">grouping_column_reference</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m138 0 h4 m-166 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m146 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-146 0 h4 m8 0 h4 m0 0 h130 m23 28 h-3"/> + <polygon points="215 38 223 34 223 42"/> + <polygon points="215 38 207 34 207 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-column-reference-list" title="grouping_column_reference_list" shape="rect">grouping_column_reference_list</a></div> + <div>         ::= <a href="#grouping-column-reference" title="grouping_column_reference" shape="rect">grouping_column_reference</a> ( ',' <a href="#grouping-column-reference" title="grouping_column_reference" shape="rect">grouping_column_reference</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ordinary-grouping-set" title="ordinary-grouping-set">ordinary-grouping-set</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + rollup_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="269" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ROLLUP</text> + <rect x="75" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordinary-grouping-set-list" xlink:title="ordinary_grouping_set_list" shape="rect"> + <rect x="95" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="13">ordinary_grouping_set_list</text></a><rect x="233" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m130 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="259 10 267 6 267 14"/> + <polygon points="259 10 251 6 251 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#rollup-list" title="rollup_list" shape="rect">rollup_list</a></div> + <div>         ::= 'ROLLUP' '(' <a href="#ordinary-grouping-set-list" title="ordinary_grouping_set_list" shape="rect">ordinary_grouping_set_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-element" title="grouping-element">grouping-element</a></li><li><a href="#grouping-set" title="grouping-set">grouping-set</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ordinary_grouping_set_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordinary-grouping-set" xlink:title="ordinary_grouping_set" shape="rect"> + <rect x="43" y="29" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">ordinary_grouping_set</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m112 0 h4 m-140 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m120 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-120 0 h4 m8 0 h4 m0 0 h104 m23 28 h-3"/> + <polygon points="189 38 197 34 197 42"/> + <polygon points="189 38 181 34 181 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#ordinary-grouping-set-list" title="ordinary_grouping_set_list" shape="rect">ordinary_grouping_set_list</a></div> + <div>         ::= <a href="#ordinary-grouping-set" title="ordinary_grouping_set" shape="rect">ordinary_grouping_set</a> ( ',' <a href="#ordinary-grouping-set" title="ordinary_grouping_set" shape="rect">ordinary_grouping_set</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cube-list" title="cube-list">cube-list</a></li><li><a href="#rollup-list" title="rollup-list">rollup-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cube_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="257" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CUBE</text> + <rect x="63" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordinary-grouping-set-list" xlink:title="ordinary_grouping_set_list" shape="rect"> + <rect x="83" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">ordinary_grouping_set_list</text></a><rect x="221" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m130 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="247 10 255 6 255 14"/> + <polygon points="247 10 239 6 239 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cube-list" title="cube_list" shape="rect">cube_list</a></div> + <div>         ::= 'CUBE' '(' <a href="#ordinary-grouping-set-list" title="ordinary_grouping_set_list" shape="rect">ordinary_grouping_set_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-element" title="grouping-element">grouping-element</a></li><li><a href="#grouping-set" title="grouping-set">grouping-set</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_sets_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="277" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GROUPING</text> + <rect x="89" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13">SETS</text> + <rect x="127" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-set-list" xlink:title="grouping_set_list" shape="rect"> + <rect x="147" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="13">grouping_set_list</text></a><rect x="241" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m58 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="267 10 275 6 275 14"/> + <polygon points="267 10 259 6 259 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-sets-specification" title="grouping_sets_specification" shape="rect">grouping_sets_specification</a></div> + <div>         ::= 'GROUPING' 'SETS' '(' <a href="#grouping-set-list" title="grouping_set_list" shape="rect">grouping_set_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-element" title="grouping-element">grouping-element</a></li><li><a href="#grouping-set" title="grouping-set">grouping-set</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_set_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-set" xlink:title="grouping_set" shape="rect"> + <rect x="43" y="29" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">grouping_set</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m70 0 h4 m-98 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m78 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-78 0 h4 m8 0 h4 m0 0 h62 m23 28 h-3"/> + <polygon points="147 38 155 34 155 42"/> + <polygon points="147 38 139 34 139 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-set-list" title="grouping_set_list" shape="rect">grouping_set_list</a></div> + <div>         ::= <a href="#grouping-set" title="grouping_set" shape="rect">grouping_set</a> ( ',' <a href="#grouping-set" title="grouping_set" shape="rect">grouping_set</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-sets-specification" title="grouping-sets-specification">grouping-sets-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_set +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rollup-list" xlink:title="rollup_list" shape="rect"> + <rect x="43" y="1" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">rollup_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cube-list" xlink:title="cube_list" shape="rect"> + <rect x="43" y="29" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">cube_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grouping-sets-specification" xlink:title="grouping_sets_specification" shape="rect"> + <rect x="43" y="57" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">grouping_sets_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#empty-grouping-set" xlink:title="empty_grouping_set" shape="rect"> + <rect x="43" y="85" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">empty_grouping_set</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordinary-grouping-set" xlink:title="ordinary_grouping_set" shape="rect"> + <rect x="43" y="113" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">ordinary_grouping_set</text></a><path class="line" d="m17 10 h2 m20 0 h4 m50 0 h4 m0 0 h84 m-162 0 h20 m142 0 h20 m-182 0 q10 0 10 10 m162 0 q0 -10 10 -10 m-172 10 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m48 0 h4 m0 0 h86 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m134 0 h4 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m106 0 h4 m0 0 h28 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m112 0 h4 m0 0 h22 m23 -112 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-set" title="grouping_set" shape="rect">grouping_set</a></div> + <div>         ::= <a href="#rollup-list" title="rollup_list" shape="rect">rollup_list</a></div> + <div>           | <a href="#cube-list" title="cube_list" shape="rect">cube_list</a></div> + <div>           | <a href="#grouping-sets-specification" title="grouping_sets_specification" shape="rect">grouping_sets_specification</a></div> + <div>           | <a href="#empty-grouping-set" title="empty_grouping_set" shape="rect">empty_grouping_set</a></div> + <div>           | <a href="#ordinary-grouping-set" title="ordinary_grouping_set" shape="rect">ordinary_grouping_set</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-set-list" title="grouping-set-list">grouping-set-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + empty_grouping_set +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="79" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">(</text> + <rect x="43" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="69 10 77 6 77 14"/> + <polygon points="69 10 61 6 61 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#empty-grouping-set" title="empty_grouping_set" shape="rect">empty_grouping_set</a></div> + <div>         ::= '(' ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-element" title="grouping-element">grouping-element</a></li><li><a href="#grouping-set" title="grouping-set">grouping-set</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + having_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">HAVING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="75" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">search_condition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#having-clause" title="having_clause" shape="rect">having_clause</a></div> + <div>         ::= 'HAVING' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-expression" title="table-expression">table-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WINDOW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-definition-list" xlink:title="window_definition_list" shape="rect"> + <rect x="87" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">window_definition_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m0 0 h4 m106 0 h4 m3 0 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-clause" title="window_clause" shape="rect">window_clause</a></div> + <div>         ::= 'WINDOW' <a href="#window-definition-list" title="window_definition_list" shape="rect">window_definition_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-expression" title="table-expression">table-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_definition_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-definition" xlink:title="window_definition" shape="rect"> + <rect x="43" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">window_definition</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m90 0 h4 m-118 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m98 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-98 0 h4 m8 0 h4 m0 0 h82 m23 28 h-3"/> + <polygon points="167 38 175 34 175 42"/> + <polygon points="167 38 159 34 159 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-definition-list" title="window_definition_list" shape="rect">window_definition_list</a></div> + <div>         ::= <a href="#window-definition" title="window_definition" shape="rect">window_definition</a> ( ',' <a href="#window-definition" title="window_definition" shape="rect">window_definition</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-clause" title="window-clause">window-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><rect x="77" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-specification" xlink:title="window_specification" shape="rect"> + <rect x="105" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">window_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m102 0 h4 m3 0 h-3"/> + <polygon points="221 10 229 6 229 14"/> + <polygon points="221 10 213 6 213 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-definition" title="window_definition" shape="rect">window_definition</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> 'AS' <a href="#window-specification" title="window_specification" shape="rect">window_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-definition-list" title="window-definition-list">window-definition-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-specification-details" xlink:title="window_specification_details" shape="rect"> + <rect x="63" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">window_specification_details</text></a><rect x="229" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h136 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v1 m166 0 v-1 m-166 1 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m138 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-specification" title="window_specification" shape="rect">window_specification</a></div> + <div>         ::= '(' <a href="#window-specification-details" title="window_specification_details" shape="rect">window_specification_details</a>? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#in-line-window-specification" title="in-line-window-specification">in-line-window-specification</a></li><li><a href="#window-definition" title="window-definition">window-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_specification_details +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" height="117"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-partition-clause" xlink:title="window_partition_clause" shape="rect"> + <rect x="63" y="13" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="25">window_partition_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-order-clause" xlink:title="window_order_clause" shape="rect"> + <rect x="63" y="41" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="53">window_order_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-clause" xlink:title="window_frame_clause" shape="rect"> + <rect x="63" y="69" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="81">window_frame_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#existing-identifier" xlink:title="existing_identifier" shape="rect"> + <rect x="63" y="97" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="109">existing_identifier</text></a><path class="line" d="m17 22 h2 m40 0 h4 m120 0 h4 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v8 m148 0 v-8 m-148 8 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m110 0 h4 m0 0 h10 m-138 -10 v20 m148 0 v-20 m-148 20 v8 m148 0 v-8 m-148 8 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m112 0 h4 m0 0 h8 m-138 -10 v20 m148 0 v-20 m-148 20 v8 m148 0 v-8 m-148 8 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m86 0 h4 m0 0 h34 m-168 -84 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m168 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-168 0 h10 m0 0 h158 m23 21 h-3"/> + <polygon points="237 22 245 18 245 26"/> + <polygon points="237 22 229 18 229 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-specification-details" title="window_specification_details" shape="rect">window_specification_details</a></div> + <div>         ::= ( <a href="#window-partition-clause" title="window_partition_clause" shape="rect">window_partition_clause</a> | <a href="#window-order-clause" title="window_order_clause" shape="rect">window_order_clause</a> | <a href="#window-frame-clause" title="window_frame_clause" shape="rect">window_frame_clause</a> | <a href="#existing-identifier" title="existing_identifier" shape="rect">existing_identifier</a> )+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-specification" title="window-specification">window-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + existing_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="93" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="83 10 91 6 91 14"/> + <polygon points="83 10 75 6 75 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#existing-identifier" title="existing_identifier" shape="rect">existing_identifier</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-specification-details" title="window-specification-details">window-specification-details</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_partition_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="331" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">PARTITION</text> + <rect x="89" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-partition-column-reference-list" xlink:title="window_partition_column_reference_list" shape="rect"> + <rect x="117" y="1" width="190" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="13">window_partition_column_reference_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m58 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m190 0 h4 m3 0 h-3"/> + <polygon points="321 10 329 6 329 14"/> + <polygon points="321 10 313 6 313 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-partition-clause" title="window_partition_clause" shape="rect">window_partition_clause</a></div> + <div>         ::= 'PARTITION' 'BY' <a href="#window-partition-column-reference-list" title="window_partition_column_reference_list" shape="rect">window_partition_column_reference_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-specification-details" title="window-specification-details">window-specification-details</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_partition_column_reference_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-partition-column-reference" xlink:title="window_partition_column_reference" shape="rect"> + <rect x="43" y="29" width="174" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">window_partition_column_reference</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m174 0 h4 m-202 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m182 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-182 0 h4 m8 0 h4 m0 0 h166 m23 28 h-3"/> + <polygon points="251 38 259 34 259 42"/> + <polygon points="251 38 243 34 243 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-partition-column-reference-list" title="window_partition_column_reference_list" shape="rect">window_partition_column_reference_list</a></div> + <div>         ::= <a href="#window-partition-column-reference" title="window_partition_column_reference" shape="rect">window_partition_column_reference</a> ( ',' <a href="#window-partition-column-reference" title="window_partition_column_reference" shape="rect">window_partition_column_reference</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-partition-clause" title="window-partition-clause">window-partition-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_partition_column_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="299" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-reference" xlink:title="column_reference" shape="rect"> + <rect x="43" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">column_reference</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collate-clause" xlink:title="collate_clause" shape="rect"> + <rect x="183" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="187" y="34">collate_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h2 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m92 0 h4 m40 -28 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m23 -21 h-3"/> + <polygon points="289 10 297 6 297 14"/> + <polygon points="289 10 281 6 281 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-partition-column-reference" title="window_partition_column_reference" shape="rect">window_partition_column_reference</a></div> + <div>         ::= ( <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> | <a href="#column-reference" title="column_reference" shape="rect">column_reference</a> ) <a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-partition-column-reference-list" title="window-partition-column-reference-list">window-partition-column-reference-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_order_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ORDER</text> + <rect x="71" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sort-specification-list" xlink:title="sort_specification_list" shape="rect"> + <rect x="99" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">sort_specification_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m102 0 h4 m3 0 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-order-clause" title="window_order_clause" shape="rect">window_order_clause</a></div> + <div>         ::= 'ORDER' 'BY' <a href="#sort-specification-list" title="sort_specification_list" shape="rect">sort_specification_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-specification-details" title="window-specification-details">window-specification-details</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="443" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-units" xlink:title="window_frame_units" shape="rect"> + <rect x="23" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">window_frame_units</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-extent" xlink:title="window_frame_extent" shape="rect"> + <rect x="135" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">window_frame_extent</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-exclusion" xlink:title="window_frame_exclusion" shape="rect"> + <rect x="275" y="22" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="279" y="34">window_frame_exclusion</text></a><path class="line" d="m17 10 h2 m0 0 h4 m104 0 h4 m0 0 h4 m112 0 h4 m20 0 h10 m0 0 h122 m-152 0 h20 m132 0 h20 m-172 0 q10 0 10 10 m152 0 q0 -10 10 -10 m-162 10 v1 m152 0 v-1 m-152 1 q0 10 10 10 m132 0 q10 0 10 -10 m-142 10 h4 m124 0 h4 m23 -21 h-3"/> + <polygon points="433 10 441 6 441 14"/> + <polygon points="433 10 425 6 425 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-clause" title="window_frame_clause" shape="rect">window_frame_clause</a></div> + <div>         ::= <a href="#window-frame-units" title="window_frame_units" shape="rect">window_frame_units</a> <a href="#window-frame-extent" title="window_frame_extent" shape="rect">window_frame_extent</a> <a href="#window-frame-exclusion" title="window_frame_exclusion" shape="rect">window_frame_exclusion</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-specification-details" title="window-specification-details">window-specification-details</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_units +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="127" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ROWS</text> + <rect x="43" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">RANGE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m0 0 h2 m-68 0 h20 m48 0 h20 m-88 0 q10 0 10 10 m68 0 q0 -10 10 -10 m-78 10 v8 m68 0 v-8 m-68 8 q0 10 10 10 m48 0 q10 0 10 -10 m-58 10 h4 m40 0 h4 m23 -28 h-3"/> + <polygon points="117 10 125 6 125 14"/> + <polygon points="117 10 109 6 109 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-units" title="window_frame_units" shape="rect">window_frame_units</a></div> + <div>         ::= 'ROWS'</div> + <div>           | 'RANGE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-frame-clause" title="window-frame-clause">window-frame-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_extent +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="211" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-start" xlink:title="window_frame_start" shape="rect"> + <rect x="43" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">window_frame_start</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-between" xlink:title="window_frame_between" shape="rect"> + <rect x="43" y="29" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">window_frame_between</text></a><path class="line" d="m17 10 h2 m20 0 h4 m104 0 h4 m0 0 h20 m-152 0 h20 m132 0 h20 m-172 0 q10 0 10 10 m152 0 q0 -10 10 -10 m-162 10 v8 m152 0 v-8 m-152 8 q0 10 10 10 m132 0 q10 0 10 -10 m-142 10 h4 m124 0 h4 m23 -28 h-3"/> + <polygon points="201 10 209 6 209 14"/> + <polygon points="201 10 193 6 193 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-extent" title="window_frame_extent" shape="rect">window_frame_extent</a></div> + <div>         ::= <a href="#window-frame-start" title="window_frame_start" shape="rect">window_frame_start</a></div> + <div>           | <a href="#window-frame-between" title="window_frame_between" shape="rect">window_frame_between</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-frame-clause" title="window-frame-clause">window-frame-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_start +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">UNBOUNDED</text> + <rect x="119" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">PRECEDING</text> + <rect x="43" y="29" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CURRENT</text> + <rect x="101" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="41">ROW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-preceding" xlink:title="window_frame_preceding" shape="rect"> + <rect x="43" y="57" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">window_frame_preceding</text></a><path class="line" d="m17 10 h2 m20 0 h4 m68 0 h4 m0 0 h4 m60 0 h4 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m50 0 h4 m0 0 h4 m32 0 h4 m0 0 h46 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m128 0 h4 m0 0 h8 m23 -56 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-start" title="window_frame_start" shape="rect">window_frame_start</a></div> + <div>         ::= 'UNBOUNDED' 'PRECEDING'</div> + <div>           | 'CURRENT' 'ROW'</div> + <div>           | <a href="#window-frame-preceding" title="window_frame_preceding" shape="rect">window_frame_preceding</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-frame-bound" title="window-frame-bound">window-frame-bound</a></li><li><a href="#window-frame-extent" title="window-frame-extent">window-frame-extent</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_preceding +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression</text></a><rect x="121" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="13">PRECEDING</text> + <path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m0 0 h4 m60 0 h4 m3 0 h-3"/> + <polygon points="195 10 203 6 203 14"/> + <polygon points="195 10 187 6 187 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-preceding" title="window_frame_preceding" shape="rect">window_frame_preceding</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> 'PRECEDING'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-frame-start" title="window-frame-start">window-frame-start</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_between +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="379" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">BETWEEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-bound" xlink:title="window_frame_bound" shape="rect"> + <rect x="83" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">window_frame_bound</text></a><rect x="205" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="209" y="13">AND</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-bound" xlink:title="window_frame_bound" shape="rect"> + <rect x="241" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="13">window_frame_bound</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m114 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m114 0 h4 m3 0 h-3"/> + <polygon points="369 10 377 6 377 14"/> + <polygon points="369 10 361 6 361 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-between" title="window_frame_between" shape="rect">window_frame_between</a></div> + <div>         ::= 'BETWEEN' <a href="#window-frame-bound" title="window_frame_bound" shape="rect">window_frame_bound</a> 'AND' <a href="#window-frame-bound" title="window_frame_bound" shape="rect">window_frame_bound</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-frame-extent" title="window-frame-extent">window-frame-extent</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_bound +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="229" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-start" xlink:title="window_frame_start" shape="rect"> + <rect x="43" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">window_frame_start</text></a><rect x="43" y="29" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">UNBOUNDED</text> + <rect x="119" y="29" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="41">FOLLOWING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#window-frame-following" xlink:title="window_frame_following" shape="rect"> + <rect x="43" y="57" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">window_frame_following</text></a><path class="line" d="m17 10 h2 m20 0 h4 m104 0 h4 m0 0 h38 m-170 0 h20 m150 0 h20 m-190 0 q10 0 10 10 m170 0 q0 -10 10 -10 m-180 10 v8 m170 0 v-8 m-170 8 q0 10 10 10 m150 0 q10 0 10 -10 m-160 10 h4 m68 0 h4 m0 0 h4 m66 0 h4 m-160 -10 v20 m170 0 v-20 m-170 20 v8 m170 0 v-8 m-170 8 q0 10 10 10 m150 0 q10 0 10 -10 m-160 10 h4 m122 0 h4 m0 0 h20 m23 -56 h-3"/> + <polygon points="219 10 227 6 227 14"/> + <polygon points="219 10 211 6 211 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-bound" title="window_frame_bound" shape="rect">window_frame_bound</a></div> + <div>         ::= <a href="#window-frame-start" title="window_frame_start" shape="rect">window_frame_start</a></div> + <div>           | 'UNBOUNDED' 'FOLLOWING'</div> + <div>           | <a href="#window-frame-following" title="window_frame_following" shape="rect">window_frame_following</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-frame-between" title="window-frame-between">window-frame-between</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_following +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="211" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression</text></a><rect x="121" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="13">FOLLOWING</text> + <path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m0 0 h4 m66 0 h4 m3 0 h-3"/> + <polygon points="201 10 209 6 209 14"/> + <polygon points="201 10 193 6 193 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-following" title="window_frame_following" shape="rect">window_frame_following</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> 'FOLLOWING'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-frame-bound" title="window-frame-bound">window-frame-bound</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + window_frame_exclusion +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="233" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EXCLUDE</text> + <rect x="99" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">CURRENT</text> + <rect x="157" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="13">ROW</text> + <rect x="99" y="29" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="41">GROUP</text> + <rect x="99" y="57" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="69">TIES</text> + <rect x="99" y="85" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="97">NO</text> + <rect x="129" y="85" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="97">OTHERS</text> + <path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m20 0 h4 m50 0 h4 m0 0 h4 m32 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m42 0 h4 m0 0 h48 m-108 -10 v20 m118 0 v-20 m-118 20 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m28 0 h4 m0 0 h62 m-108 -10 v20 m118 0 v-20 m-118 20 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m22 0 h4 m0 0 h4 m46 0 h4 m0 0 h14 m23 -84 h-3"/> + <polygon points="223 10 231 6 231 14"/> + <polygon points="223 10 215 6 215 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#window-frame-exclusion" title="window_frame_exclusion" shape="rect">window_frame_exclusion</a></div> + <div>         ::= 'EXCLUDE' ( 'CURRENT' 'ROW' | 'GROUP' | 'TIES' | 'NO' 'OTHERS' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#window-frame-clause" title="window-frame-clause">window-frame-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + query_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="401" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SELECT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-quantifier" xlink:title="set_quantifier" shape="rect"> + <rect x="91" y="22" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="34">set_quantifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select-list" xlink:title="select_list" shape="rect"> + <rect x="189" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="193" y="13">select_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-expression" xlink:title="table_expression" shape="rect"> + <rect x="269" y="22" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="273" y="34">table_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m20 0 h10 m0 0 h68 m-98 0 h20 m78 0 h20 m-118 0 q10 0 10 10 m98 0 q0 -10 10 -10 m-108 10 v1 m98 0 v-1 m-98 1 q0 10 10 10 m78 0 q10 0 10 -10 m-88 10 h4 m70 0 h4 m20 -21 h4 m52 0 h4 m20 0 h10 m0 0 h86 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v1 m116 0 v-1 m-116 1 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m88 0 h4 m23 -21 h-3"/> + <polygon points="391 10 399 6 399 14"/> + <polygon points="391 10 383 6 383 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#query-specification" title="query_specification" shape="rect">query_specification</a></div> + <div>         ::= 'SELECT' <a href="#set-quantifier" title="set_quantifier" shape="rect">set_quantifier</a>? <a href="#select-list" title="select_list" shape="rect">select_list</a> <a href="#table-expression" title="table_expression" shape="rect">table_expression</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#dynamic-single-row-select-statement" title="dynamic-single-row-select-statement">dynamic-single-row-select-statement</a></li><li><a href="#simple-table" title="simple-table">simple-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + select_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="445" height="110"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="43" y="13" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="25">*</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select-sublist" xlink:title="select_sublist" shape="rect"> + <rect x="63" y="69" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="81">select_sublist</text></a><rect x="63" y="41" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="53">,</text> + <rect x="179" y="90" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="102">,</text> + <rect x="195" y="90" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="102">*</text> + <rect x="297" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="301" y="25">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select-sublist" xlink:title="select_sublist" shape="rect"> + <rect x="313" y="13" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="25">select_sublist</text></a><path class="line" d="m17 22 h2 m20 0 h4 m14 0 h4 m0 0 h172 m-214 0 h20 m194 0 h20 m-234 0 q10 0 10 10 m214 0 q0 -10 10 -10 m-224 10 v36 m214 0 v-36 m-214 36 q0 10 10 10 m194 0 q10 0 10 -10 m-184 10 h4 m68 0 h4 m-96 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m76 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-76 0 h4 m8 0 h4 m0 0 h60 m40 28 h10 m0 0 h28 m-58 0 h20 m38 0 h20 m-78 0 q10 0 10 10 m58 0 q0 -10 10 -10 m-68 10 v1 m58 0 v-1 m-58 1 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m8 0 h4 m0 0 h4 m14 0 h4 m80 -77 h4 m8 0 h4 m0 0 h4 m68 0 h4 m-112 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m92 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-92 0 h10 m0 0 h82 m-132 21 h20 m132 0 h20 m-172 0 q10 0 10 10 m152 0 q0 -10 10 -10 m-162 10 v1 m152 0 v-1 m-152 1 q0 10 10 10 m132 0 q10 0 10 -10 m-142 10 h10 m0 0 h122 m23 -21 h-3"/> + <polygon points="435 22 443 18 443 26"/> + <polygon points="435 22 427 18 427 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#select-list" title="select_list" shape="rect">select_list</a></div> + <div>         ::= ( '*' | <a href="#select-sublist" title="select_sublist" shape="rect">select_sublist</a> ( ',' <a href="#select-sublist" title="select_sublist" shape="rect">select_sublist</a> )* ( ',' '*' )? ) ( ',' <a href="#select-sublist" title="select_sublist" shape="rect">select_sublist</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-specification" title="query-specification">query-specification</a></li><li><a href="#select-statement-single-row" title="select-statement-single-row">select-statement-single-row</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + select_sublist +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="459" height="91"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#derived-column" xlink:title="derived_column" shape="rect"> + <rect x="23" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">derived_column</text></a><rect x="133" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="34">.</text> + <rect x="149" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="34">*</text> + <rect x="191" y="43" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="55">AS</text> + <rect x="219" y="43" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="55">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#all-fields-column-name-list" xlink:title="all_fields_column_name_list" shape="rect"> + <rect x="239" y="43" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="243" y="55">all_fields_column_name_list</text></a><rect x="383" y="43" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="387" y="55">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#as-clause" xlink:title="as_clause" shape="rect"> + <rect x="133" y="71" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="83">as_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m82 0 h4 m20 0 h10 m0 0 h280 m-310 0 h20 m290 0 h20 m-330 0 q10 0 10 10 m310 0 q0 -10 10 -10 m-320 10 v1 m310 0 v-1 m-310 1 q0 10 10 10 m290 0 q10 0 10 -10 m-300 10 h4 m8 0 h4 m0 0 h4 m14 0 h4 m20 0 h10 m0 0 h202 m-232 0 h20 m212 0 h20 m-252 0 q10 0 10 10 m232 0 q0 -10 10 -10 m-242 10 v1 m232 0 v-1 m-232 1 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m20 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m136 0 h4 m0 0 h4 m12 0 h4 m-280 -31 v20 m310 0 v-20 m-310 20 v29 m310 0 v-29 m-310 29 q0 10 10 10 m290 0 q10 0 10 -10 m-300 10 h4 m56 0 h4 m0 0 h226 m23 -70 h-3"/> + <polygon points="449 10 457 6 457 14"/> + <polygon points="449 10 441 6 441 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#select-sublist" title="select_sublist" shape="rect">select_sublist</a></div> + <div>         ::= <a href="#derived-column" title="derived_column" shape="rect">derived_column</a> ( '.' '*' ( 'AS' '(' <a href="#all-fields-column-name-list" title="all_fields_column_name_list" shape="rect">all_fields_column_name_list</a> ')' )? | <a href="#as-clause" title="as_clause" shape="rect">as_clause</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#select-list" title="select-list">select-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + qualified_asterisk +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#asterisked-identifier-chain" xlink:title="asterisked_identifier_chain" shape="rect"> + <rect x="43" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">asterisked_identifier_chain</text></a><rect x="179" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="13">.</text> + <rect x="195" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="13">*</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#all-fields-reference" xlink:title="all_fields_reference" shape="rect"> + <rect x="43" y="29" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">all_fields_reference</text></a><path class="line" d="m17 10 h2 m20 0 h4 m128 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m14 0 h4 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m94 0 h4 m0 0 h72 m23 -28 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#qualified-asterisk" title="qualified_asterisk" shape="rect">qualified_asterisk</a></div> + <div>         ::= <a href="#asterisked-identifier-chain" title="asterisked_identifier_chain" shape="rect">asterisked_identifier_chain</a> '.' '*'</div> + <div>           | <a href="#all-fields-reference" title="all_fields_reference" shape="rect">all_fields_reference</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + asterisked_identifier_chain +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">.</text> + <path class="line" d="m17 38 h2 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m23 28 h-3"/> + <polygon points="123 38 131 34 131 42"/> + <polygon points="123 38 115 34 115 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#asterisked-identifier-chain" title="asterisked_identifier_chain" shape="rect">asterisked_identifier_chain</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> ( '.' <a href="#identifier" title="identifier" shape="rect">identifier</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#qualified-asterisk" title="qualified-asterisk">qualified-asterisk</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + derived_column +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#as-clause" xlink:title="as_clause" shape="rect"> + <rect x="141" y="22" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="34">as_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m20 0 h10 m0 0 h54 m-84 0 h20 m64 0 h20 m-104 0 q10 0 10 10 m84 0 q0 -10 10 -10 m-94 10 v1 m84 0 v-1 m-84 1 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m56 0 h4 m23 -21 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#derived-column" title="derived_column" shape="rect">derived_column</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> <a href="#as-clause" title="as_clause" shape="rect">as_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#select-sublist" title="select-sublist">select-sublist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + as_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="161" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="91" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="13">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="151 10 159 6 159 14"/> + <polygon points="151 10 143 6 143 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#as-clause" title="as_clause" shape="rect">as_clause</a></div> + <div>         ::= 'AS'? <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#derived-column" title="derived-column">derived-column</a></li><li><a href="#select-sublist" title="select-sublist">select-sublist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + all_fields_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="467" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression-primary" xlink:title="value_expression_primary" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression_primary</text></a><rect x="161" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="13">.</text> + <rect x="177" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="13">*</text> + <rect x="219" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="34">AS</text> + <rect x="247" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="251" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#all-fields-column-name-list" xlink:title="all_fields_column_name_list" shape="rect"> + <rect x="267" y="22" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="271" y="34">all_fields_column_name_list</text></a><rect x="411" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="415" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m14 0 h4 m20 0 h10 m0 0 h202 m-232 0 h20 m212 0 h20 m-252 0 q10 0 10 10 m232 0 q0 -10 10 -10 m-242 10 v1 m232 0 v-1 m-232 1 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m20 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m136 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="457 10 465 6 465 14"/> + <polygon points="457 10 449 6 449 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#all-fields-reference" title="all_fields_reference" shape="rect">all_fields_reference</a></div> + <div>         ::= <a href="#value-expression-primary" title="value_expression_primary" shape="rect">value_expression_primary</a> '.' '*' ( 'AS' '(' <a href="#all-fields-column-name-list" title="all_fields_column_name_list" shape="rect">all_fields_column_name_list</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#qualified-asterisk" title="qualified-asterisk">qualified-asterisk</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + all_fields_column_name_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#all-fields-column-name-list" title="all_fields_column_name_list" shape="rect">all_fields_column_name_list</a></div> + <div>         ::= <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#all-fields-reference" title="all-fields-reference">all-fields-reference</a></li><li><a href="#select-sublist" title="select-sublist">select-sublist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + query_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="731" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#with-clause" xlink:title="with_clause" shape="rect"> + <rect x="43" y="22" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">with_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-expression-body" xlink:title="query_expression_body" shape="rect"> + <rect x="133" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">query_expression_body</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#order-by-clause" xlink:title="order_by_clause" shape="rect"> + <rect x="281" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="285" y="34">order_by_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result-offset-clause" xlink:title="result_offset_clause" shape="rect"> + <rect x="435" y="22" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="439" y="34">result_offset_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fetch-first-clause" xlink:title="fetch_first_clause" shape="rect"> + <rect x="581" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="585" y="34">fetch_first_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#limit-clause" xlink:title="limit_clause" shape="rect"> + <rect x="415" y="50" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="419" y="62">limit_clause</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h60 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v1 m90 0 v-1 m-90 1 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m62 0 h4 m20 -21 h4 m120 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m60 -21 h10 m0 0 h96 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v1 m126 0 v-1 m-126 1 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m98 0 h4 m40 -21 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m-280 -21 h20 m280 0 h20 m-320 0 q10 0 10 10 m300 0 q0 -10 10 -10 m-310 10 v29 m300 0 v-29 m-300 29 q0 10 10 10 m280 0 q10 0 10 -10 m-290 10 h4 m60 0 h4 m0 0 h212 m23 -49 h-3"/> + <polygon points="721 10 729 6 729 14"/> + <polygon points="721 10 713 6 713 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#query-expression" title="query_expression" shape="rect">query_expression</a></div> + <div>         ::= <a href="#with-clause" title="with_clause" shape="rect">with_clause</a>? <a href="#query-expression-body" title="query_expression_body" shape="rect">query_expression_body</a> <a href="#order-by-clause" title="order_by_clause" shape="rect">order_by_clause</a>? ( <a href="#result-offset-clause" title="result_offset_clause" shape="rect">result_offset_clause</a>? <a href="#fetch-first-clause" title="fetch_first_clause" shape="rect">fetch_first_clause</a>? | <a href="#limit-clause" title="limit_clause" shape="rect">limit_clause</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#as-subquery-clause" title="as-subquery-clause">as-subquery-clause</a></li><li><a href="#cursor-specification" title="cursor-specification">cursor-specification</a></li><li><a href="#derived-table" title="derived-table">derived-table</a></li><li><a href="#from-subquery" title="from-subquery">from-subquery</a></li><li><a href="#subquery" title="subquery">subquery</a></li><li><a href="#view-definition" title="view-definition">view-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + with_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WITH</text> + <rect x="85" y="22" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="34">RECURSIVE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#with-list" xlink:title="with_list" shape="rect"> + <rect x="173" y="1" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="177" y="13">with_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m20 0 h10 m0 0 h58 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v1 m88 0 v-1 m-88 1 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m20 -21 h4 m44 0 h4 m3 0 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#with-clause" title="with_clause" shape="rect">with_clause</a></div> + <div>         ::= 'WITH' 'RECURSIVE'? <a href="#with-list" title="with_list" shape="rect">with_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-expression" title="query-expression">query-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + with_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="175" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#with-list-element" xlink:title="with_list_element" shape="rect"> + <rect x="43" y="29" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">with_list_element</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m88 0 h4 m-116 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m96 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-96 0 h4 m8 0 h4 m0 0 h80 m23 28 h-3"/> + <polygon points="165 38 173 34 173 42"/> + <polygon points="165 38 157 34 157 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#with-list" title="with_list" shape="rect">with_list</a></div> + <div>         ::= <a href="#with-list-element" title="with_list_element" shape="rect">with_list_element</a> ( ',' <a href="#with-list-element" title="with_list_element" shape="rect">with_list_element</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#with-clause" title="with-clause">with-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + with_list_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="525" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><rect x="97" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="117" y="22" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="34">column_name_list</text></a><rect x="217" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="34">)</text> + <rect x="257" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="285" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="289" y="13">subquery</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-or-cycle-clause" xlink:title="search_or_cycle_clause" shape="rect"> + <rect x="365" y="22" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="369" y="34">search_or_cycle_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m12 0 h4 m20 -21 h4 m20 0 h4 m0 0 h4 m52 0 h4 m20 0 h10 m0 0 h114 m-144 0 h20 m124 0 h20 m-164 0 q10 0 10 10 m144 0 q0 -10 10 -10 m-154 10 v1 m144 0 v-1 m-144 1 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m116 0 h4 m23 -21 h-3"/> + <polygon points="515 10 523 6 523 14"/> + <polygon points="515 10 507 6 507 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#with-list-element" title="with_list_element" shape="rect">with_list_element</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> ( '(' <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a> ')' )? 'AS' <a href="#subquery" title="subquery" shape="rect">subquery</a> <a href="#search-or-cycle-clause" title="search_or_cycle_clause" shape="rect">search_or_cycle_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#with-list" title="with-list">with-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + query_expression_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="417" height="98"> + <polygon points="9 87 1 83 1 91"/> + <polygon points="17 87 9 83 9 91"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-term" xlink:title="query_term" shape="rect"> + <rect x="43" y="78" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="90">query_term</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#corresponding-spec" xlink:title="corresponding_spec" shape="rect"> + <rect x="63" y="22" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">corresponding_spec</text></a><rect x="213" y="22" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="34">ALL</text> + <rect x="213" y="50" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="62">DISTINCT</text> + <rect x="311" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="315" y="13">UNION</text> + <rect x="311" y="29" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="315" y="41">EXCEPT</text> + <path class="line" d="m17 87 h2 m20 0 h4 m64 0 h4 m0 0 h266 m-358 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -57 q0 -10 10 -10 m338 77 l20 0 m-20 0 q10 0 10 -10 l0 -57 q0 -10 -10 -10 m-318 0 h10 m0 0 h100 m-130 0 h20 m110 0 h20 m-150 0 q10 0 10 10 m130 0 q0 -10 10 -10 m-140 10 v1 m130 0 v-1 m-130 1 q0 10 10 10 m110 0 q10 0 10 -10 m-120 10 h4 m102 0 h4 m40 -21 h10 m0 0 h48 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v1 m78 0 v-1 m-78 1 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m24 0 h4 m0 0 h26 m-68 -10 v20 m78 0 v-20 m-78 20 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m40 -49 h4 m40 0 h4 m0 0 h2 m-70 0 h20 m50 0 h20 m-90 0 q10 0 10 10 m70 0 q0 -10 10 -10 m-80 10 v8 m70 0 v-8 m-70 8 q0 10 10 10 m50 0 q10 0 10 -10 m-60 10 h4 m42 0 h4 m43 49 h-3"/> + <polygon points="407 87 415 83 415 91"/> + <polygon points="407 87 399 83 399 91"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#query-expression-body" title="query_expression_body" shape="rect">query_expression_body</a></div> + <div>         ::= <a href="#query-term" title="query_term" shape="rect">query_term</a> ( ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? <a href="#corresponding-spec" title="corresponding_spec" shape="rect">corresponding_spec</a>? <a href="#query-term" title="query_term" shape="rect">query_term</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-expression" title="query-expression">query-expression</a></li><li><a href="#query-primary" title="query-primary">query-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + query_term +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="393" height="98"> + <polygon points="9 87 1 83 1 91"/> + <polygon points="17 87 9 83 9 91"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-primary" xlink:title="query_primary" shape="rect"> + <rect x="43" y="78" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="90">query_primary</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#corresponding-spec" xlink:title="corresponding_spec" shape="rect"> + <rect x="63" y="22" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">corresponding_spec</text></a><rect x="213" y="22" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="34">ALL</text> + <rect x="213" y="50" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="62">DISTINCT</text> + <rect x="291" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="295" y="13">INTERSECT</text> + <path class="line" d="m17 87 h2 m20 0 h4 m76 0 h4 m0 0 h230 m-334 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -57 q0 -10 10 -10 m314 77 l20 0 m-20 0 q10 0 10 -10 l0 -57 q0 -10 -10 -10 m-294 0 h10 m0 0 h100 m-130 0 h20 m110 0 h20 m-150 0 q10 0 10 10 m130 0 q0 -10 10 -10 m-140 10 v1 m130 0 v-1 m-130 1 q0 10 10 10 m110 0 q10 0 10 -10 m-120 10 h4 m102 0 h4 m40 -21 h10 m0 0 h48 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v1 m78 0 v-1 m-78 1 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m24 0 h4 m0 0 h26 m-68 -10 v20 m78 0 v-20 m-78 20 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m20 -49 h4 m58 0 h4 m23 77 h-3"/> + <polygon points="383 87 391 83 391 91"/> + <polygon points="383 87 375 83 375 91"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#query-term" title="query_term" shape="rect">query_term</a></div> + <div>         ::= <a href="#query-primary" title="query_primary" shape="rect">query_primary</a> ( 'INTERSECT' ( 'ALL' | 'DISTINCT' )? <a href="#corresponding-spec" title="corresponding_spec" shape="rect">corresponding_spec</a>? <a href="#query-primary" title="query_primary" shape="rect">query_primary</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-expression-body" title="query-expression-body">query-expression-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + query_primary +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="701" height="112"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-expression-body" xlink:title="query_expression_body" shape="rect"> + <rect x="63" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">query_expression_body</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#order-by-clause" xlink:title="order_by_clause" shape="rect"> + <rect x="211" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="215" y="34">order_by_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#limit-clause" xlink:title="limit_clause" shape="rect"> + <rect x="345" y="22" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="349" y="34">limit_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result-offset-clause" xlink:title="result_offset_clause" shape="rect"> + <rect x="365" y="64" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="369" y="76">result_offset_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fetch-first-clause" xlink:title="fetch_first_clause" shape="rect"> + <rect x="511" y="64" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="515" y="76">fetch_first_clause</text></a><rect x="645" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="649" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-table" xlink:title="simple_table" shape="rect"> + <rect x="43" y="92" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="104">simple_table</text></a><path class="line" d="m17 10 h2 m20 0 h4 m12 0 h4 m0 0 h4 m120 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m40 -21 h10 m0 0 h270 m-300 0 h20 m280 0 h20 m-320 0 q10 0 10 10 m300 0 q0 -10 10 -10 m-310 10 v1 m300 0 v-1 m-300 1 q0 10 10 10 m280 0 q10 0 10 -10 m-290 10 h4 m60 0 h4 m0 0 h212 m-290 -10 v20 m300 0 v-20 m-300 20 v1 m300 0 v-1 m-300 1 q0 10 10 10 m280 0 q10 0 10 -10 m-270 10 h10 m0 0 h96 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v1 m126 0 v-1 m-126 1 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m98 0 h4 m40 -21 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m40 -63 h4 m12 0 h4 m-642 0 h20 m622 0 h20 m-662 0 q10 0 10 10 m642 0 q0 -10 10 -10 m-652 10 v71 m642 0 v-71 m-642 71 q0 10 10 10 m622 0 q10 0 10 -10 m-632 10 h4 m68 0 h4 m0 0 h546 m23 -91 h-3"/> + <polygon points="691 10 699 6 699 14"/> + <polygon points="691 10 683 6 683 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#query-primary" title="query_primary" shape="rect">query_primary</a></div> + <div>         ::= '(' <a href="#query-expression-body" title="query_expression_body" shape="rect">query_expression_body</a> <a href="#order-by-clause" title="order_by_clause" shape="rect">order_by_clause</a>? ( <a href="#limit-clause" title="limit_clause" shape="rect">limit_clause</a> | <a href="#result-offset-clause" title="result_offset_clause" shape="rect">result_offset_clause</a>? <a href="#fetch-first-clause" title="fetch_first_clause" shape="rect">fetch_first_clause</a>? )? ')'</div> + <div>           | <a href="#simple-table" title="simple_table" shape="rect">simple_table</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-term" title="query-term">query-term</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + simple_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-value-constructor" xlink:title="table_value_constructor" shape="rect"> + <rect x="43" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">table_value_constructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#explicit-table" xlink:title="explicit_table" shape="rect"> + <rect x="43" y="29" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">explicit_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-specification" xlink:title="query_specification" shape="rect"> + <rect x="43" y="57" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">query_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m118 0 h4 m-146 0 h20 m126 0 h20 m-166 0 q10 0 10 10 m146 0 q0 -10 10 -10 m-156 10 v8 m146 0 v-8 m-146 8 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h4 m66 0 h4 m0 0 h52 m-136 -10 v20 m146 0 v-20 m-146 20 v8 m146 0 v-8 m-146 8 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h4 m94 0 h4 m0 0 h24 m23 -56 h-3"/> + <polygon points="195 10 203 6 203 14"/> + <polygon points="195 10 187 6 187 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-table" title="simple_table" shape="rect">simple_table</a></div> + <div>         ::= <a href="#table-value-constructor" title="table_value_constructor" shape="rect">table_value_constructor</a></div> + <div>           | <a href="#explicit-table" title="explicit_table" shape="rect">explicit_table</a></div> + <div>           | <a href="#query-specification" title="query_specification" shape="rect">query_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-primary" title="query-primary">query-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + explicit_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-or-query-name" xlink:title="table_or_query_name" shape="rect"> + <rect x="67" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="71" y="13">table_or_query_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m112 0 h4 m3 0 h-3"/> + <polygon points="193 10 201 6 201 14"/> + <polygon points="193 10 185 6 185 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#explicit-table" title="explicit_table" shape="rect">explicit_table</a></div> + <div>         ::= 'TABLE' <a href="#table-or-query-name" title="table_or_query_name" shape="rect">table_or_query_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#simple-table" title="simple-table">simple-table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + corresponding_spec +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="345" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="90" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CORRESPONDING</text> + <rect x="141" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="34">BY</text> + <rect x="169" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="189" y="22" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="193" y="34">column_name_list</text></a><rect x="289" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="293" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m20 0 h10 m0 0 h158 m-188 0 h20 m168 0 h20 m-208 0 q10 0 10 10 m188 0 q0 -10 10 -10 m-198 10 v1 m188 0 v-1 m-188 1 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m20 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="335 10 343 6 343 14"/> + <polygon points="335 10 327 6 327 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#corresponding-spec" title="corresponding_spec" shape="rect">corresponding_spec</a></div> + <div>         ::= 'CORRESPONDING' ( 'BY' '(' <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-expression-body" title="query-expression-body">query-expression-body</a></li><li><a href="#query-term" title="query-term">query-term</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + order_by_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ORDER</text> + <rect x="71" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sort-specification-list" xlink:title="sort_specification_list" shape="rect"> + <rect x="99" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">sort_specification_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m102 0 h4 m3 0 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#order-by-clause" title="order_by_clause" shape="rect">order_by_clause</a></div> + <div>         ::= 'ORDER' 'BY' <a href="#sort-specification-list" title="sort_specification_list" shape="rect">sort_specification_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-expression" title="query-expression">query-expression</a></li><li><a href="#query-primary" title="query-primary">query-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + result_offset_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="311" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OFFSET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="73" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="77" y="13">simple_value_specification</text></a><rect x="229" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="13">ROW</text> + <rect x="229" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="41">ROWS</text> + <path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m128 0 h4 m20 0 h4 m32 0 h4 m0 0 h6 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v8 m66 0 v-8 m-66 8 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h4 m38 0 h4 m23 -28 h-3"/> + <polygon points="301 10 309 6 309 14"/> + <polygon points="301 10 293 6 293 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#result-offset-clause" title="result_offset_clause" shape="rect">result_offset_clause</a></div> + <div>         ::= 'OFFSET' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> ( 'ROW' | 'ROWS' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-expression" title="query-expression">query-expression</a></li><li><a href="#query-primary" title="query-primary">query-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + fetch_first_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="469" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FETCH</text> + <rect x="87" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="13">FIRST</text> + <rect x="87" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="41">NEXT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="169" y="22" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="34">simple_value_specification</text></a><rect x="345" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="349" y="13">ROW</text> + <rect x="345" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="349" y="41">ROWS</text> + <rect x="411" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="415" y="13">ONLY</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m20 0 h4 m34 0 h4 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v8 m62 0 v-8 m-62 8 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m32 0 h4 m0 0 h2 m40 -28 h10 m0 0 h126 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v1 m156 0 v-1 m-156 1 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m128 0 h4 m40 -21 h4 m32 0 h4 m0 0 h6 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v8 m66 0 v-8 m-66 8 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h4 m38 0 h4 m20 -28 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="459 10 467 6 467 14"/> + <polygon points="459 10 451 6 451 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#fetch-first-clause" title="fetch_first_clause" shape="rect">fetch_first_clause</a></div> + <div>         ::= 'FETCH' ( 'FIRST' | 'NEXT' ) <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a>? ( 'ROW' | 'ROWS' ) 'ONLY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-expression" title="query-expression">query-expression</a></li><li><a href="#query-primary" title="query-primary">query-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + search_or_cycle_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="273" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-clause" xlink:title="search_clause" shape="rect"> + <rect x="43" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">search_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cycle-clause" xlink:title="cycle_clause" shape="rect"> + <rect x="145" y="22" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="34">cycle_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cycle-clause" xlink:title="cycle_clause" shape="rect"> + <rect x="43" y="50" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="62">cycle_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m74 0 h4 m20 0 h10 m0 0 h62 m-92 0 h20 m72 0 h20 m-112 0 q10 0 10 10 m92 0 q0 -10 10 -10 m-102 10 v1 m92 0 v-1 m-92 1 q0 10 10 10 m72 0 q10 0 10 -10 m-82 10 h4 m64 0 h4 m-194 -21 h20 m194 0 h20 m-234 0 q10 0 10 10 m214 0 q0 -10 10 -10 m-224 10 v29 m214 0 v-29 m-214 29 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m64 0 h4 m0 0 h122 m23 -49 h-3"/> + <polygon points="263 10 271 6 271 14"/> + <polygon points="263 10 255 6 255 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#search-or-cycle-clause" title="search_or_cycle_clause" shape="rect">search_or_cycle_clause</a></div> + <div>         ::= <a href="#search-clause" title="search_clause" shape="rect">search_clause</a> <a href="#cycle-clause" title="cycle_clause" shape="rect">cycle_clause</a>?</div> + <div>           | <a href="#cycle-clause" title="cycle_clause" shape="rect">cycle_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#with-list-element" title="with-list-element">with-list-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + search_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="301" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SEARCH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#recursive-search-order" xlink:title="recursive_search_order" shape="rect"> + <rect x="75" y="1" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">recursive_search_order</text></a><rect x="199" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="231" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="235" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m116 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="291 10 299 6 299 14"/> + <polygon points="291 10 283 6 283 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#search-clause" title="search_clause" shape="rect">search_clause</a></div> + <div>         ::= 'SEARCH' <a href="#recursive-search-order" title="recursive_search_order" shape="rect">recursive_search_order</a> 'SET' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#search-or-cycle-clause" title="search-or-cycle-clause">search-or-cycle-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + recursive_search_order +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="307" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">DEPTH</text> + <rect x="43" y="29" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">BREADTH</text> + <rect x="121" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="13">FIRST</text> + <rect x="163" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="191" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="195" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m0 0 h12 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m20 -28 h4 m34 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="297 10 305 6 305 14"/> + <polygon points="297 10 289 6 289 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#recursive-search-order" title="recursive_search_order" shape="rect">recursive_search_order</a></div> + <div>         ::= ( 'DEPTH' | 'BREADTH' ) 'FIRST' 'BY' <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#search-clause" title="search-clause">search-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cycle_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="643" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CYCLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cycle-column-list" xlink:title="cycle_column_list" shape="rect"> + <rect x="67" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="71" y="13">cycle_column_list</text></a><rect x="161" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="193" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="13">identifier</text></a><rect x="247" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="251" y="13">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="275" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="279" y="13">value_expression</text></a><rect x="373" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="377" y="13">DEFAULT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="429" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="433" y="13">value_expression</text></a><rect x="527" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="531" y="13">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="573" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="577" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m38 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="633 10 641 6 641 14"/> + <polygon points="633 10 625 6 625 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cycle-clause" title="cycle_clause" shape="rect">cycle_clause</a></div> + <div>         ::= 'CYCLE' <a href="#cycle-column-list" title="cycle_column_list" shape="rect">cycle_column_list</a> 'SET' <a href="#identifier" title="identifier" shape="rect">identifier</a> 'TO' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> 'DEFAULT' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> 'USING' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#search-or-cycle-clause" title="search-or-cycle-clause">search-or-cycle-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cycle_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m23 28 h-3"/> + <polygon points="123 38 131 34 131 42"/> + <polygon points="123 38 115 34 115 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cycle-column-list" title="cycle_column_list" shape="rect">cycle_column_list</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> ( ',' <a href="#identifier" title="identifier" shape="rect">identifier</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cycle-clause" title="cycle-clause">cycle-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + subquery +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-expression" xlink:title="query_expression" shape="rect"> + <rect x="43" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">query_expression</text></a><rect x="143" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#subquery" title="subquery" shape="rect">subquery</a> ::= '(' <a href="#query-expression" title="query_expression" shape="rect">query_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-value-constructor-by-query" title="array-value-constructor-by-query">array-value-constructor-by-query</a></li><li><a href="#as-subquery-clause" title="as-subquery-clause">as-subquery-clause</a></li><li><a href="#derived-table" title="derived-table">derived-table</a></li><li><a href="#exists-predicate" title="exists-predicate">exists-predicate</a></li><li><a href="#explicit-row-value-constructor" title="explicit-row-value-constructor">explicit-row-value-constructor</a></li><li><a href="#in-predicate-value" title="in-predicate-value">in-predicate-value</a></li><li><a href="#lateral-derived-table" title="lateral-derived-table">lateral-derived-table</a></li><li><a href="#match-predicate-part-2" title="match-predicate-part-2">match-predicate-part-2</a></li><li><a href="#multiset-value-constructor-by-query" title="multiset-value-constructor-by-query">multiset-value-constructor-by-query</a></li><li><a href="#nonparenthesized-value-expression-primary" title="nonparenthesized-value-expression-primary">nonparenthesized-value-expression-primary</a></li><li><a href="#quantified-comparison-predicate-part-2" title="quantified-comparison-predicate-part-2">quantified-comparison-predicate-part-2</a></li><li><a href="#table-value-constructor-by-query" title="table-value-constructor-by-query">table-value-constructor-by-query</a></li><li><a href="#unique-predicate" title="unique-predicate">unique-predicate</a></li><li><a href="#with-list-element" title="with-list-element">with-list-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="403" height="518"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#exists-predicate" xlink:title="exists_predicate" shape="rect"> + <rect x="43" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">exists_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unique-predicate" xlink:title="unique_predicate" shape="rect"> + <rect x="43" y="29" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">unique_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="43" y="57" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">row_value_predicand</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comparison-predicate" xlink:title="comparison_predicate" shape="rect"> + <rect x="179" y="78" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="90">comparison_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#between-predicate" xlink:title="between_predicate" shape="rect"> + <rect x="179" y="106" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="118">between_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#in-predicate" xlink:title="in_predicate" shape="rect"> + <rect x="179" y="134" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="146">in_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#like-predicate" xlink:title="like_predicate" shape="rect"> + <rect x="179" y="162" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="174">like_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#similar-predicate" xlink:title="similar_predicate" shape="rect"> + <rect x="179" y="190" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="202">similar_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-like-predicate" xlink:title="regex_like_predicate" shape="rect"> + <rect x="179" y="218" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="230">regex_like_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-predicate" xlink:title="null_predicate" shape="rect"> + <rect x="179" y="246" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="258">null_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#quantified-comparison-predicate" xlink:title="quantified_comparison_predicate" shape="rect"> + <rect x="179" y="274" width="160" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="286">quantified_comparison_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#normalized-predicate" xlink:title="normalized_predicate" shape="rect"> + <rect x="179" y="302" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="314">normalized_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#match-predicate" xlink:title="match_predicate" shape="rect"> + <rect x="179" y="330" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="342">match_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#overlaps-predicate" xlink:title="overlaps_predicate" shape="rect"> + <rect x="179" y="358" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="370">overlaps_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#distinct-predicate" xlink:title="distinct_predicate" shape="rect"> + <rect x="179" y="386" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="398">distinct_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#member-predicate" xlink:title="member_predicate" shape="rect"> + <rect x="179" y="414" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="426">member_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#submultiset-predicate" xlink:title="submultiset_predicate" shape="rect"> + <rect x="179" y="442" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="454">submultiset_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-predicate" xlink:title="set_predicate" shape="rect"> + <rect x="179" y="470" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="482">set_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#type-predicate" xlink:title="type_predicate" shape="rect"> + <rect x="179" y="498" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="510">type_predicate</text></a><path class="line" d="m17 10 h2 m20 0 h4 m82 0 h4 m0 0 h234 m-344 0 h20 m324 0 h20 m-364 0 q10 0 10 10 m344 0 q0 -10 10 -10 m-354 10 v8 m344 0 v-8 m-344 8 q0 10 10 10 m324 0 q10 0 10 -10 m-334 10 h4 m88 0 h4 m0 0 h228 m-334 -10 v20 m344 0 v-20 m-344 20 v8 m344 0 v-8 m-344 8 q0 10 10 10 m324 0 q10 0 10 -10 m-334 10 h4 m108 0 h4 m20 0 h10 m0 0 h158 m-188 0 h20 m168 0 h20 m-208 0 q10 0 10 10 m188 0 q0 -10 10 -10 m-198 10 v1 m188 0 v-1 m-188 1 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m110 0 h4 m0 0 h50 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m98 0 h4 m0 0 h62 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m64 0 h4 m0 0 h96 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m70 0 h4 m0 0 h90 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m84 0 h4 m0 0 h76 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m104 0 h4 m0 0 h56 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m72 0 h4 m0 0 h88 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m160 0 h4 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m108 0 h4 m0 0 h52 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m86 0 h4 m0 0 h74 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m96 0 h4 m0 0 h64 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m86 0 h4 m0 0 h74 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m98 0 h4 m0 0 h62 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m110 0 h4 m0 0 h50 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m72 0 h4 m0 0 h88 m-178 -10 v20 m188 0 v-20 m-188 20 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m78 0 h4 m0 0 h82 m43 -497 h-3"/> + <polygon points="393 10 401 6 401 14"/> + <polygon points="393 10 385 6 385 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#predicate" title="predicate" shape="rect">predicate</a></div> + <div>         ::= <a href="#exists-predicate" title="exists_predicate" shape="rect">exists_predicate</a></div> + <div>           | <a href="#unique-predicate" title="unique_predicate" shape="rect">unique_predicate</a></div> + <div>           | <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a> ( <a href="#comparison-predicate" title="comparison_predicate" shape="rect">comparison_predicate</a> | <a href="#between-predicate" title="between_predicate" shape="rect">between_predicate</a> | <a href="#in-predicate" title="in_predicate" shape="rect">in_predicate</a> | <a href="#like-predicate" title="like_predicate" shape="rect">like_predicate</a> | <a href="#similar-predicate" title="similar_predicate" shape="rect">similar_predicate</a> | <a href="#regex-like-predicate" title="regex_like_predicate" shape="rect">regex_like_predicate</a> | <a href="#null-predicate" title="null_predicate" shape="rect">null_predicate</a> | <a href="#quantified-comparison-predicate" title="quantified_comparison_predicate" shape="rect">quantified_comparison_predicate</a> | <a href="#normalized-predicate" title="normalized_predicate" shape="rect">normalized_predicate</a> | <a href="#match-predicate" title="match_predicate" shape="rect">match_predicate</a> | <a href="#overlaps-predicate" title="overlaps_predicate" shape="rect">overlaps_predicate</a> | <a href="#distinct-predicate" title="distinct_predicate" shape="rect">distinct_predicate</a> | <a href="#member-predicate" title="member_predicate" shape="rect">member_predicate</a> | <a href="#submultiset-predicate" title="submultiset_predicate" shape="rect">submultiset_predicate</a> | <a href="#set-predicate" title="set_predicate" shape="rect">set_predicate</a> | <a href="#type-predicate" title="type_predicate" shape="rect">type_predicate</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#boolean-primary" title="boolean-primary">boolean-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + comparison_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comparison-predicate-part-2" xlink:title="comparison_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">comparison_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m146 0 h4 m3 0 h-3"/> + <polygon points="183 10 191 6 191 14"/> + <polygon points="183 10 175 6 175 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#comparison-predicate" title="comparison_predicate" shape="rect">comparison_predicate</a></div> + <div>         ::= <a href="#comparison-predicate-part-2" title="comparison_predicate_part_2" shape="rect">comparison_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + comparison_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comp-op" xlink:title="comp_op" shape="rect"> + <rect x="23" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">comp_op</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="85" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">row_value_predicand</text></a><path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#comparison-predicate-part-2" title="comparison_predicate_part_2" shape="rect">comparison_predicate_part_2</a></div> + <div>         ::= <a href="#comp-op" title="comp_op" shape="rect">comp_op</a> <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#comparison-predicate" title="comparison-predicate">comparison-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + comp_op +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="109" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">=</text> + <rect x="43" y="29" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41"><></text> + <rect x="43" y="57" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69"><</text> + <rect x="43" y="85" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">></text> + <rect x="43" y="113" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125"><=</text> + <rect x="43" y="141" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">>=</text> + <rect x="43" y="169" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">!=</text> + <path class="line" d="m17 10 h2 m20 0 h4 m14 0 h4 m0 0 h8 m-50 0 h20 m30 0 h20 m-70 0 q10 0 10 10 m50 0 q0 -10 10 -10 m-60 10 v8 m50 0 v-8 m-50 8 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m22 0 h4 m-40 -10 v20 m50 0 v-20 m-50 20 v8 m50 0 v-8 m-50 8 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m14 0 h4 m0 0 h8 m-40 -10 v20 m50 0 v-20 m-50 20 v8 m50 0 v-8 m-50 8 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m14 0 h4 m0 0 h8 m-40 -10 v20 m50 0 v-20 m-50 20 v8 m50 0 v-8 m-50 8 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m22 0 h4 m-40 -10 v20 m50 0 v-20 m-50 20 v8 m50 0 v-8 m-50 8 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m22 0 h4 m-40 -10 v20 m50 0 v-20 m-50 20 v8 m50 0 v-8 m-50 8 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m16 0 h4 m0 0 h6 m23 -168 h-3"/> + <polygon points="99 10 107 6 107 14"/> + <polygon points="99 10 91 6 91 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#comp-op" title="comp_op" shape="rect">comp_op</a>  ::= '='</div> + <div>           | '<>'</div> + <div>           | '<'</div> + <div>           | '>'</div> + <div>           | '<='</div> + <div>           | '>='</div> + <div>           | '!='</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#comparison-predicate-part-2" title="comparison-predicate-part-2">comparison-predicate-part-2</a></li><li><a href="#quantified-comparison-predicate-part-2" title="quantified-comparison-predicate-part-2">quantified-comparison-predicate-part-2</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + between_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#between-predicate-part-2" xlink:title="between_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">between_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m134 0 h4 m3 0 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#between-predicate" title="between_predicate" shape="rect">between_predicate</a></div> + <div>         ::= <a href="#between-predicate-part-2" title="between_predicate_part_2" shape="rect">between_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + between_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="559" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">BETWEEN</text> + <rect x="179" y="22" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="34">ASYMMETRIC</text> + <rect x="179" y="50" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="62">SYMMETRIC</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="275" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="279" y="13">row_value_predicand</text></a><rect x="391" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="395" y="13">AND</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="427" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="431" y="13">row_value_predicand</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m52 0 h4 m20 0 h10 m0 0 h66 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v1 m96 0 v-1 m-96 1 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m68 0 h4 m-86 -10 v20 m96 0 v-20 m-96 20 v8 m96 0 v-8 m-96 8 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m62 0 h4 m0 0 h6 m20 -49 h4 m108 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="549 10 557 6 557 14"/> + <polygon points="549 10 541 6 541 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#between-predicate-part-2" title="between_predicate_part_2" shape="rect">between_predicate_part_2</a></div> + <div>         ::= 'NOT'? 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a> 'AND' <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#between-predicate" title="between-predicate">between-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + in_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#in-predicate-part-2" xlink:title="in_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">in_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m100 0 h4 m3 0 h-3"/> + <polygon points="137 10 145 6 145 14"/> + <polygon points="137 10 129 6 129 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#in-predicate" title="in_predicate" shape="rect">in_predicate</a></div> + <div>         ::= <a href="#in-predicate-part-2" title="in_predicate_part_2" shape="rect">in_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + in_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#in-predicate-value" xlink:title="in_predicate_value" shape="rect"> + <rect x="125" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="13">in_predicate_value</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m18 0 h4 m0 0 h4 m94 0 h4 m3 0 h-3"/> + <polygon points="233 10 241 6 241 14"/> + <polygon points="233 10 225 6 225 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#in-predicate-part-2" title="in_predicate_part_2" shape="rect">in_predicate_part_2</a></div> + <div>         ::= 'NOT'? 'IN' <a href="#in-predicate-value" title="in_predicate_value" shape="rect">in_predicate_value</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#in-predicate" title="in-predicate">in-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + in_predicate_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#in-value-list" xlink:title="in_value_list" shape="rect"> + <rect x="63" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">in_value_list</text></a><rect x="135" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="43" y="29" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">subquery</text></a><path class="line" d="m17 10 h2 m20 0 h4 m12 0 h4 m0 0 h4 m64 0 h4 m0 0 h4 m12 0 h4 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v8 m132 0 v-8 m-132 8 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m52 0 h4 m0 0 h52 m23 -28 h-3"/> + <polygon points="181 10 189 6 189 14"/> + <polygon points="181 10 173 6 173 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#in-predicate-value" title="in_predicate_value" shape="rect">in_predicate_value</a></div> + <div>         ::= '(' <a href="#in-value-list" title="in_value_list" shape="rect">in_value_list</a> ')'</div> + <div>           | <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#in-predicate-part-2" title="in-predicate-part-2">in-predicate-part-2</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + in_value_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-expression" xlink:title="row_value_expression" shape="rect"> + <rect x="43" y="29" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">row_value_expression</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m112 0 h4 m-140 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m120 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-120 0 h4 m8 0 h4 m0 0 h104 m23 28 h-3"/> + <polygon points="189 38 197 34 197 42"/> + <polygon points="189 38 181 34 181 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#in-value-list" title="in_value_list" shape="rect">in_value_list</a></div> + <div>         ::= <a href="#row-value-expression" title="row_value_expression" shape="rect">row_value_expression</a> ( ',' <a href="#row-value-expression" title="row_value_expression" shape="rect">row_value_expression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#in-predicate-value" title="in-predicate-value">in-predicate-value</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + like_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-like-predicate" xlink:title="character_like_predicate" shape="rect"> + <rect x="43" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">character_like_predicate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#octet-like-predicate" xlink:title="octet_like_predicate" shape="rect"> + <rect x="43" y="29" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">octet_like_predicate</text></a><path class="line" d="m17 10 h2 m20 0 h4 m118 0 h4 m-146 0 h20 m126 0 h20 m-166 0 q10 0 10 10 m146 0 q0 -10 10 -10 m-156 10 v8 m146 0 v-8 m-146 8 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h4 m100 0 h4 m0 0 h18 m23 -28 h-3"/> + <polygon points="195 10 203 6 203 14"/> + <polygon points="195 10 187 6 187 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#like-predicate" title="like_predicate" shape="rect">like_predicate</a></div> + <div>         ::= <a href="#character-like-predicate" title="character_like_predicate" shape="rect">character_like_predicate</a></div> + <div>           | <a href="#octet-like-predicate" title="octet_like_predicate" shape="rect">octet_like_predicate</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_like_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="201" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-like-predicate-part-2" xlink:title="character_like_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_like_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m154 0 h4 m3 0 h-3"/> + <polygon points="191 10 199 6 199 14"/> + <polygon points="191 10 183 6 183 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-like-predicate" title="character_like_predicate" shape="rect">character_like_predicate</a></div> + <div>         ::= <a href="#character-like-predicate-part-2" title="character_like_predicate_part_2" shape="rect">character_like_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#like-predicate" title="like-predicate">like-predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_like_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="533" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">LIKE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="135" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">character_value_expression</text></a><rect x="301" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="305" y="34">ESCAPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="351" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="355" y="34">character_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m28 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h186 m-216 0 h20 m196 0 h20 m-236 0 q10 0 10 10 m216 0 q0 -10 10 -10 m-226 10 v1 m216 0 v-1 m-216 1 q0 10 10 10 m196 0 q10 0 10 -10 m-206 10 h4 m42 0 h4 m0 0 h4 m138 0 h4 m23 -21 h-3"/> + <polygon points="523 10 531 6 531 14"/> + <polygon points="523 10 515 6 515 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-like-predicate-part-2" title="character_like_predicate_part_2" shape="rect">character_like_predicate_part_2</a></div> + <div>         ::= 'NOT'? 'LIKE' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'ESCAPE' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-like-predicate" title="character-like-predicate">character-like-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + octet_like_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#octet-like-predicate-part-2" xlink:title="octet_like_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">octet_like_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m136 0 h4 m3 0 h-3"/> + <polygon points="173 10 181 6 181 14"/> + <polygon points="173 10 165 6 165 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#octet-like-predicate" title="octet_like_predicate" shape="rect">octet_like_predicate</a></div> + <div>         ::= <a href="#octet-like-predicate-part-2" title="octet_like_predicate_part_2" shape="rect">octet_like_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#like-predicate" title="like-predicate">like-predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + octet_like_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="501" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">LIKE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="135" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">binary_value_expression</text></a><rect x="285" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="289" y="34">ESCAPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-value-expression" xlink:title="binary_value_expression" shape="rect"> + <rect x="335" y="22" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="339" y="34">binary_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m28 0 h4 m0 0 h4 m122 0 h4 m20 0 h10 m0 0 h170 m-200 0 h20 m180 0 h20 m-220 0 q10 0 10 10 m200 0 q0 -10 10 -10 m-210 10 v1 m200 0 v-1 m-200 1 q0 10 10 10 m180 0 q10 0 10 -10 m-190 10 h4 m42 0 h4 m0 0 h4 m122 0 h4 m23 -21 h-3"/> + <polygon points="491 10 499 6 499 14"/> + <polygon points="491 10 483 6 483 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#octet-like-predicate-part-2" title="octet_like_predicate_part_2" shape="rect">octet_like_predicate_part_2</a></div> + <div>         ::= 'NOT'? 'LIKE' <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> ( 'ESCAPE' <a href="#binary-value-expression" title="binary_value_expression" shape="rect">binary_value_expression</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#octet-like-predicate" title="octet-like-predicate">octet-like-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + similar_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#similar-predicate-part-2" xlink:title="similar_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">similar_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m120 0 h4 m3 0 h-3"/> + <polygon points="157 10 165 6 165 14"/> + <polygon points="157 10 149 6 149 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#similar-predicate" title="similar_predicate" shape="rect">similar_predicate</a></div> + <div>         ::= <a href="#similar-predicate-part-2" title="similar_predicate_part_2" shape="rect">similar_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + similar_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="579" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">SIMILAR</text> + <rect x="153" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="13">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="181" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="13">character_value_expression</text></a><rect x="347" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="351" y="34">ESCAPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="397" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="401" y="34">character_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m46 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h186 m-216 0 h20 m196 0 h20 m-236 0 q10 0 10 10 m216 0 q0 -10 10 -10 m-226 10 v1 m216 0 v-1 m-216 1 q0 10 10 10 m196 0 q10 0 10 -10 m-206 10 h4 m42 0 h4 m0 0 h4 m138 0 h4 m23 -21 h-3"/> + <polygon points="569 10 577 6 577 14"/> + <polygon points="569 10 561 6 561 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#similar-predicate-part-2" title="similar_predicate_part_2" shape="rect">similar_predicate_part_2</a></div> + <div>         ::= 'NOT'? 'SIMILAR' 'TO' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'ESCAPE' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#similar-predicate" title="similar-predicate">similar-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regex_like_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="187" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regex-like-predicate-part-2" xlink:title="regex_like_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">regex_like_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m140 0 h4 m3 0 h-3"/> + <polygon points="177 10 185 6 185 14"/> + <polygon points="177 10 169 6 169 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regex-like-predicate" title="regex_like_predicate" shape="rect">regex_like_predicate</a></div> + <div>         ::= <a href="#regex-like-predicate-part-2" title="regex_like_predicate_part_2" shape="rect">regex_like_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regex_like_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="557" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">LIKE_REGEX</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="171" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="175" y="13">character_value_expression</text></a><rect x="337" y="22" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="341" y="34">FLAG</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-value-expression" xlink:title="character_value_expression" shape="rect"> + <rect x="375" y="22" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="379" y="34">character_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m64 0 h4 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m30 0 h4 m0 0 h4 m138 0 h4 m23 -21 h-3"/> + <polygon points="547 10 555 6 555 14"/> + <polygon points="547 10 539 6 539 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regex-like-predicate-part-2" title="regex_like_predicate_part_2" shape="rect">regex_like_predicate_part_2</a></div> + <div>         ::= 'NOT'? 'LIKE_REGEX' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> ( 'FLAG' <a href="#character-value-expression" title="character_value_expression" shape="rect">character_value_expression</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regex-like-predicate" title="regex-like-predicate">regex-like-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + null_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-predicate-part-2" xlink:title="null_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">null_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#null-predicate" title="null_predicate" shape="rect">null_predicate</a></div> + <div>         ::= <a href="#null-predicate-part-2" title="null_predicate_part_2" shape="rect">null_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + null_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">IS</text> + <rect x="69" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="34">NOT</text> + <rect x="125" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">NULL</text> + <path class="line" d="m17 10 h2 m0 0 h4 m18 0 h4 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m32 0 h4 m3 0 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#null-predicate-part-2" title="null_predicate_part_2" shape="rect">null_predicate_part_2</a></div> + <div>         ::= 'IS' 'NOT'? 'NULL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#null-predicate" title="null-predicate">null-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + quantified_comparison_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#quantified-comparison-predicate-part-2" xlink:title="quantified_comparison_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="196" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">quantified_comparison_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m196 0 h4 m3 0 h-3"/> + <polygon points="233 10 241 6 241 14"/> + <polygon points="233 10 225 6 225 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#quantified-comparison-predicate" title="quantified_comparison_predicate" shape="rect">quantified_comparison_predicate</a></div> + <div>         ::= <a href="#quantified-comparison-predicate-part-2" title="quantified_comparison_predicate_part_2" shape="rect">quantified_comparison_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + quantified_comparison_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="245" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comp-op" xlink:title="comp_op" shape="rect"> + <rect x="23" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">comp_op</text></a><rect x="105" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="13">ALL</text> + <rect x="105" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="41">SOME</text> + <rect x="105" y="57" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="69">ANY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="169" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="13">subquery</text></a><path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m20 0 h4 m24 0 h4 m0 0 h12 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m36 0 h4 m-54 -10 v20 m64 0 v-20 m-64 20 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m26 0 h4 m0 0 h10 m20 -56 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="235 10 243 6 243 14"/> + <polygon points="235 10 227 6 227 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#quantified-comparison-predicate-part-2" title="quantified_comparison_predicate_part_2" shape="rect">quantified_comparison_predicate_part_2</a></div> + <div>         ::= <a href="#comp-op" title="comp_op" shape="rect">comp_op</a> ( 'ALL' | 'SOME' | 'ANY' ) <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#quantified-comparison-predicate" title="quantified-comparison-predicate">quantified-comparison-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + exists_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="71" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="13">subquery</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="137 10 145 6 145 14"/> + <polygon points="137 10 129 6 129 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#exists-predicate" title="exists_predicate" shape="rect">exists_predicate</a></div> + <div>         ::= 'EXISTS' <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unique_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="151" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UNIQUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="75" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">subquery</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="141 10 149 6 149 14"/> + <polygon points="141 10 133 6 133 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unique-predicate" title="unique_predicate" shape="rect">unique_predicate</a></div> + <div>         ::= 'UNIQUE' <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + normalized_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#normalized-predicate-part-2" xlink:title="normalized_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">normalized_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m144 0 h4 m3 0 h-3"/> + <polygon points="181 10 189 6 189 14"/> + <polygon points="181 10 173 6 173 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#normalized-predicate" title="normalized_predicate" shape="rect">normalized_predicate</a></div> + <div>         ::= <a href="#normalized-predicate-part-2" title="normalized_predicate_part_2" shape="rect">normalized_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + normalized_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="335" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">IS</text> + <rect x="69" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="34">NOT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#normal-form" xlink:title="normal_form" shape="rect"> + <rect x="145" y="22" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="34">normal_form</text></a><rect x="241" y="1" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="13">NORMALIZED</text> + <path class="line" d="m17 10 h2 m0 0 h4 m18 0 h4 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m40 -21 h10 m0 0 h66 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v1 m96 0 v-1 m-96 1 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m68 0 h4 m20 -21 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="325 10 333 6 333 14"/> + <polygon points="325 10 317 6 317 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#normalized-predicate-part-2" title="normalized_predicate_part_2" shape="rect">normalized_predicate_part_2</a></div> + <div>         ::= 'IS' 'NOT'? <a href="#normal-form" title="normal_form" shape="rect">normal_form</a>? 'NORMALIZED'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#normalized-predicate" title="normalized-predicate">normalized-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + match_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="169" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#match-predicate-part-2" xlink:title="match_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">match_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="159 10 167 6 167 14"/> + <polygon points="159 10 151 6 151 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#match-predicate" title="match_predicate" shape="rect">match_predicate</a></div> + <div>         ::= <a href="#match-predicate-part-2" title="match_predicate_part_2" shape="rect">match_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + match_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="333" height="98"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MATCH</text> + <rect x="91" y="22" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="34">UNIQUE</text> + <rect x="183" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="34">SIMPLE</text> + <rect x="183" y="50" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="62">PARTIAL</text> + <rect x="183" y="78" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="90">FULL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="257" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="261" y="13">subquery</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m20 0 h10 m0 0 h42 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v1 m72 0 v-1 m-72 1 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m44 0 h4 m40 -21 h10 m0 0 h44 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v1 m74 0 v-1 m-74 1 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m42 0 h4 m0 0 h4 m-64 -10 v20 m74 0 v-20 m-74 20 v8 m74 0 v-8 m-74 8 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m46 0 h4 m-64 -10 v20 m74 0 v-20 m-74 20 v8 m74 0 v-8 m-74 8 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m30 0 h4 m0 0 h16 m20 -77 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="323 10 331 6 331 14"/> + <polygon points="323 10 315 6 315 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#match-predicate-part-2" title="match_predicate_part_2" shape="rect">match_predicate_part_2</a></div> + <div>         ::= 'MATCH' 'UNIQUE'? ( 'SIMPLE' | 'PARTIAL' | 'FULL' )? <a href="#subquery" title="subquery" shape="rect">subquery</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#match-predicate" title="match-predicate">match-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + overlaps_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#overlaps-predicate-part-2" xlink:title="overlaps_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">overlaps_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#overlaps-predicate" title="overlaps_predicate" shape="rect">overlaps_predicate</a></div> + <div>         ::= <a href="#overlaps-predicate-part-2" title="overlaps_predicate_part_2" shape="rect">overlaps_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + overlaps_predicate_part_1 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand-1" xlink:title="row_value_predicand_1" shape="rect"> + <rect x="23" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">row_value_predicand_1</text></a><path class="line" d="m17 10 h2 m0 0 h4 m120 0 h4 m3 0 h-3"/> + <polygon points="157 10 165 6 165 14"/> + <polygon points="157 10 149 6 149 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#overlaps-predicate-part-1" title="overlaps_predicate_part_1" shape="rect">overlaps_predicate_part_1</a></div> + <div>         ::= <a href="#row-value-predicand-1" title="row_value_predicand_1" shape="rect">row_value_predicand_1</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#case-operand" title="case-operand">case-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + overlaps_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OVERLAPS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand-2" xlink:title="row_value_predicand_2" shape="rect"> + <rect x="87" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">row_value_predicand_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m0 0 h4 m120 0 h4 m3 0 h-3"/> + <polygon points="221 10 229 6 229 14"/> + <polygon points="221 10 213 6 213 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#overlaps-predicate-part-2" title="overlaps_predicate_part_2" shape="rect">overlaps_predicate_part_2</a></div> + <div>         ::= 'OVERLAPS' <a href="#row-value-predicand-2" title="row_value_predicand_2" shape="rect">row_value_predicand_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#overlaps-predicate" title="overlaps-predicate">overlaps-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_predicand_1 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="23" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">row_value_predicand</text></a><path class="line" d="m17 10 h2 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-predicand-1" title="row_value_predicand_1" shape="rect">row_value_predicand_1</a></div> + <div>         ::= <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#overlaps-predicate-part-1" title="overlaps-predicate-part-1">overlaps-predicate-part-1</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_predicand_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="23" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">row_value_predicand</text></a><path class="line" d="m17 10 h2 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-predicand-2" title="row_value_predicand_2" shape="rect">row_value_predicand_2</a></div> + <div>         ::= <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#overlaps-predicate-part-2" title="overlaps-predicate-part-2">overlaps-predicate-part-2</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + distinct_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="171" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#distinct-predicate-part-2" xlink:title="distinct_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">distinct_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="161 10 169 6 169 14"/> + <polygon points="161 10 153 6 153 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#distinct-predicate" title="distinct_predicate" shape="rect">distinct_predicate</a></div> + <div>         ::= <a href="#distinct-predicate-part-2" title="distinct_predicate_part_2" shape="rect">distinct_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + distinct_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="371" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">IS</text> + <rect x="69" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="34">NOT</text> + <rect x="125" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">DISTINCT</text> + <rect x="183" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand-4" xlink:title="row_value_predicand_4" shape="rect"> + <rect x="227" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="231" y="13">row_value_predicand_4</text></a><path class="line" d="m17 10 h2 m0 0 h4 m18 0 h4 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m50 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m120 0 h4 m3 0 h-3"/> + <polygon points="361 10 369 6 369 14"/> + <polygon points="361 10 353 6 353 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#distinct-predicate-part-2" title="distinct_predicate_part_2" shape="rect">distinct_predicate_part_2</a></div> + <div>         ::= 'IS' 'NOT'? 'DISTINCT' 'FROM' <a href="#row-value-predicand-4" title="row_value_predicand_4" shape="rect">row_value_predicand_4</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#distinct-predicate" title="distinct-predicate">distinct-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_predicand_3 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="23" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">row_value_predicand</text></a><path class="line" d="m17 10 h2 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-predicand-3" title="row_value_predicand_3" shape="rect">row_value_predicand_3</a></div> + <div>         ::= <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + row_value_predicand_4 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#row-value-predicand" xlink:title="row_value_predicand" shape="rect"> + <rect x="23" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">row_value_predicand</text></a><path class="line" d="m17 10 h2 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#row-value-predicand-4" title="row_value_predicand_4" shape="rect">row_value_predicand_4</a></div> + <div>         ::= <a href="#row-value-predicand" title="row_value_predicand" shape="rect">row_value_predicand</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#distinct-predicate-part-2" title="distinct-predicate-part-2">distinct-predicate-part-2</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + member_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#member-predicate-part-2" xlink:title="member_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">member_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m134 0 h4 m3 0 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#member-predicate" title="member_predicate" shape="rect">member_predicate</a></div> + <div>         ::= <a href="#member-predicate-part-2" title="member_predicate_part_2" shape="rect">member_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + member_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="377" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">MEMBER</text> + <rect x="175" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="179" y="34">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-expression" xlink:title="multiset_value_expression" shape="rect"> + <rect x="223" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="227" y="13">multiset_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m48 0 h4 m20 0 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="367 10 375 6 375 14"/> + <polygon points="367 10 359 6 359 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#member-predicate-part-2" title="member_predicate_part_2" shape="rect">member_predicate_part_2</a></div> + <div>         ::= 'NOT'? 'MEMBER' 'OF'? <a href="#multiset-value-expression" title="multiset_value_expression" shape="rect">multiset_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#member-predicate" title="member-predicate">member-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + submultiset_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#submultiset-predicate-part-2" xlink:title="submultiset_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">submultiset_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m146 0 h4 m3 0 h-3"/> + <polygon points="183 10 191 6 191 14"/> + <polygon points="183 10 175 6 175 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#submultiset-predicate" title="submultiset_predicate" shape="rect">submultiset_predicate</a></div> + <div>         ::= <a href="#submultiset-predicate-part-2" title="submultiset_predicate_part_2" shape="rect">submultiset_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + submultiset_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="401" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">SUBMULTISET</text> + <rect x="199" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="34">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiset-value-expression" xlink:title="multiset_value_expression" shape="rect"> + <rect x="247" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="251" y="13">multiset_value_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m72 0 h4 m20 0 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="391 10 399 6 399 14"/> + <polygon points="391 10 383 6 383 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#submultiset-predicate-part-2" title="submultiset_predicate_part_2" shape="rect">submultiset_predicate_part_2</a></div> + <div>         ::= 'NOT'? 'SUBMULTISET' 'OF'? <a href="#multiset-value-expression" title="multiset_value_expression" shape="rect">multiset_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#submultiset-predicate" title="submultiset-predicate">submultiset-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-predicate-part-2" xlink:title="set_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">set_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-predicate" title="set_predicate" shape="rect">set_predicate</a></div> + <div>         ::= <a href="#set-predicate-part-2" title="set_predicate_part_2" shape="rect">set_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">IS</text> + <rect x="69" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="34">NOT</text> + <rect x="125" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">A</text> + <rect x="147" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="13">SET</text> + <path class="line" d="m17 10 h2 m0 0 h4 m18 0 h4 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m14 0 h4 m0 0 h4 m24 0 h4 m3 0 h-3"/> + <polygon points="185 10 193 6 193 14"/> + <polygon points="185 10 177 6 177 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-predicate-part-2" title="set_predicate_part_2" shape="rect">set_predicate_part_2</a></div> + <div>         ::= 'IS' 'NOT'? 'A' 'SET'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-predicate" title="set-predicate">set-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + type_predicate +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="161" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#type-predicate-part-2" xlink:title="type_predicate_part_2" shape="rect"> + <rect x="23" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">type_predicate_part_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m114 0 h4 m3 0 h-3"/> + <polygon points="151 10 159 6 159 14"/> + <polygon points="151 10 143 6 143 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#type-predicate" title="type_predicate" shape="rect">type_predicate</a></div> + <div>         ::= <a href="#type-predicate-part-2" title="type_predicate_part_2" shape="rect">type_predicate_part_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#predicate" title="predicate">predicate</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + type_predicate_part_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="263" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">IS</text> + <rect x="69" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="34">NOT</text> + <rect x="125" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">OF</text> + <rect x="153" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#type-list" xlink:title="type_list" shape="rect"> + <rect x="173" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="177" y="13">type_list</text></a><rect x="227" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m18 0 h4 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m20 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="253 10 261 6 261 14"/> + <polygon points="253 10 245 6 245 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#type-predicate-part-2" title="type_predicate_part_2" shape="rect">type_predicate_part_2</a></div> + <div>         ::= 'IS' 'NOT'? 'OF' '(' <a href="#type-list" title="type_list" shape="rect">type_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#type-predicate" title="type-predicate">type-predicate</a></li><li><a href="#when-operand" title="when-operand">when-operand</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + type_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-specification" xlink:title="user_defined_type_specification" shape="rect"> + <rect x="43" y="29" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">user_defined_type_specification</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m154 0 h4 m-182 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m162 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-162 0 h4 m8 0 h4 m0 0 h146 m23 28 h-3"/> + <polygon points="231 38 239 34 239 42"/> + <polygon points="231 38 223 34 223 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#type-list" title="type_list" shape="rect">type_list</a></div> + <div>         ::= <a href="#user-defined-type-specification" title="user_defined_type_specification" shape="rect">user_defined_type_specification</a> ( ',' <a href="#user-defined-type-specification" title="user_defined_type_specification" shape="rect">user_defined_type_specification</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#type-predicate-part-2" title="type-predicate-part-2">type-predicate-part-2</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_type_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#exclusive-user-defined-type-specification" xlink:title="exclusive_user_defined_type_specification" shape="rect"> + <rect x="43" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">exclusive_user_defined_type_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#inclusive-user-defined-type-specification" xlink:title="inclusive_user_defined_type_specification" shape="rect"> + <rect x="43" y="29" width="196" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">inclusive_user_defined_type_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m200 0 h4 m-228 0 h20 m208 0 h20 m-248 0 q10 0 10 10 m228 0 q0 -10 10 -10 m-238 10 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m196 0 h4 m0 0 h4 m23 -28 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-type-specification" title="user_defined_type_specification" shape="rect">user_defined_type_specification</a></div> + <div>         ::= <a href="#exclusive-user-defined-type-specification" title="exclusive_user_defined_type_specification" shape="rect">exclusive_user_defined_type_specification</a></div> + <div>           | <a href="#inclusive-user-defined-type-specification" title="inclusive_user_defined_type_specification" shape="rect">inclusive_user_defined_type_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#type-list" title="type-list">type-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + inclusive_user_defined_type_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="23" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">path_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m200 0 h4 m3 0 h-3"/> + <polygon points="237 10 245 6 245 14"/> + <polygon points="237 10 229 6 229 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#inclusive-user-defined-type-specification" title="inclusive_user_defined_type_specification" shape="rect">inclusive_user_defined_type_specification</a></div> + <div>         ::= <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-specification" title="user-defined-type-specification">user-defined-type-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + exclusive_user_defined_type_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="289" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ONLY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="65" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">path_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m200 0 h4 m3 0 h-3"/> + <polygon points="279 10 287 6 287 14"/> + <polygon points="279 10 271 6 271 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#exclusive-user-defined-type-specification" title="exclusive_user_defined_type_specification" shape="rect">exclusive_user_defined_type_specification</a></div> + <div>         ::= 'ONLY' <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-specification" title="user-defined-type-specification">user-defined-type-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + search_condition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#boolean-value-expression" xlink:title="boolean_value_expression" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">boolean_value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#search-condition" title="search_condition" shape="rect">search_condition</a></div> + <div>         ::= <a href="#boolean-value-expression" title="boolean_value_expression" shape="rect">boolean_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#assertion-definition" title="assertion-definition">assertion-definition</a></li><li><a href="#check-constraint-definition" title="check-constraint-definition">check-constraint-definition</a></li><li><a href="#delete-statement-searched" title="delete-statement-searched">delete-statement-searched</a></li><li><a href="#filter-clause" title="filter-clause">filter-clause</a></li><li><a href="#having-clause" title="having-clause">having-clause</a></li><li><a href="#join-condition" title="join-condition">join-condition</a></li><li><a href="#merge-statement" title="merge-statement">merge-statement</a></li><li><a href="#merge-when-matched-clause" title="merge-when-matched-clause">merge-when-matched-clause</a></li><li><a href="#merge-when-not-matched-clause" title="merge-when-not-matched-clause">merge-when-not-matched-clause</a></li><li><a href="#searched-when-clause" title="searched-when-clause">searched-when-clause</a></li><li><a href="#triggered-when-clause" title="triggered-when-clause">triggered-when-clause</a></li><li><a href="#update-statement-searched" title="update-statement-searched">update-statement-searched</a></li><li><a href="#where-clause" title="where-clause">where-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_qualifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#start-field" xlink:title="start_field" shape="rect"> + <rect x="43" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">start_field</text></a><rect x="103" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="13">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#end-field" xlink:title="end_field" shape="rect"> + <rect x="131" y="1" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="13">end_field</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#single-datetime-field" xlink:title="single_datetime_field" shape="rect"> + <rect x="43" y="29" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">single_datetime_field</text></a><path class="line" d="m17 10 h2 m20 0 h4 m52 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m50 0 h4 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m104 0 h4 m0 0 h34 m23 -28 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-qualifier" title="interval_qualifier" shape="rect">interval_qualifier</a></div> + <div>         ::= <a href="#start-field" title="start_field" shape="rect">start_field</a> 'TO' <a href="#end-field" title="end_field" shape="rect">end_field</a></div> + <div>           | <a href="#single-datetime-field" title="single_datetime_field" shape="rect">single_datetime_field</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-literal" title="interval-literal">interval-literal</a></li><li><a href="#interval-primary" title="interval-primary">interval-primary</a></li><li><a href="#interval-type" title="interval-type">interval-type</a></li><li><a href="#interval-value-expression" title="interval-value-expression">interval-value-expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + start_field +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="459" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#non-second-primary-datetime-field" xlink:title="non_second_primary_datetime_field" shape="rect"> + <rect x="23" y="1" width="176" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">non_second_primary_datetime_field</text></a><rect x="227" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-leading-field-precision" xlink:title="interval_leading_field_precision" shape="rect"> + <rect x="247" y="22" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="251" y="34">interval_leading_field_precision</text></a><rect x="403" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="407" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m176 0 h4 m20 0 h10 m0 0 h186 m-216 0 h20 m196 0 h20 m-236 0 q10 0 10 10 m216 0 q0 -10 10 -10 m-226 10 v1 m216 0 v-1 m-216 1 q0 10 10 10 m196 0 q10 0 10 -10 m-206 10 h4 m12 0 h4 m0 0 h4 m148 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="449 10 457 6 457 14"/> + <polygon points="449 10 441 6 441 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#start-field" title="start_field" shape="rect">start_field</a></div> + <div>         ::= <a href="#non-second-primary-datetime-field" title="non_second_primary_datetime_field" shape="rect">non_second_primary_datetime_field</a> ( '(' <a href="#interval-leading-field-precision" title="interval_leading_field_precision" shape="rect">interval_leading_field_precision</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-qualifier" title="interval-qualifier">interval-qualifier</a></li><li><a href="#single-datetime-field" title="single-datetime-field">single-datetime-field</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + end_field +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="397" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#non-second-primary-datetime-field" xlink:title="non_second_primary_datetime_field" shape="rect"> + <rect x="43" y="1" width="176" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">non_second_primary_datetime_field</text></a><rect x="43" y="29" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SECOND</text> + <rect x="117" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="62">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-fractional-seconds-precision" xlink:title="interval_fractional_seconds_precision" shape="rect"> + <rect x="137" y="50" width="176" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="62">interval_fractional_seconds_precision</text></a><rect x="321" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="325" y="62">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m176 0 h4 m0 0 h134 m-338 0 h20 m318 0 h20 m-358 0 q10 0 10 10 m338 0 q0 -10 10 -10 m-348 10 v8 m338 0 v-8 m-338 8 q0 10 10 10 m318 0 q10 0 10 -10 m-328 10 h4 m46 0 h4 m20 0 h10 m0 0 h214 m-244 0 h20 m224 0 h20 m-264 0 q10 0 10 10 m244 0 q0 -10 10 -10 m-254 10 v1 m244 0 v-1 m-244 1 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m12 0 h4 m0 0 h4 m176 0 h4 m0 0 h4 m12 0 h4 m43 -49 h-3"/> + <polygon points="387 10 395 6 395 14"/> + <polygon points="387 10 379 6 379 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#end-field" title="end_field" shape="rect">end_field</a></div> + <div>         ::= <a href="#non-second-primary-datetime-field" title="non_second_primary_datetime_field" shape="rect">non_second_primary_datetime_field</a></div> + <div>           | 'SECOND' ( '(' <a href="#interval-fractional-seconds-precision" title="interval_fractional_seconds_precision" shape="rect">interval_fractional_seconds_precision</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-qualifier" title="interval-qualifier">interval-qualifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + single_datetime_field +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="609" height="91"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#start-field" xlink:title="start_field" shape="rect"> + <rect x="43" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">start_field</text></a><rect x="43" y="29" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SECOND</text> + <rect x="117" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="62">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-leading-field-precision" xlink:title="interval_leading_field_precision" shape="rect"> + <rect x="137" y="50" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="62">interval_leading_field_precision</text></a><rect x="313" y="71" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="83">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-fractional-seconds-precision" xlink:title="interval_fractional_seconds_precision" shape="rect"> + <rect x="329" y="71" width="176" height="18" class="nonterminal"/> + <text class="nonterminal" x="333" y="83">interval_fractional_seconds_precision</text></a><rect x="533" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="537" y="62">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m52 0 h4 m0 0 h470 m-550 0 h20 m530 0 h20 m-570 0 q10 0 10 10 m550 0 q0 -10 10 -10 m-560 10 v8 m550 0 v-8 m-550 8 q0 10 10 10 m530 0 q10 0 10 -10 m-540 10 h4 m46 0 h4 m20 0 h10 m0 0 h426 m-456 0 h20 m436 0 h20 m-476 0 q10 0 10 10 m456 0 q0 -10 10 -10 m-466 10 v1 m456 0 v-1 m-456 1 q0 10 10 10 m436 0 q10 0 10 -10 m-446 10 h4 m12 0 h4 m0 0 h4 m148 0 h4 m20 0 h10 m0 0 h190 m-220 0 h20 m200 0 h20 m-240 0 q10 0 10 10 m220 0 q0 -10 10 -10 m-230 10 v1 m220 0 v-1 m-220 1 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m8 0 h4 m0 0 h4 m176 0 h4 m20 -21 h4 m12 0 h4 m43 -49 h-3"/> + <polygon points="599 10 607 6 607 14"/> + <polygon points="599 10 591 6 591 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#single-datetime-field" title="single_datetime_field" shape="rect">single_datetime_field</a></div> + <div>         ::= <a href="#start-field" title="start_field" shape="rect">start_field</a></div> + <div>           | 'SECOND' ( '(' <a href="#interval-leading-field-precision" title="interval_leading_field_precision" shape="rect">interval_leading_field_precision</a> ( ',' <a href="#interval-fractional-seconds-precision" title="interval_fractional_seconds_precision" shape="rect">interval_fractional_seconds_precision</a> )? ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#interval-qualifier" title="interval-qualifier">interval-qualifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + primary_datetime_field +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="263" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#non-second-primary-datetime-field" xlink:title="non_second_primary_datetime_field" shape="rect"> + <rect x="43" y="1" width="176" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">non_second_primary_datetime_field</text></a><rect x="43" y="29" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SECOND</text> + <path class="line" d="m17 10 h2 m20 0 h4 m176 0 h4 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v8 m204 0 v-8 m-204 8 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m46 0 h4 m0 0 h130 m23 -28 h-3"/> + <polygon points="253 10 261 6 261 14"/> + <polygon points="253 10 245 6 245 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#primary-datetime-field" title="primary_datetime_field" shape="rect">primary_datetime_field</a></div> + <div>         ::= <a href="#non-second-primary-datetime-field" title="non_second_primary_datetime_field" shape="rect">non_second_primary_datetime_field</a></div> + <div>           | 'SECOND'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#extract-field" title="extract-field">extract-field</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + non_second_primary_datetime_field +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="131" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">YEAR</text> + <rect x="43" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">MONTH</text> + <rect x="43" y="57" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">DAY</text> + <rect x="43" y="85" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">HOUR</text> + <rect x="43" y="113" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">MINUTE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h12 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m44 0 h4 m-62 -10 v20 m72 0 v-20 m-72 20 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m26 0 h4 m0 0 h18 m-62 -10 v20 m72 0 v-20 m-72 20 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m36 0 h4 m0 0 h8 m-62 -10 v20 m72 0 v-20 m-72 20 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m44 0 h4 m23 -112 h-3"/> + <polygon points="121 10 129 6 129 14"/> + <polygon points="121 10 113 6 113 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#non-second-primary-datetime-field" title="non_second_primary_datetime_field" shape="rect">non_second_primary_datetime_field</a></div> + <div>         ::= 'YEAR'</div> + <div>           | 'MONTH'</div> + <div>           | 'DAY'</div> + <div>           | 'HOUR'</div> + <div>           | 'MINUTE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#end-field" title="end-field">end-field</a></li><li><a href="#primary-datetime-field" title="primary-datetime-field">primary-datetime-field</a></li><li><a href="#start-field" title="start-field">start-field</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_fractional_seconds_precision +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">unsigned_integer</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-fractional-seconds-precision" title="interval_fractional_seconds_precision" shape="rect">interval_fractional_seconds_precision</a></div> + <div>         ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#end-field" title="end-field">end-field</a></li><li><a href="#single-datetime-field" title="single-datetime-field">single-datetime-field</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + interval_leading_field_precision +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">unsigned_integer</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#interval-leading-field-precision" title="interval_leading_field_precision" shape="rect">interval_leading_field_precision</a></div> + <div>         ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#single-datetime-field" title="single-datetime-field">single-datetime-field</a></li><li><a href="#start-field" title="start-field">start-field</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + language_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LANGUAGE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#language-name" xlink:title="language_name" shape="rect"> + <rect x="89" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="93" y="13">language_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m58 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="189 10 197 6 197 14"/> + <polygon points="189 10 181 6 181 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#language-clause" title="language_clause" shape="rect">language_clause</a></div> + <div>         ::= 'LANGUAGE' <a href="#language-name" title="language_name" shape="rect">language_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-client-module-definition" title="sql-client-module-definition">sql-client-module-definition</a></li><li><a href="#alter-routine-characteristic" title="alter-routine-characteristic">alter-routine-characteristic</a></li><li><a href="#method-characteristic" title="method-characteristic">method-characteristic</a></li><li><a href="#routine-characteristic" title="routine-characteristic">routine-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + language_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="245"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ADA</text> + <rect x="43" y="29" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">C</text> + <rect x="43" y="57" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">COBOL</text> + <rect x="43" y="85" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">FORTRAN</text> + <rect x="43" y="113" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">M</text> + <rect x="43" y="141" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">MUMPS</text> + <rect x="43" y="169" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">PASCAL</text> + <rect x="43" y="197" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">PLI</text> + <rect x="43" y="225" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">SQL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m28 0 h4 m0 0 h24 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m14 0 h4 m0 0 h38 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m40 0 h4 m0 0 h12 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m16 0 h4 m0 0 h36 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m44 0 h4 m0 0 h8 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m44 0 h4 m0 0 h8 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m22 0 h4 m0 0 h30 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m26 0 h4 m0 0 h26 m23 -224 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#language-name" title="language_name" shape="rect">language_name</a></div> + <div>         ::= 'ADA'</div> + <div>           | 'C'</div> + <div>           | 'COBOL'</div> + <div>           | 'FORTRAN'</div> + <div>           | 'M'</div> + <div>           | 'MUMPS'</div> + <div>           | 'PASCAL'</div> + <div>           | 'PLI'</div> + <div>           | 'SQL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#language-clause" title="language-clause">language-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + path_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">PATH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name-list" xlink:title="schema_name_list" shape="rect"> + <rect x="63" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">schema_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="173 10 181 6 181 14"/> + <polygon points="173 10 165 6 165 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#path-specification" title="path_specification" shape="rect">path_specification</a></div> + <div>         ::= 'PATH' <a href="#schema-name-list" title="schema_name_list" shape="rect">schema_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#module-path-specification" title="module-path-specification">module-path-specification</a></li><li><a href="#schema-path-specification" title="schema-path-specification">schema-path-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_name_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name" xlink:title="schema_name" shape="rect"> + <rect x="43" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">schema_name</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m80 0 h4 m-108 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m88 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-88 0 h4 m8 0 h4 m0 0 h72 m23 28 h-3"/> + <polygon points="157 38 165 34 165 42"/> + <polygon points="157 38 149 34 149 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-name-list" title="schema_name_list" shape="rect">schema_name_list</a></div> + <div>         ::= <a href="#schema-name" title="schema_name" shape="rect">schema_name</a> ( ',' <a href="#schema-name" title="schema_name" shape="rect">schema_name</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#path-specification" title="path-specification">path-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + routine_invocation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-name" xlink:title="routine_name" shape="rect"> + <rect x="23" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">routine_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-argument-list" xlink:title="SQL_argument_list" shape="rect"> + <rect x="105" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">SQL_argument_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m74 0 h4 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#routine-invocation" title="routine_invocation" shape="rect">routine_invocation</a></div> + <div>         ::= <a href="#routine-name" title="routine_name" shape="rect">routine_name</a> <a href="#sql-argument-list" title="SQL_argument_list" shape="rect">SQL_argument_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#call-statement" title="call-statement">call-statement</a></li><li><a href="#new-invocation" title="new-invocation">new-invocation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + routine_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name" xlink:title="schema_name" shape="rect"> + <rect x="43" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">schema_name</text></a><rect x="131" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="34">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="167" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="13">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m80 0 h4 m0 0 h4 m8 0 h4 m20 -21 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#routine-name" title="routine_name" shape="rect">routine_name</a></div> + <div>         ::= ( <a href="#schema-name" title="schema_name" shape="rect">schema_name</a> '.' )? <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#routine-invocation" title="routine-invocation">routine-invocation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_argument_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" height="61"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-argument" xlink:title="SQL_argument" shape="rect"> + <rect x="83" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">SQL_argument</text></a><rect x="83" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">,</text> + <rect x="211" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="215" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m40 0 h4 m80 0 h4 m-108 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m88 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-88 0 h4 m8 0 h4 m0 0 h72 m-128 28 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v1 m148 0 v-1 m-148 1 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h10 m0 0 h118 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="237 38 245 34 245 42"/> + <polygon points="237 38 229 34 229 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-argument-list" title="SQL_argument_list" shape="rect">SQL_argument_list</a></div> + <div>         ::= '(' ( <a href="#sql-argument" title="SQL_argument" shape="rect">SQL_argument</a> ( ',' <a href="#sql-argument" title="SQL_argument" shape="rect">SQL_argument</a> )* )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#direct-invocation" title="direct-invocation">direct-invocation</a></li><li><a href="#generalized-invocation" title="generalized-invocation">generalized-invocation</a></li><li><a href="#new-specification" title="new-specification">new-specification</a></li><li><a href="#routine-invocation" title="routine-invocation">routine-invocation</a></li><li><a href="#static-method-invocation" title="static-method-invocation">static-method-invocation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_argument +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="343" height="154"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lambda" xlink:title="lambda" shape="rect"> + <rect x="43" y="1" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">lambda</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#generalized-expression" xlink:title="generalized_expression" shape="rect"> + <rect x="161" y="50" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="62">generalized_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#named-argument-specification" xlink:title="named_argument_specification" shape="rect"> + <rect x="43" y="78" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="90">named_argument_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="43" y="106" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="118">contextually_typed_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-specification" xlink:title="target_specification" shape="rect"> + <rect x="43" y="134" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="146">target_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m44 0 h4 m0 0 h212 m-284 0 h20 m264 0 h20 m-304 0 q10 0 10 10 m284 0 q0 -10 10 -10 m-294 10 v8 m284 0 v-8 m-284 8 q0 10 10 10 m264 0 q10 0 10 -10 m-274 10 h4 m90 0 h4 m20 0 h10 m0 0 h116 m-146 0 h20 m126 0 h20 m-166 0 q10 0 10 10 m146 0 q0 -10 10 -10 m-156 10 v1 m146 0 v-1 m-146 1 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h4 m118 0 h4 m-254 -31 v20 m284 0 v-20 m-284 20 v29 m284 0 v-29 m-284 29 q0 10 10 10 m264 0 q10 0 10 -10 m-274 10 h4 m154 0 h4 m0 0 h102 m-274 -10 v20 m284 0 v-20 m-284 20 v8 m284 0 v-8 m-284 8 q0 10 10 10 m264 0 q10 0 10 -10 m-274 10 h4 m184 0 h4 m0 0 h72 m-274 -10 v20 m284 0 v-20 m-284 20 v8 m284 0 v-8 m-284 8 q0 10 10 10 m264 0 q10 0 10 -10 m-274 10 h4 m96 0 h4 m0 0 h160 m23 -133 h-3"/> + <polygon points="333 10 341 6 341 14"/> + <polygon points="333 10 325 6 325 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-argument" title="SQL_argument" shape="rect">SQL_argument</a></div> + <div>         ::= <a href="#lambda" title="lambda" shape="rect">lambda</a></div> + <div>           | <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> <a href="#generalized-expression" title="generalized_expression" shape="rect">generalized_expression</a>?</div> + <div>           | <a href="#named-argument-specification" title="named_argument_specification" shape="rect">named_argument_specification</a></div> + <div>           | <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div> + <div>           | <a href="#target-specification" title="target_specification" shape="rect">target_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-argument-list" title="sql-argument-list">sql-argument-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + generalized_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="275" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="51" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="55" y="13">path_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m200 0 h4 m3 0 h-3"/> + <polygon points="265 10 273 6 273 14"/> + <polygon points="265 10 257 6 257 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#generalized-expression" title="generalized_expression" shape="rect">generalized_expression</a></div> + <div>         ::= 'AS' <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-argument" title="sql-argument">sql-argument</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + named_argument_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="303" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><rect x="77" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">=></text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#named-argument-sql-argument" xlink:title="named_argument_SQL_argument" shape="rect"> + <rect x="107" y="1" width="172" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="13">named_argument_SQL_argument</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m22 0 h4 m0 0 h4 m172 0 h4 m3 0 h-3"/> + <polygon points="293 10 301 6 301 14"/> + <polygon points="293 10 285 6 285 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#named-argument-specification" title="named_argument_specification" shape="rect">named_argument_specification</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> '=>' <a href="#named-argument-sql-argument" title="named_argument_SQL_argument" shape="rect">named_argument_SQL_argument</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-argument" title="sql-argument">sql-argument</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + named_argument_SQL_argument +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="271" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="43" y="29" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">contextually_typed_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-specification" xlink:title="target_specification" shape="rect"> + <rect x="43" y="57" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">target_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h94 m-212 0 h20 m192 0 h20 m-232 0 q10 0 10 10 m212 0 q0 -10 10 -10 m-222 10 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m184 0 h4 m-202 -10 v20 m212 0 v-20 m-212 20 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m96 0 h4 m0 0 h88 m23 -56 h-3"/> + <polygon points="261 10 269 6 269 14"/> + <polygon points="261 10 253 6 253 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#named-argument-sql-argument" title="named_argument_SQL_argument" shape="rect">named_argument_SQL_argument</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>           | <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div> + <div>           | <a href="#target-specification" title="target_specification" shape="rect">target_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#named-argument-specification" title="named-argument-specification">named-argument-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_set_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="309" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#standard-character-set-name" xlink:title="standard_character_set_name" shape="rect"> + <rect x="43" y="1" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">standard_character_set_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#implementation-defined-character-set-name" xlink:title="implementation_defined_character_set_name" shape="rect"> + <rect x="43" y="29" width="222" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">implementation_defined_character_set_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-character-set-name" xlink:title="user_defined_character_set_name" shape="rect"> + <rect x="43" y="57" width="170" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">user_defined_character_set_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m152 0 h4 m0 0 h70 m-250 0 h20 m230 0 h20 m-270 0 q10 0 10 10 m250 0 q0 -10 10 -10 m-260 10 v8 m250 0 v-8 m-250 8 q0 10 10 10 m230 0 q10 0 10 -10 m-240 10 h4 m222 0 h4 m-240 -10 v20 m250 0 v-20 m-250 20 v8 m250 0 v-8 m-250 8 q0 10 10 10 m230 0 q10 0 10 -10 m-240 10 h4 m170 0 h4 m0 0 h52 m23 -56 h-3"/> + <polygon points="299 10 307 6 307 14"/> + <polygon points="299 10 291 6 291 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a></div> + <div>         ::= <a href="#standard-character-set-name" title="standard_character_set_name" shape="rect">standard_character_set_name</a></div> + <div>           | <a href="#implementation-defined-character-set-name" title="implementation_defined_character_set_name" shape="rect">implementation_defined_character_set_name</a></div> + <div>           | <a href="#user-defined-character-set-name" title="user_defined_character_set_name" shape="rect">user_defined_character_set_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-character-string-literal" title="unicode-character-string-literal">unicode-character-string-literal</a></li><li><a href="#character-set-source" title="character-set-source">character-set-source</a></li><li><a href="#character-set-specification-list" title="character-set-specification-list">character-set-specification-list</a></li><li><a href="#character-string-literal" title="character-string-literal">character-string-literal</a></li><li><a href="#collation-definition" title="collation-definition">collation-definition</a></li><li><a href="#module-character-set-specification" title="module-character-set-specification">module-character-set-specification</a></li><li><a href="#predefined-type" title="predefined-type">predefined-type</a></li><li><a href="#schema-character-set-specification" title="schema-character-set-specification">schema-character-set-specification</a></li><li><a href="#source-character-set-specification" title="source-character-set-specification">source-character-set-specification</a></li><li><a href="#target-character-set-specification" title="target-character-set-specification">target-character-set-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + standard_character_set_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="151" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-name" xlink:title="character_set_name" shape="rect"> + <rect x="23" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_set_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m104 0 h4 m3 0 h-3"/> + <polygon points="141 10 149 6 149 14"/> + <polygon points="141 10 133 6 133 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#standard-character-set-name" title="standard_character_set_name" shape="rect">standard_character_set_name</a></div> + <div>         ::= <a href="#character-set-name" title="character_set_name" shape="rect">character_set_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-set-specification" title="character-set-specification">character-set-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + implementation_defined_character_set_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="151" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-name" xlink:title="character_set_name" shape="rect"> + <rect x="23" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_set_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m104 0 h4 m3 0 h-3"/> + <polygon points="141 10 149 6 149 14"/> + <polygon points="141 10 133 6 133 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#implementation-defined-character-set-name" title="implementation_defined_character_set_name" shape="rect">implementation_defined_character_set_name</a></div> + <div>         ::= <a href="#character-set-name" title="character_set_name" shape="rect">character_set_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-set-specification" title="character-set-specification">character-set-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_character_set_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="151" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-name" xlink:title="character_set_name" shape="rect"> + <rect x="23" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_set_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m104 0 h4 m3 0 h-3"/> + <polygon points="141 10 149 6 149 14"/> + <polygon points="141 10 133 6 133 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-character-set-name" title="user_defined_character_set_name" shape="rect">user_defined_character_set_name</a></div> + <div>         ::= <a href="#character-set-name" title="character_set_name" shape="rect">character_set_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-set-specification" title="character-set-specification">character-set-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + specific_routine_designator +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="545" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">SPECIFIC</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-type" xlink:title="routine_type" shape="rect"> + <rect x="99" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">routine_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="175" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="179" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-type" xlink:title="routine_type" shape="rect"> + <rect x="43" y="29" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">routine_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#member-name" xlink:title="member_name" shape="rect"> + <rect x="119" y="29" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="41">member_name</text></a><rect x="231" y="50" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="62">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="265" y="50" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="269" y="62">schema_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m48 0 h4 m0 0 h4 m68 0 h4 m0 0 h4 m122 0 h4 m0 0 h204 m-486 0 h20 m466 0 h20 m-506 0 q10 0 10 10 m486 0 q0 -10 10 -10 m-496 10 v8 m486 0 v-8 m-486 8 q0 10 10 10 m466 0 q10 0 10 -10 m-476 10 h4 m68 0 h4 m0 0 h4 m84 0 h4 m20 0 h10 m0 0 h248 m-278 0 h20 m258 0 h20 m-298 0 q10 0 10 10 m278 0 q0 -10 10 -10 m-288 10 v1 m278 0 v-1 m-278 1 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m26 0 h4 m0 0 h4 m216 0 h4 m43 -49 h-3"/> + <polygon points="535 10 543 6 543 14"/> + <polygon points="535 10 527 6 527 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div> + <div>         ::= 'SPECIFIC' <a href="#routine-type" title="routine_type" shape="rect">routine_type</a> <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div> + <div>           | <a href="#routine-type" title="routine_type" shape="rect">routine_type</a> <a href="#member-name" title="member_name" shape="rect">member_name</a> ( 'FOR' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-routine-statement" title="alter-routine-statement">alter-routine-statement</a></li><li><a href="#cast-function" title="cast-function">cast-function</a></li><li><a href="#drop-routine-statement" title="drop-routine-statement">drop-routine-statement</a></li><li><a href="#from-sql-function" title="from-sql-function">from-sql-function</a></li><li><a href="#map-function-specification" title="map-function-specification">map-function-specification</a></li><li><a href="#object-name" title="object-name">object-name</a></li><li><a href="#privilege-method-list" title="privilege-method-list">privilege-method-list</a></li><li><a href="#relative-function-specification" title="relative-function-specification">relative-function-specification</a></li><li><a href="#result-set-cursor" title="result-set-cursor">result-set-cursor</a></li><li><a href="#to-sql-function" title="to-sql-function">to-sql-function</a></li><li><a href="#transliteration-routine" title="transliteration-routine">transliteration-routine</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + routine_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="182"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ROUTINE</text> + <rect x="43" y="29" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">FUNCTION</text> + <rect x="43" y="57" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">PROCEDURE</text> + <rect x="63" y="106" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="118">INSTANCE</text> + <rect x="63" y="134" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="146">STATIC</text> + <rect x="63" y="162" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="174">CONSTRUCTOR</text> + <rect x="169" y="85" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="97">METHOD</text> + <path class="line" d="m17 10 h2 m20 0 h4 m50 0 h4 m0 0 h124 m-202 0 h20 m182 0 h20 m-222 0 q10 0 10 10 m202 0 q0 -10 10 -10 m-212 10 v8 m202 0 v-8 m-202 8 q0 10 10 10 m182 0 q10 0 10 -10 m-192 10 h4 m56 0 h4 m0 0 h118 m-192 -10 v20 m202 0 v-20 m-202 20 v8 m202 0 v-8 m-202 8 q0 10 10 10 m182 0 q10 0 10 -10 m-192 10 h4 m64 0 h4 m0 0 h110 m-192 -10 v20 m202 0 v-20 m-202 20 v8 m202 0 v-8 m-202 8 q0 10 10 10 m182 0 q10 0 10 -10 m-172 10 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m54 0 h4 m0 0 h24 m-96 -10 v20 m106 0 v-20 m-106 20 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m40 0 h4 m0 0 h38 m-96 -10 v20 m106 0 v-20 m-106 20 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m20 -77 h4 m48 0 h4 m23 -84 h-3"/> + <polygon points="251 10 259 6 259 14"/> + <polygon points="251 10 243 6 243 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#routine-type" title="routine_type" shape="rect">routine_type</a></div> + <div>         ::= 'ROUTINE'</div> + <div>           | 'FUNCTION'</div> + <div>           | 'PROCEDURE'</div> + <div>           | ( 'INSTANCE' | 'STATIC' | 'CONSTRUCTOR' )? 'METHOD'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#specific-routine-designator" title="specific-routine-designator">specific-routine-designator</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + member_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="311" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#member-name-alternatives" xlink:title="member_name_alternatives" shape="rect"> + <rect x="23" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">member_name_alternatives</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type-list" xlink:title="data_type_list" shape="rect"> + <rect x="193" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="34">data_type_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m142 0 h4 m20 0 h10 m0 0 h72 m-102 0 h20 m82 0 h20 m-122 0 q10 0 10 10 m102 0 q0 -10 10 -10 m-112 10 v1 m102 0 v-1 m-102 1 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m74 0 h4 m23 -21 h-3"/> + <polygon points="301 10 309 6 309 14"/> + <polygon points="301 10 293 6 293 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#member-name" title="member_name" shape="rect">member_name</a></div> + <div>         ::= <a href="#member-name-alternatives" title="member_name_alternatives" shape="rect">member_name_alternatives</a> <a href="#data-type-list" title="data_type_list" shape="rect">data_type_list</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#specific-routine-designator" title="specific-routine-designator">specific-routine-designator</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + member_name_alternatives +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="43" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m122 0 h4 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v8 m150 0 v-8 m-150 8 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m46 0 h4 m0 0 h76 m23 -28 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#member-name-alternatives" title="member_name_alternatives" shape="rect">member_name_alternatives</a></div> + <div>         ::= <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div> + <div>           | <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#member-name" title="member-name">member-name</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + data_type_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="61"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="83" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">data_type</text></a><rect x="83" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">,</text> + <rect x="187" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m40 0 h4 m56 0 h4 m-84 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m64 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-64 0 h4 m8 0 h4 m0 0 h48 m-104 28 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h10 m0 0 h94 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="213 38 221 34 221 42"/> + <polygon points="213 38 205 34 205 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#data-type-list" title="data_type_list" shape="rect">data_type_list</a></div> + <div>         ::= '(' ( <a href="#data-type" title="data_type" shape="rect">data_type</a> ( ',' <a href="#data-type" title="data_type" shape="rect">data_type</a> )* )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#member-name" title="member-name">member-name</a></li><li><a href="#specific-method-specification-designator" title="specific-method-specification-designator">specific-method-specification-designator</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + collate_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">COLLATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="79" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="83" y="13">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a></div> + <div>         ::= 'COLLATE' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#attribute-definition" title="attribute-definition">attribute-definition</a></li><li><a href="#character-factor" title="character-factor">character-factor</a></li><li><a href="#character-set-definition" title="character-set-definition">character-set-definition</a></li><li><a href="#column-definition" title="column-definition">column-definition</a></li><li><a href="#domain-definition" title="domain-definition">domain-definition</a></li><li><a href="#grouping-column-reference" title="grouping-column-reference">grouping-column-reference</a></li><li><a href="#predefined-type" title="predefined-type">predefined-type</a></li><li><a href="#window-partition-column-reference" title="window-partition-column-reference">window-partition-column-reference</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + constraint_name_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="245" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CONSTRAINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="99" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m68 0 h4 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="235 10 243 6 243 14"/> + <polygon points="235 10 227 6 227 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#constraint-name-definition" title="constraint_name_definition" shape="rect">constraint_name_definition</a></div> + <div>         ::= 'CONSTRAINT' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-constraint-definition" title="column-constraint-definition">column-constraint-definition</a></li><li><a href="#domain-constraint" title="domain-constraint">domain-constraint</a></li><li><a href="#table-constraint-definition" title="table-constraint-definition">table-constraint-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + constraint_characteristics +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="593" height="140"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-check-time" xlink:title="constraint_check_time" shape="rect"> + <rect x="63" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">constraint_check_time</text></a><rect x="221" y="43" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="55">NOT</text> + <rect x="277" y="22" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="281" y="34">DEFERRABLE</text> + <rect x="83" y="92" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="104">NOT</text> + <rect x="139" y="71" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="83">DEFERRABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-check-time" xlink:title="constraint_check_time" shape="rect"> + <rect x="233" y="92" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="237" y="104">constraint_check_time</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-enforcement" xlink:title="constraint_enforcement" shape="rect"> + <rect x="411" y="22" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="415" y="34">constraint_enforcement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-enforcement" xlink:title="constraint_enforcement" shape="rect"> + <rect x="43" y="120" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="132">constraint_enforcement</text></a><path class="line" d="m17 10 h2 m40 0 h4 m110 0 h4 m20 0 h10 m0 0 h140 m-170 0 h20 m150 0 h20 m-190 0 q10 0 10 10 m170 0 q0 -10 10 -10 m-180 10 v1 m170 0 v-1 m-170 1 q0 10 10 10 m150 0 q10 0 10 -10 m-140 10 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m66 0 h4 m-308 -21 h20 m308 0 h20 m-348 0 q10 0 10 10 m328 0 q0 -10 10 -10 m-338 10 v50 m328 0 v-50 m-328 50 q0 10 10 10 m308 0 q10 0 10 -10 m-298 10 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m66 0 h4 m20 0 h10 m0 0 h108 m-138 0 h20 m118 0 h20 m-158 0 q10 0 10 10 m138 0 q0 -10 10 -10 m-148 10 v1 m138 0 v-1 m-138 1 q0 10 10 10 m118 0 q10 0 10 -10 m-128 10 h4 m110 0 h4 m60 -91 h10 m0 0 h116 m-146 0 h20 m126 0 h20 m-166 0 q10 0 10 10 m146 0 q0 -10 10 -10 m-156 10 v1 m146 0 v-1 m-146 1 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h4 m118 0 h4 m-514 -21 h20 m514 0 h20 m-554 0 q10 0 10 10 m534 0 q0 -10 10 -10 m-544 10 v99 m534 0 v-99 m-534 99 q0 10 10 10 m514 0 q10 0 10 -10 m-524 10 h4 m118 0 h4 m0 0 h388 m23 -119 h-3"/> + <polygon points="583 10 591 6 591 14"/> + <polygon points="583 10 575 6 575 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#constraint-characteristics" title="constraint_characteristics" shape="rect">constraint_characteristics</a></div> + <div>         ::= ( <a href="#constraint-check-time" title="constraint_check_time" shape="rect">constraint_check_time</a> ( 'NOT'? 'DEFERRABLE' )? | 'NOT'? 'DEFERRABLE' <a href="#constraint-check-time" title="constraint_check_time" shape="rect">constraint_check_time</a>? ) <a href="#constraint-enforcement" title="constraint_enforcement" shape="rect">constraint_enforcement</a>?</div> + <div>           | <a href="#constraint-enforcement" title="constraint_enforcement" shape="rect">constraint_enforcement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#assertion-definition" title="assertion-definition">assertion-definition</a></li><li><a href="#column-constraint-definition" title="column-constraint-definition">column-constraint-definition</a></li><li><a href="#domain-constraint" title="domain-constraint">domain-constraint</a></li><li><a href="#table-constraint-definition" title="table-constraint-definition">table-constraint-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + constraint_check_time +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="207" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">INITIALLY</text> + <rect x="103" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="13">DEFERRED</text> + <rect x="103" y="29" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="41">IMMEDIATE</text> + <path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m20 0 h4 m54 0 h4 m0 0 h6 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m23 -28 h-3"/> + <polygon points="197 10 205 6 205 14"/> + <polygon points="197 10 189 6 189 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#constraint-check-time" title="constraint_check_time" shape="rect">constraint_check_time</a></div> + <div>         ::= 'INITIALLY' ( 'DEFERRED' | 'IMMEDIATE' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#constraint-characteristics" title="constraint-characteristics">constraint-characteristics</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + constraint_enforcement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">ENFORCED</text> + <path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m58 0 h4 m3 0 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#constraint-enforcement" title="constraint_enforcement" shape="rect">constraint_enforcement</a></div> + <div>         ::= 'NOT'? 'ENFORCED'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-constraint-definition" title="alter-table-constraint-definition">alter-table-constraint-definition</a></li><li><a href="#constraint-characteristics" title="constraint-characteristics">constraint-characteristics</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + aggregate_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="323" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">COUNT</text> + <rect x="91" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="13">(</text> + <rect x="111" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="13">*</text> + <rect x="133" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#count" xlink:title="count" shape="rect"> + <rect x="43" y="29" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">count</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#general-set-function" xlink:title="general_set_function" shape="rect"> + <rect x="43" y="57" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">general_set_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-set-function" xlink:title="binary_set_function" shape="rect"> + <rect x="43" y="85" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">binary_set_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordered-set-function" xlink:title="ordered_set_function" shape="rect"> + <rect x="43" y="113" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">ordered_set_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#array-aggregate-function" xlink:title="array_aggregate_function" shape="rect"> + <rect x="43" y="141" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">array_aggregate_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#presto-aggregations" xlink:title="presto_aggregations" shape="rect"> + <rect x="43" y="169" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">presto_aggregations</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#filter-clause" xlink:title="filter_clause" shape="rect"> + <rect x="219" y="22" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="223" y="34">filter_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m12 0 h4 m0 0 h26 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m34 0 h4 m0 0 h94 m-146 -10 v20 m156 0 v-20 m-156 20 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m104 0 h4 m0 0 h24 m-146 -10 v20 m156 0 v-20 m-156 20 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m98 0 h4 m0 0 h30 m-146 -10 v20 m156 0 v-20 m-156 20 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m106 0 h4 m0 0 h22 m-146 -10 v20 m156 0 v-20 m-156 20 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m128 0 h4 m-146 -10 v20 m156 0 v-20 m-156 20 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m106 0 h4 m0 0 h22 m40 -168 h10 m0 0 h58 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v1 m88 0 v-1 m-88 1 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m23 -21 h-3"/> + <polygon points="313 10 321 6 321 14"/> + <polygon points="313 10 305 6 305 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#aggregate-function" title="aggregate_function" shape="rect">aggregate_function</a></div> + <div>         ::= ( 'COUNT' '(' '*' ')' | <a href="#count" title="count" shape="rect">count</a> | <a href="#general-set-function" title="general_set_function" shape="rect">general_set_function</a> | <a href="#binary-set-function" title="binary_set_function" shape="rect">binary_set_function</a> | <a href="#ordered-set-function" title="ordered_set_function" shape="rect">ordered_set_function</a> | <a href="#array-aggregate-function" title="array_aggregate_function" shape="rect">array_aggregate_function</a> | <a href="#presto-aggregations" title="presto_aggregations" shape="rect">presto_aggregations</a> ) <a href="#filter-clause" title="filter_clause" shape="rect">filter_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-function-specification" title="set-function-specification">set-function-specification</a></li><li><a href="#window-function-type" title="window-function-type">window-function-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + general_set_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="539" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-function-type" xlink:title="set_function_type" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">set_function_type</text></a><rect x="121" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-quantifier" xlink:title="set_quantifier" shape="rect"> + <rect x="161" y="22" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="34">set_quantifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="259" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extra-args-to-agg" xlink:title="extra_args_to_agg" shape="rect"> + <rect x="377" y="22" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="381" y="34">extra_args_to_agg</text></a><rect x="503" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="507" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h68 m-98 0 h20 m78 0 h20 m-118 0 q10 0 10 10 m98 0 q0 -10 10 -10 m-108 10 v1 m98 0 v-1 m-98 1 q0 10 10 10 m78 0 q10 0 10 -10 m-88 10 h4 m70 0 h4 m20 -21 h4 m90 0 h4 m20 0 h10 m0 0 h96 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v1 m126 0 v-1 m-126 1 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m98 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="529 10 537 6 537 14"/> + <polygon points="529 10 521 6 521 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#general-set-function" title="general_set_function" shape="rect">general_set_function</a></div> + <div>         ::= <a href="#set-function-type" title="set_function_type" shape="rect">set_function_type</a> '(' <a href="#set-quantifier" title="set_quantifier" shape="rect">set_quantifier</a>? <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> <a href="#extra-args-to-agg" title="extra_args_to_agg" shape="rect">extra_args_to_agg</a>? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#aggregate-function" title="aggregate-function">aggregate-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_function_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="171" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#computational-operation" xlink:title="computational_operation" shape="rect"> + <rect x="23" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">computational_operation</text></a><path class="line" d="m17 10 h2 m0 0 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="161 10 169 6 169 14"/> + <polygon points="161 10 153 6 153 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-function-type" title="set_function_type" shape="rect">set_function_type</a></div> + <div>         ::= <a href="#computational-operation" title="computational_operation" shape="rect">computational_operation</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-set-function" title="general-set-function">general-set-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + computational_operation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="163" height="413"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">AVG</text> + <rect x="43" y="29" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">MAX</text> + <rect x="43" y="57" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">MIN</text> + <rect x="43" y="85" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">SUM</text> + <rect x="43" y="113" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">EVERY</text> + <rect x="43" y="141" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">ANY</text> + <rect x="43" y="169" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">SOME</text> + <rect x="43" y="197" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">COUNT</text> + <rect x="43" y="225" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">STDDEV_POP</text> + <rect x="43" y="253" width="76" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">STDDEV_SAMP</text> + <rect x="43" y="281" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">VAR_SAMP</text> + <rect x="43" y="309" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">VAR_POP</text> + <rect x="43" y="337" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="349">COLLECT</text> + <rect x="43" y="365" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="377">FUSION</text> + <rect x="43" y="393" width="76" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="405">INTERSECTION</text> + <path class="line" d="m17 10 h2 m20 0 h4 m26 0 h4 m0 0 h50 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m28 0 h4 m0 0 h48 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m26 0 h4 m0 0 h50 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m28 0 h4 m0 0 h48 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m36 0 h4 m0 0 h40 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m26 0 h4 m0 0 h50 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m36 0 h4 m0 0 h40 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m40 0 h4 m0 0 h36 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m70 0 h4 m0 0 h6 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m76 0 h4 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m60 0 h4 m0 0 h16 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m52 0 h4 m0 0 h24 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m48 0 h4 m0 0 h28 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m44 0 h4 m0 0 h32 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m76 0 h4 m23 -392 h-3"/> + <polygon points="153 10 161 6 161 14"/> + <polygon points="153 10 145 6 145 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#computational-operation" title="computational_operation" shape="rect">computational_operation</a></div> + <div>         ::= 'AVG'</div> + <div>           | 'MAX'</div> + <div>           | 'MIN'</div> + <div>           | 'SUM'</div> + <div>           | 'EVERY'</div> + <div>           | 'ANY'</div> + <div>           | 'SOME'</div> + <div>           | 'COUNT'</div> + <div>           | 'STDDEV_POP'</div> + <div>           | 'STDDEV_SAMP'</div> + <div>           | 'VAR_SAMP'</div> + <div>           | 'VAR_POP'</div> + <div>           | 'COLLECT'</div> + <div>           | 'FUSION'</div> + <div>           | 'INTERSECTION'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-function-type" title="set-function-type">set-function-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_quantifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">DISTINCT</text> + <rect x="43" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">ALL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m50 0 h4 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m24 0 h4 m0 0 h26 m23 -28 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-quantifier" title="set_quantifier" shape="rect">set_quantifier</a></div> + <div>         ::= 'DISTINCT'</div> + <div>           | 'ALL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#count" title="count">count</a></li><li><a href="#general-set-function" title="general-set-function">general-set-function</a></li><li><a href="#group-by-clause" title="group-by-clause">group-by-clause</a></li><li><a href="#presto-aggregations" title="presto-aggregations">presto-aggregations</a></li><li><a href="#query-specification" title="query-specification">query-specification</a></li><li><a href="#select-statement-single-row" title="select-statement-single-row">select-statement-single-row</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + filter_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="269" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FILTER</text> + <rect x="69" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="13">(</text> + <rect x="89" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="139" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="143" y="13">search_condition</text></a><rect x="233" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="259 10 267 6 267 14"/> + <polygon points="259 10 251 6 251 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#filter-clause" title="filter_clause" shape="rect">filter_clause</a></div> + <div>         ::= 'FILTER' '(' 'WHERE' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#aggregate-function" title="aggregate-function">aggregate-function</a></li><li><a href="#udaf-filter" title="udaf-filter">udaf-filter</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_set_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="563" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#binary-set-function-type" xlink:title="binary_set_function_type" shape="rect"> + <rect x="23" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">binary_set_function_type</text></a><rect x="155" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="159" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dependent-variable-expression" xlink:title="dependent_variable_expression" shape="rect"> + <rect x="175" y="1" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="179" y="13">dependent_variable_expression</text></a><rect x="339" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="343" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#independent-variable-expression" xlink:title="independent_variable_expression" shape="rect"> + <rect x="355" y="1" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="359" y="13">independent_variable_expression</text></a><rect x="527" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="531" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m124 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m156 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m164 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="553 10 561 6 561 14"/> + <polygon points="553 10 545 6 545 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-set-function" title="binary_set_function" shape="rect">binary_set_function</a></div> + <div>         ::= <a href="#binary-set-function-type" title="binary_set_function_type" shape="rect">binary_set_function_type</a> '(' <a href="#dependent-variable-expression" title="dependent_variable_expression" shape="rect">dependent_variable_expression</a> ',' <a href="#independent-variable-expression" title="independent_variable_expression" shape="rect">independent_variable_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#aggregate-function" title="aggregate-function">aggregate-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_set_function_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="175" height="329"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">COVAR_POP</text> + <rect x="43" y="29" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">COVAR_SAMP</text> + <rect x="43" y="57" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">CORR</text> + <rect x="43" y="85" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">REGR_SLOPE</text> + <rect x="43" y="113" width="88" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">REGR_INTERCEPT</text> + <rect x="43" y="141" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">REGR_COUNT</text> + <rect x="43" y="169" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">REGR_R2</text> + <rect x="43" y="197" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">REGR_AVGX</text> + <rect x="43" y="225" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">REGR_AVGY</text> + <rect x="43" y="253" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">REGR_SXX</text> + <rect x="43" y="281" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">REGR_SYY</text> + <rect x="43" y="309" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">REGR_SXY</text> + <path class="line" d="m17 10 h2 m20 0 h4 m66 0 h4 m0 0 h22 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m74 0 h4 m0 0 h14 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m34 0 h4 m0 0 h54 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m68 0 h4 m0 0 h20 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m88 0 h4 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m72 0 h4 m0 0 h16 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m50 0 h4 m0 0 h38 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m64 0 h4 m0 0 h24 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m64 0 h4 m0 0 h24 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m56 0 h4 m0 0 h32 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m56 0 h4 m0 0 h32 m-106 -10 v20 m116 0 v-20 m-116 20 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m56 0 h4 m0 0 h32 m23 -308 h-3"/> + <polygon points="165 10 173 6 173 14"/> + <polygon points="165 10 157 6 157 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-set-function-type" title="binary_set_function_type" shape="rect">binary_set_function_type</a></div> + <div>         ::= 'COVAR_POP'</div> + <div>           | 'COVAR_SAMP'</div> + <div>           | 'CORR'</div> + <div>           | 'REGR_SLOPE'</div> + <div>           | 'REGR_INTERCEPT'</div> + <div>           | 'REGR_COUNT'</div> + <div>           | 'REGR_R2'</div> + <div>           | 'REGR_AVGX'</div> + <div>           | 'REGR_AVGY'</div> + <div>           | 'REGR_SXX'</div> + <div>           | 'REGR_SYY'</div> + <div>           | 'REGR_SXY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-set-function" title="binary-set-function">binary-set-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dependent_variable_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">numeric_value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dependent-variable-expression" title="dependent_variable_expression" shape="rect">dependent_variable_expression</a></div> + <div>         ::= <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-set-function" title="binary-set-function">binary-set-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + independent_variable_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">numeric_value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#independent-variable-expression" title="independent_variable_expression" shape="rect">independent_variable_expression</a></div> + <div>         ::= <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-set-function" title="binary-set-function">binary-set-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ordered_set_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hypothetical-set-function" xlink:title="hypothetical_set_function" shape="rect"> + <rect x="43" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">hypothetical_set_function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#inverse-distribution-function" xlink:title="inverse_distribution_function" shape="rect"> + <rect x="43" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">inverse_distribution_function</text></a><path class="line" d="m17 10 h2 m20 0 h4 m124 0 h4 m0 0 h12 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m23 -28 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#ordered-set-function" title="ordered_set_function" shape="rect">ordered_set_function</a></div> + <div>         ::= <a href="#hypothetical-set-function" title="hypothetical_set_function" shape="rect">hypothetical_set_function</a></div> + <div>           | <a href="#inverse-distribution-function" title="inverse_distribution_function" shape="rect">inverse_distribution_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#aggregate-function" title="aggregate-function">aggregate-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + hypothetical_set_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="551" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rank-function-type" xlink:title="rank_function_type" shape="rect"> + <rect x="23" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">rank_function_type</text></a><rect x="127" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hypothetical-set-function-value-expression-list" xlink:title="hypothetical_set_function_value_expression_list" shape="rect"> + <rect x="147" y="1" width="226" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="13">hypothetical_set_function_value_expression_list</text></a><rect x="381" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="385" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#within-group-specification" xlink:title="within_group_specification" shape="rect"> + <rect x="401" y="1" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="405" y="13">within_group_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m226 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m126 0 h4 m3 0 h-3"/> + <polygon points="541 10 549 6 549 14"/> + <polygon points="541 10 533 6 533 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#hypothetical-set-function" title="hypothetical_set_function" shape="rect">hypothetical_set_function</a></div> + <div>         ::= <a href="#rank-function-type" title="rank_function_type" shape="rect">rank_function_type</a> '(' <a href="#hypothetical-set-function-value-expression-list" title="hypothetical_set_function_value_expression_list" shape="rect">hypothetical_set_function_value_expression_list</a> ')' <a href="#within-group-specification" title="within_group_specification" shape="rect">within_group_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ordered-set-function" title="ordered-set-function">ordered-set-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + within_group_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="367" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WITHIN</text> + <rect x="75" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="13">GROUP</text> + <rect x="125" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">(</text> + <rect x="145" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="13">ORDER</text> + <rect x="193" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="197" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sort-specification-list" xlink:title="sort_specification_list" shape="rect"> + <rect x="221" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="13">sort_specification_list</text></a><rect x="331" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="335" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m40 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m102 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="357 10 365 6 365 14"/> + <polygon points="357 10 349 6 349 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#within-group-specification" title="within_group_specification" shape="rect">within_group_specification</a></div> + <div>         ::= 'WITHIN' 'GROUP' '(' 'ORDER' 'BY' <a href="#sort-specification-list" title="sort_specification_list" shape="rect">sort_specification_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#hypothetical-set-function" title="hypothetical-set-function">hypothetical-set-function</a></li><li><a href="#inverse-distribution-function" title="inverse-distribution-function">inverse-distribution-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + hypothetical_set_function_value_expression_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">value_expression</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m90 0 h4 m-118 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m98 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-98 0 h4 m8 0 h4 m0 0 h82 m23 28 h-3"/> + <polygon points="167 38 175 34 175 42"/> + <polygon points="167 38 159 34 159 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#hypothetical-set-function-value-expression-list" title="hypothetical_set_function_value_expression_list" shape="rect">hypothetical_set_function_value_expression_list</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ( ',' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#hypothetical-set-function" title="hypothetical-set-function">hypothetical-set-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + inverse_distribution_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="579" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#inverse-distribution-function-type" xlink:title="inverse_distribution_function_type" shape="rect"> + <rect x="23" y="1" width="162" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">inverse_distribution_function_type</text></a><rect x="193" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="197" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#inverse-distribution-function-argument" xlink:title="inverse_distribution_function_argument" shape="rect"> + <rect x="213" y="1" width="188" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="13">inverse_distribution_function_argument</text></a><rect x="409" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="413" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#within-group-specification" xlink:title="within_group_specification" shape="rect"> + <rect x="429" y="1" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="433" y="13">within_group_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m162 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m188 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m126 0 h4 m3 0 h-3"/> + <polygon points="569 10 577 6 577 14"/> + <polygon points="569 10 561 6 561 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#inverse-distribution-function" title="inverse_distribution_function" shape="rect">inverse_distribution_function</a></div> + <div>         ::= <a href="#inverse-distribution-function-type" title="inverse_distribution_function_type" shape="rect">inverse_distribution_function_type</a> '(' <a href="#inverse-distribution-function-argument" title="inverse_distribution_function_argument" shape="rect">inverse_distribution_function_argument</a> ')' <a href="#within-group-specification" title="within_group_specification" shape="rect">within_group_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ordered-set-function" title="ordered-set-function">ordered-set-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + inverse_distribution_function_argument +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numeric-value-expression" xlink:title="numeric_value_expression" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">numeric_value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#inverse-distribution-function-argument" title="inverse_distribution_function_argument" shape="rect">inverse_distribution_function_argument</a></div> + <div>         ::= <a href="#numeric-value-expression" title="numeric_value_expression" shape="rect">numeric_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#inverse-distribution-function" title="inverse-distribution-function">inverse-distribution-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + inverse_distribution_function_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="94" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">PERCENTILE_CONT</text> + <rect x="43" y="29" width="90" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">PERCENTILE_DISC</text> + <path class="line" d="m17 10 h2 m20 0 h4 m94 0 h4 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v8 m122 0 v-8 m-122 8 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m90 0 h4 m0 0 h4 m23 -28 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#inverse-distribution-function-type" title="inverse_distribution_function_type" shape="rect">inverse_distribution_function_type</a></div> + <div>         ::= 'PERCENTILE_CONT'</div> + <div>           | 'PERCENTILE_DISC'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#inverse-distribution-function" title="inverse-distribution-function">inverse-distribution-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + array_aggregate_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="573" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ARRAY_AGG</text> + <rect x="95" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="13">(</text> + <rect x="135" y="22" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="34">DISTINCT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="213" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="13">value_expression</text></a><rect x="331" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="335" y="34">ORDER</text> + <rect x="379" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="383" y="34">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sort-specification-list" xlink:title="sort_specification_list" shape="rect"> + <rect x="407" y="22" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="411" y="34">sort_specification_list</text></a><rect x="537" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="541" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m64 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h48 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v1 m78 0 v-1 m-78 1 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m20 -21 h4 m90 0 h4 m20 0 h10 m0 0 h176 m-206 0 h20 m186 0 h20 m-226 0 q10 0 10 10 m206 0 q0 -10 10 -10 m-216 10 v1 m206 0 v-1 m-206 1 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m40 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m102 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="563 10 571 6 571 14"/> + <polygon points="563 10 555 6 555 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#array-aggregate-function" title="array_aggregate_function" shape="rect">array_aggregate_function</a></div> + <div>         ::= 'ARRAY_AGG' '(' 'DISTINCT'? <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ( 'ORDER' 'BY' <a href="#sort-specification-list" title="sort_specification_list" shape="rect">sort_specification_list</a> )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#aggregate-function" title="aggregate-function">aggregate-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sort_specification_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="173" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sort-specification" xlink:title="sort_specification" shape="rect"> + <rect x="43" y="29" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">sort_specification</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m86 0 h4 m-114 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m94 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-94 0 h4 m8 0 h4 m0 0 h78 m23 28 h-3"/> + <polygon points="163 38 171 34 171 42"/> + <polygon points="163 38 155 34 155 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sort-specification-list" title="sort_specification_list" shape="rect">sort_specification_list</a></div> + <div>         ::= <a href="#sort-specification" title="sort_specification" shape="rect">sort_specification</a> ( ',' <a href="#sort-specification" title="sort_specification" shape="rect">sort_specification</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#array-aggregate-function" title="array-aggregate-function">array-aggregate-function</a></li><li><a href="#order-by-clause" title="order-by-clause">order-by-clause</a></li><li><a href="#window-order-clause" title="window-order-clause">window-order-clause</a></li><li><a href="#within-group-specification" title="within-group-specification">within-group-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sort_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="365" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sort-key" xlink:title="sort_key" shape="rect"> + <rect x="23" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">sort_key</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordering-specification" xlink:title="ordering_specification" shape="rect"> + <rect x="99" y="22" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="34">ordering_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-ordering" xlink:title="null_ordering" shape="rect"> + <rect x="253" y="22" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="257" y="34">null_ordering</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m20 0 h10 m0 0 h104 m-134 0 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v1 m134 0 v-1 m-134 1 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m106 0 h4 m40 -21 h10 m0 0 h66 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v1 m96 0 v-1 m-96 1 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m68 0 h4 m23 -21 h-3"/> + <polygon points="355 10 363 6 363 14"/> + <polygon points="355 10 347 6 347 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sort-specification" title="sort_specification" shape="rect">sort_specification</a></div> + <div>         ::= <a href="#sort-key" title="sort_key" shape="rect">sort_key</a> <a href="#ordering-specification" title="ordering_specification" shape="rect">ordering_specification</a>? <a href="#null-ordering" title="null_ordering" shape="rect">null_ordering</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sort-specification-list" title="sort-specification-list">sort-specification-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sort_key +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sort-key" title="sort_key" shape="rect">sort_key</a> ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sort-specification" title="sort-specification">sort-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ordering_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="119" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ASC</text> + <rect x="43" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">DESC</text> + <path class="line" d="m17 10 h2 m20 0 h4 m26 0 h4 m0 0 h6 m-60 0 h20 m40 0 h20 m-80 0 q10 0 10 10 m60 0 q0 -10 10 -10 m-70 10 v8 m60 0 v-8 m-60 8 q0 10 10 10 m40 0 q10 0 10 -10 m-50 10 h4 m32 0 h4 m23 -28 h-3"/> + <polygon points="109 10 117 6 117 14"/> + <polygon points="109 10 101 6 101 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#ordering-specification" title="ordering_specification" shape="rect">ordering_specification</a></div> + <div>         ::= 'ASC'</div> + <div>           | 'DESC'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sort-specification" title="sort-specification">sort-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + null_ordering +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NULLS</text> + <rect x="89" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13">FIRST</text> + <rect x="89" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="41">LAST</text> + <path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m20 0 h4 m34 0 h4 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v8 m62 0 v-8 m-62 8 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m30 0 h4 m0 0 h4 m23 -28 h-3"/> + <polygon points="157 10 165 6 165 14"/> + <polygon points="157 10 149 6 149 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#null-ordering" title="null_ordering" shape="rect">null_ordering</a></div> + <div>         ::= 'NULLS' ( 'FIRST' | 'LAST' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sort-specification" title="sort-specification">sort-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="721" height="63"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/> + <rect x="23" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="34">CREATE</text> + <rect x="73" y="22" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="34">SCHEMA</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#if-not-exists" xlink:title="if_not_exists" shape="rect"> + <rect x="147" y="43" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="55">if_not_exists</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name-clause" xlink:title="schema_name_clause" shape="rect"> + <rect x="241" y="22" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="34">schema_name_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-character-set-or-path" xlink:title="schema_character_set_or_path" shape="rect"> + <rect x="383" y="43" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="387" y="55">schema_character_set_or_path</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-element" xlink:title="schema_element" shape="rect"> + <rect x="587" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="591" y="13">schema_element</text></a><path class="line" d="m17 31 h2 m0 0 h4 m42 0 h4 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h64 m-94 0 h20 m74 0 h20 m-114 0 q10 0 10 10 m94 0 q0 -10 10 -10 m-104 10 v1 m94 0 v-1 m-94 1 q0 10 10 10 m74 0 q10 0 10 -10 m-84 10 h4 m66 0 h4 m20 -21 h4 m114 0 h4 m20 0 h10 m0 0 h154 m-184 0 h20 m164 0 h20 m-204 0 q10 0 10 10 m184 0 q0 -10 10 -10 m-194 10 v1 m184 0 v-1 m-184 1 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m156 0 h4 m40 -21 h10 m0 0 h88 m-118 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m98 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-98 0 h4 m90 0 h4 m23 21 h-3"/> + <polygon points="711 31 719 27 719 35"/> + <polygon points="711 31 703 27 703 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-definition" title="schema_definition" shape="rect">schema_definition</a></div> + <div>         ::= 'CREATE' 'SCHEMA' <a href="#if-not-exists" title="if_not_exists" shape="rect">if_not_exists</a>? <a href="#schema-name-clause" title="schema_name_clause" shape="rect">schema_name_clause</a> <a href="#schema-character-set-or-path" title="schema_character_set_or_path" shape="rect">schema_character_set_or_path</a>? <a href="#schema-element" title="schema_element" shape="rect">schema_element</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_character_set_or_path +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="439" height="91"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-character-set-specification" xlink:title="schema_character_set_specification" shape="rect"> + <rect x="43" y="1" width="172" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">schema_character_set_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-path-specification" xlink:title="schema_path_specification" shape="rect"> + <rect x="243" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="247" y="34">schema_path_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-path-specification" xlink:title="schema_path_specification" shape="rect"> + <rect x="43" y="50" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="62">schema_path_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-character-set-specification" xlink:title="schema_character_set_specification" shape="rect"> + <rect x="203" y="71" width="172" height="18" class="nonterminal"/> + <text class="nonterminal" x="207" y="83">schema_character_set_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m172 0 h4 m20 0 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m-360 -21 h20 m360 0 h20 m-400 0 q10 0 10 10 m380 0 q0 -10 10 -10 m-390 10 v29 m380 0 v-29 m-380 29 q0 10 10 10 m360 0 q10 0 10 -10 m-370 10 h4 m132 0 h4 m20 0 h10 m0 0 h170 m-200 0 h20 m180 0 h20 m-220 0 q10 0 10 10 m200 0 q0 -10 10 -10 m-210 10 v1 m200 0 v-1 m-200 1 q0 10 10 10 m180 0 q10 0 10 -10 m-190 10 h4 m172 0 h4 m43 -70 h-3"/> + <polygon points="429 10 437 6 437 14"/> + <polygon points="429 10 421 6 421 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-character-set-or-path" title="schema_character_set_or_path" shape="rect">schema_character_set_or_path</a></div> + <div>         ::= <a href="#schema-character-set-specification" title="schema_character_set_specification" shape="rect">schema_character_set_specification</a> <a href="#schema-path-specification" title="schema_path_specification" shape="rect">schema_path_specification</a>?</div> + <div>           | <a href="#schema-path-specification" title="schema_path_specification" shape="rect">schema_path_specification</a> <a href="#schema-character-set-specification" title="schema_character_set_specification" shape="rect">schema_character_set_specification</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-definition" title="schema-definition">schema-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_name_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="355" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name" xlink:title="schema_name" shape="rect"> + <rect x="43" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">schema_name</text></a><rect x="151" y="22" width="86" height="18" class="terminal" rx="4"/> + <text class="terminal" x="155" y="34">AUTHORIZATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="245" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="249" y="34">identifier</text></a><rect x="43" y="50" width="86" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">AUTHORIZATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="137" y="50" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="62">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m80 0 h4 m20 0 h10 m0 0 h138 m-168 0 h20 m148 0 h20 m-188 0 q10 0 10 10 m168 0 q0 -10 10 -10 m-178 10 v1 m168 0 v-1 m-168 1 q0 10 10 10 m148 0 q10 0 10 -10 m-158 10 h4 m86 0 h4 m0 0 h4 m46 0 h4 m-276 -21 h20 m276 0 h20 m-316 0 q10 0 10 10 m296 0 q0 -10 10 -10 m-306 10 v29 m296 0 v-29 m-296 29 q0 10 10 10 m276 0 q10 0 10 -10 m-286 10 h4 m86 0 h4 m0 0 h4 m46 0 h4 m0 0 h128 m23 -49 h-3"/> + <polygon points="345 10 353 6 353 14"/> + <polygon points="345 10 337 6 337 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-name-clause" title="schema_name_clause" shape="rect">schema_name_clause</a></div> + <div>         ::= <a href="#schema-name" title="schema_name" shape="rect">schema_name</a> ( 'AUTHORIZATION' <a href="#identifier" title="identifier" shape="rect">identifier</a> )?</div> + <div>           | 'AUTHORIZATION' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-definition" title="schema-definition">schema-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_character_set_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="335" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DEFAULT</text> + <rect x="79" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13">CHARACTER</text> + <rect x="149" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="181" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="13">character_set_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="325 10 333 6 333 14"/> + <polygon points="325 10 317 6 317 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-character-set-specification" title="schema_character_set_specification" shape="rect">schema_character_set_specification</a></div> + <div>         ::= 'DEFAULT' 'CHARACTER' 'SET' <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-character-set-or-path" title="schema-character-set-or-path">schema-character-set-or-path</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_path_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-specification" xlink:title="path_specification" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">path_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-path-specification" title="schema_path_specification" shape="rect">schema_path_specification</a></div> + <div>         ::= <a href="#path-specification" title="path_specification" shape="rect">path_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-character-set-or-path" title="schema-character-set-or-path">schema-character-set-or-path</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="245" height="441"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-definition" xlink:title="table_definition" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">table_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#view-definition" xlink:title="view_definition" shape="rect"> + <rect x="43" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">view_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#domain-definition" xlink:title="domain_definition" shape="rect"> + <rect x="43" y="57" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">domain_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-definition" xlink:title="character_set_definition" shape="rect"> + <rect x="43" y="85" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">character_set_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collation-definition" xlink:title="collation_definition" shape="rect"> + <rect x="43" y="113" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">collation_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transliteration-definition" xlink:title="transliteration_definition" shape="rect"> + <rect x="43" y="141" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">transliteration_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#assertion-definition" xlink:title="assertion_definition" shape="rect"> + <rect x="43" y="169" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">assertion_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trigger-definition" xlink:title="trigger_definition" shape="rect"> + <rect x="43" y="197" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">trigger_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-definition" xlink:title="user_defined_type_definition" shape="rect"> + <rect x="43" y="225" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">user_defined_type_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-cast-definition" xlink:title="user_defined_cast_definition" shape="rect"> + <rect x="43" y="253" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">user_defined_cast_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-ordering-definition" xlink:title="user_defined_ordering_definition" shape="rect"> + <rect x="43" y="281" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="293">user_defined_ordering_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-definition" xlink:title="transform_definition" shape="rect"> + <rect x="43" y="309" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="321">transform_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-routine" xlink:title="schema_routine" shape="rect"> + <rect x="43" y="337" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="349">schema_routine</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-definition" xlink:title="sequence_generator_definition" shape="rect"> + <rect x="43" y="365" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="377">sequence_generator_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grant-statement" xlink:title="grant_statement" shape="rect"> + <rect x="43" y="393" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="405">grant_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#role-definition" xlink:title="role_definition" shape="rect"> + <rect x="43" y="421" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="433">role_definition</text></a><path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h82 m-186 0 h20 m166 0 h20 m-206 0 q10 0 10 10 m186 0 q0 -10 10 -10 m-196 10 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m74 0 h4 m0 0 h84 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m90 0 h4 m0 0 h68 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m116 0 h4 m0 0 h42 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m90 0 h4 m0 0 h68 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m114 0 h4 m0 0 h44 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m96 0 h4 m0 0 h62 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m84 0 h4 m0 0 h74 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m140 0 h4 m0 0 h18 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m138 0 h4 m0 0 h20 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m158 0 h4 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m98 0 h4 m0 0 h60 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m84 0 h4 m0 0 h74 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m152 0 h4 m0 0 h6 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m88 0 h4 m0 0 h70 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m72 0 h4 m0 0 h86 m23 -420 h-3"/> + <polygon points="235 10 243 6 243 14"/> + <polygon points="235 10 227 6 227 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-element" title="schema_element" shape="rect">schema_element</a></div> + <div>         ::= <a href="#table-definition" title="table_definition" shape="rect">table_definition</a></div> + <div>           | <a href="#view-definition" title="view_definition" shape="rect">view_definition</a></div> + <div>           | <a href="#domain-definition" title="domain_definition" shape="rect">domain_definition</a></div> + <div>           | <a href="#character-set-definition" title="character_set_definition" shape="rect">character_set_definition</a></div> + <div>           | <a href="#collation-definition" title="collation_definition" shape="rect">collation_definition</a></div> + <div>           | <a href="#transliteration-definition" title="transliteration_definition" shape="rect">transliteration_definition</a></div> + <div>           | <a href="#assertion-definition" title="assertion_definition" shape="rect">assertion_definition</a></div> + <div>           | <a href="#trigger-definition" title="trigger_definition" shape="rect">trigger_definition</a></div> + <div>           | <a href="#user-defined-type-definition" title="user_defined_type_definition" shape="rect">user_defined_type_definition</a></div> + <div>           | <a href="#user-defined-cast-definition" title="user_defined_cast_definition" shape="rect">user_defined_cast_definition</a></div> + <div>           | <a href="#user-defined-ordering-definition" title="user_defined_ordering_definition" shape="rect">user_defined_ordering_definition</a></div> + <div>           | <a href="#transform-definition" title="transform_definition" shape="rect">transform_definition</a></div> + <div>           | <a href="#schema-routine" title="schema_routine" shape="rect">schema_routine</a></div> + <div>           | <a href="#sequence-generator-definition" title="sequence_generator_definition" shape="rect">sequence_generator_definition</a></div> + <div>           | <a href="#grant-statement" title="grant_statement" shape="rect">grant_statement</a></div> + <div>           | <a href="#role-definition" title="role_definition" shape="rect">role_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-definition" title="schema-definition">schema-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_schema_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="307" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">SCHEMA</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name" xlink:title="schema_name" shape="rect"> + <rect x="119" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="13">schema_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="207" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m80 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="297 10 305 6 305 14"/> + <polygon points="297 10 289 6 289 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-schema-statement" title="drop_schema_statement" shape="rect">drop_schema_statement</a></div> + <div>         ::= 'DROP' 'SCHEMA' <a href="#schema-name" title="schema_name" shape="rect">schema_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_behavior +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CASCADE</text> + <rect x="43" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">RESTRICT</text> + <path class="line" d="m17 10 h2 m20 0 h4 m50 0 h4 m0 0 h2 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m23 -28 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div> + <div>         ::= 'CASCADE'</div> + <div>           | 'RESTRICT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#drop-assertion-statement" title="drop-assertion-statement">drop-assertion-statement</a></li><li><a href="#drop-collation-statement" title="drop-collation-statement">drop-collation-statement</a></li><li><a href="#drop-column-definition" title="drop-column-definition">drop-column-definition</a></li><li><a href="#drop-column-scope-clause" title="drop-column-scope-clause">drop-column-scope-clause</a></li><li><a href="#drop-data-type-statement" title="drop-data-type-statement">drop-data-type-statement</a></li><li><a href="#drop-domain-statement" title="drop-domain-statement">drop-domain-statement</a></li><li><a href="#drop-routine-statement" title="drop-routine-statement">drop-routine-statement</a></li><li><a href="#drop-schema-statement" title="drop-schema-statement">drop-schema-statement</a></li><li><a href="#drop-sequence-generator-statement" title="drop-sequence-generator-statement">drop-sequence-generator-statement</a></li><li><a href="#drop-system-versioning-clause" title="drop-system-versioning-clause">drop-system-versioning-clause</a></li><li><a href="#drop-table-constraint-definition" title="drop-table-constraint-definition">drop-table-constraint-definition</a></li><li><a href="#drop-table-statement" title="drop-table-statement">drop-table-statement</a></li><li><a href="#drop-transform-element-list" title="drop-transform-element-list">drop-transform-element-list</a></li><li><a href="#drop-transform-statement" title="drop-transform-statement">drop-transform-statement</a></li><li><a href="#drop-user-defined-cast-statement" title="drop-user-defined-cast-statement">drop-user-defined-cast-statement</a></li><li><a href="#drop-user-defined-ordering-statement" title="drop-user-defined-ordering-statement">drop-user-defined-ordering-statement</a></li><li><a href="#drop-view-statement" title="drop-view-statement">drop-view-statement</a></li><li><a href="#revoke-privilege-statement" title="revoke-privilege-statement">revoke-privilege-statement</a></li><li><a href="#revoke-role-statement" title="revoke-role-statement">revoke-role-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="583" height="268"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-scope" xlink:title="table_scope" shape="rect"> + <rect x="93" y="22" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="34">table_scope</text></a><rect x="187" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="13">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#if-not-exists" xlink:title="if_not_exists" shape="rect"> + <rect x="251" y="22" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="255" y="34">if_not_exists</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="345" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="349" y="13">table_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-description" xlink:title="table_description" shape="rect"> + <rect x="439" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="443" y="34">table_description</text></a><rect x="57" y="85" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="61" y="97">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#system-versioning-clause" xlink:title="system_versioning_clause" shape="rect"> + <rect x="119" y="85" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="97">system_versioning_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-attributes" xlink:title="table_attributes" shape="rect"> + <rect x="119" y="113" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="125">table_attributes</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-contents-source" xlink:title="table_contents_source" shape="rect"> + <rect x="297" y="64" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="301" y="76">table_contents_source</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-contents-source" xlink:title="table_contents_source" shape="rect"> + <rect x="37" y="141" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="41" y="153">table_contents_source</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-description" xlink:title="table_description" shape="rect"> + <rect x="179" y="162" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="174">table_description</text></a><rect x="313" y="162" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="174">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#system-versioning-clause" xlink:title="system_versioning_clause" shape="rect"> + <rect x="375" y="162" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="379" y="174">system_versioning_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-attributes" xlink:title="table_attributes" shape="rect"> + <rect x="375" y="190" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="379" y="202">table_attributes</text></a><rect x="303" y="248" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="307" y="260">ON</text> + <rect x="333" y="248" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="337" y="260">COMMIT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-commit-action" xlink:title="table_commit_action" shape="rect"> + <rect x="389" y="248" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="393" y="260">table_commit_action</text></a><rect x="501" y="248" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="505" y="260">ROWS</text> + <path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m20 0 h10 m0 0 h64 m-94 0 h20 m74 0 h20 m-114 0 q10 0 10 10 m94 0 q0 -10 10 -10 m-104 10 v1 m94 0 v-1 m-94 1 q0 10 10 10 m74 0 q10 0 10 -10 m-84 10 h4 m66 0 h4 m20 -21 h4 m36 0 h4 m20 0 h10 m0 0 h64 m-94 0 h20 m74 0 h20 m-114 0 q10 0 10 10 m94 0 q0 -10 10 -10 m-104 10 v1 m94 0 v-1 m-94 1 q0 10 10 10 m74 0 q10 0 10 -10 m-84 10 h4 m66 0 h4 m20 -21 h4 m66 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-560 63 l2 0 m2 0 l2 0 m2 0 l2 0 m42 0 h10 m0 0 h210 m-240 0 h20 m220 0 h20 m-260 0 q10 0 10 10 m240 0 q0 -10 10 -10 m-250 10 v1 m240 0 v-1 m-240 1 q0 10 10 10 m220 0 q10 0 10 -10 m-230 10 h4 m34 0 h4 m20 0 h4 m130 0 h4 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m80 0 h4 m0 0 h50 m40 -49 h4 m114 0 h4 m0 0 h134 m-536 0 h20 m516 0 h20 m-556 0 q10 0 10 10 m536 0 q0 -10 10 -10 m-546 10 v57 m536 0 v-57 m-536 57 q0 10 10 10 m516 0 q10 0 10 -10 m-526 10 h4 m114 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m40 -21 h10 m0 0 h210 m-240 0 h20 m220 0 h20 m-260 0 q10 0 10 10 m240 0 q0 -10 10 -10 m-250 10 v1 m240 0 v-1 m-240 1 q0 10 10 10 m220 0 q10 0 10 -10 m-230 10 h4 m34 0 h4 m20 0 h4 m130 0 h4 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m80 0 h4 m0 0 h50 m62 -126 l2 0 m2 0 l2 0 m2 0 l2 0 m-314 163 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h234 m-264 0 h20 m244 0 h20 m-284 0 q10 0 10 10 m264 0 q0 -10 10 -10 m-274 10 v1 m264 0 v-1 m-264 1 q0 10 10 10 m244 0 q10 0 10 -10 m-254 10 h4 m22 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m104 0 h4 m0 0 h4 m38 0 h4 m23 -21 h-3"/> + <polygon points="573 236 581 232 581 240"/> + <polygon points="573 236 565 232 565 240"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-definition" title="table_definition" shape="rect">table_definition</a></div> + <div>         ::= 'CREATE' <a href="#table-scope" title="table_scope" shape="rect">table_scope</a>? 'TABLE' <a href="#if-not-exists" title="if_not_exists" shape="rect">if_not_exists</a>? <a href="#table-name" title="table_name" shape="rect">table_name</a> <a href="#table-description" title="table_description" shape="rect">table_description</a>? ( ( 'WITH' ( <a href="#system-versioning-clause" title="system_versioning_clause" shape="rect">system_versioning_clause</a> | <a href="#table-attributes" title="table_attributes" shape="rect">table_attributes</a> ) )? <a href="#table-contents-source" title="table_contents_source" shape="rect">table_contents_source</a> | <a href="#table-contents-source" title="table_contents_source" shape="rect">table_contents_source</a> <a href="#table-description" title="table_description" shape="rect">table_description</a>? ( 'WITH' ( <a href="#system-versioning-clause" title="system_versioning_clause" shape="rect">system_versioning_clause</a> | <a href="#table-attributes" title="table_attributes" shape="rect">table_attributes</a> ) )? ) ( 'ON' 'COMMIT' <a href="#table-commit-action" title="table_commit_action" shape="rect">table_commit_action</a> 'ROWS' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_contents_source +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#typed-table-clause" xlink:title="typed_table_clause" shape="rect"> + <rect x="43" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">typed_table_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#as-subquery-clause" xlink:title="as_subquery_clause" shape="rect"> + <rect x="43" y="29" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">as_subquery_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-element-list" xlink:title="table_element_list" shape="rect"> + <rect x="43" y="57" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">table_element_list</text></a><path class="line" d="m17 10 h2 m20 0 h4 m98 0 h4 m0 0 h6 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v8 m132 0 v-8 m-132 8 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m104 0 h4 m-122 -10 v20 m132 0 v-20 m-132 20 v8 m132 0 v-8 m-132 8 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m92 0 h4 m0 0 h12 m23 -56 h-3"/> + <polygon points="181 10 189 6 189 14"/> + <polygon points="181 10 173 6 173 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-contents-source" title="table_contents_source" shape="rect">table_contents_source</a></div> + <div>         ::= <a href="#typed-table-clause" title="typed_table_clause" shape="rect">typed_table_clause</a></div> + <div>           | <a href="#as-subquery-clause" title="as_subquery_clause" shape="rect">as_subquery_clause</a></div> + <div>           | <a href="#table-element-list" title="table_element_list" shape="rect">table_element_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-definition" title="table-definition">table-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_scope +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="197" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#global-or-local" xlink:title="global_or_local" shape="rect"> + <rect x="23" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">global_or_local</text></a><rect x="107" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="13">TEMPORARY</text> + <path class="line" d="m17 10 h2 m0 0 h4 m76 0 h4 m0 0 h4 m66 0 h4 m3 0 h-3"/> + <polygon points="187 10 195 6 195 14"/> + <polygon points="187 10 179 6 179 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-scope" title="table_scope" shape="rect">table_scope</a></div> + <div>         ::= <a href="#global-or-local" title="global_or_local" shape="rect">global_or_local</a> 'TEMPORARY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-definition" title="table-definition">table-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + global_or_local +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="131" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">GLOBAL</text> + <rect x="43" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LOCAL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m44 0 h4 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m38 0 h4 m0 0 h6 m23 -28 h-3"/> + <polygon points="121 10 129 6 129 14"/> + <polygon points="121 10 113 6 113 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#global-or-local" title="global_or_local" shape="rect">global_or_local</a></div> + <div>         ::= 'GLOBAL'</div> + <div>           | 'LOCAL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-scope" title="table-scope">table-scope</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + system_versioning_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="357" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SYSTEM</text> + <rect x="75" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="13">VERSIONING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#retention-period-specification" xlink:title="retention_period_specification" shape="rect"> + <rect x="171" y="22" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="175" y="34">retention_period_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m68 0 h4 m20 0 h10 m0 0 h140 m-170 0 h20 m150 0 h20 m-190 0 q10 0 10 10 m170 0 q0 -10 10 -10 m-180 10 v1 m170 0 v-1 m-170 1 q0 10 10 10 m150 0 q10 0 10 -10 m-160 10 h4 m142 0 h4 m23 -21 h-3"/> + <polygon points="347 10 355 6 355 14"/> + <polygon points="347 10 339 6 339 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#system-versioning-clause" title="system_versioning_clause" shape="rect">system_versioning_clause</a></div> + <div>         ::= 'SYSTEM' 'VERSIONING' <a href="#retention-period-specification" title="retention_period_specification" shape="rect">retention_period_specification</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-system-versioning-clause" title="add-system-versioning-clause">add-system-versioning-clause</a></li><li><a href="#table-definition" title="table-definition">table-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + retention_period_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="361" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">KEEP</text> + <rect x="61" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="65" y="13">VERSIONS</text> + <rect x="145" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="13">FOREVER</text> + <rect x="145" y="29" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="41">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#length-of-time" xlink:title="length_of_time" shape="rect"> + <rect x="179" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="41">length_of_time</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#time-unit" xlink:title="time_unit" shape="rect"> + <rect x="265" y="29" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="269" y="41">time_unit</text></a><path class="line" d="m17 10 h2 m0 0 h4 m30 0 h4 m0 0 h4 m56 0 h4 m20 0 h4 m50 0 h4 m0 0 h122 m-200 0 h20 m180 0 h20 m-220 0 q10 0 10 10 m200 0 q0 -10 10 -10 m-210 10 v8 m200 0 v-8 m-200 8 q0 10 10 10 m180 0 q10 0 10 -10 m-190 10 h4 m26 0 h4 m0 0 h4 m78 0 h4 m0 0 h4 m52 0 h4 m23 -28 h-3"/> + <polygon points="351 10 359 6 359 14"/> + <polygon points="351 10 343 6 343 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#retention-period-specification" title="retention_period_specification" shape="rect">retention_period_specification</a></div> + <div>         ::= 'KEEP' 'VERSIONS' ( 'FOREVER' | 'FOR' <a href="#length-of-time" title="length_of_time" shape="rect">length_of_time</a> <a href="#time-unit" title="time_unit" shape="rect">time_unit</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-system-versioning-clause" title="alter-system-versioning-clause">alter-system-versioning-clause</a></li><li><a href="#system-versioning-clause" title="system-versioning-clause">system-versioning-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + length_of_time +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">unsigned_integer</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#length-of-time" title="length_of_time" shape="rect">length_of_time</a></div> + <div>         ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#retention-period-specification" title="retention-period-specification">retention-period-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + time_unit +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="329"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">SECOND</text> + <rect x="43" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SECONDS</text> + <rect x="43" y="57" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">MINUTE</text> + <rect x="43" y="85" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">MINUTES</text> + <rect x="43" y="113" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">HOUR</text> + <rect x="43" y="141" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">HOURS</text> + <rect x="43" y="169" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">DAY</text> + <rect x="43" y="197" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">DAYS</text> + <rect x="43" y="225" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">MONTH</text> + <rect x="43" y="253" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">MONTHS</text> + <rect x="43" y="281" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">YEAR</text> + <rect x="43" y="309" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">YEARS</text> + <path class="line" d="m17 10 h2 m20 0 h4 m46 0 h4 m0 0 h6 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m44 0 h4 m0 0 h8 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m50 0 h4 m0 0 h2 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m36 0 h4 m0 0 h16 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m42 0 h4 m0 0 h10 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m26 0 h4 m0 0 h26 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m32 0 h4 m0 0 h20 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m44 0 h4 m0 0 h8 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m50 0 h4 m0 0 h2 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m32 0 h4 m0 0 h20 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m38 0 h4 m0 0 h14 m23 -308 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#time-unit" title="time_unit" shape="rect">time_unit</a></div> + <div>         ::= 'SECOND'</div> + <div>           | 'SECONDS'</div> + <div>           | 'MINUTE'</div> + <div>           | 'MINUTES'</div> + <div>           | 'HOUR'</div> + <div>           | 'HOURS'</div> + <div>           | 'DAY'</div> + <div>           | 'DAYS'</div> + <div>           | 'MONTH'</div> + <div>           | 'MONTHS'</div> + <div>           | 'YEAR'</div> + <div>           | 'YEARS'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#retention-period-specification" title="retention-period-specification">retention-period-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_commit_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="141" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">PRESERVE</text> + <rect x="43" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">DELETE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m54 0 h4 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v8 m82 0 v-8 m-82 8 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m40 0 h4 m0 0 h14 m23 -28 h-3"/> + <polygon points="131 10 139 6 139 14"/> + <polygon points="131 10 123 6 123 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-commit-action" title="table_commit_action" shape="rect">table_commit_action</a></div> + <div>         ::= 'PRESERVE'</div> + <div>           | 'DELETE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-definition" title="table-definition">table-definition</a></li><li><a href="#temporary-table-declaration" title="temporary-table-declaration">temporary-table-declaration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-element" xlink:title="table_element" shape="rect"> + <rect x="63" y="29" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">table_element</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="167" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="171" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m76 0 h4 m-104 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m84 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-84 0 h4 m8 0 h4 m0 0 h68 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="193 38 201 34 201 42"/> + <polygon points="193 38 185 34 185 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-element-list" title="table_element_list" shape="rect">table_element_list</a></div> + <div>         ::= '(' <a href="#table-element" title="table_element" shape="rect">table_element</a> ( ',' <a href="#table-element" title="table_element" shape="rect">table_element</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-contents-source" title="table-contents-source">table-contents-source</a></li><li><a href="#temporary-table-declaration" title="temporary-table-declaration">temporary-table-declaration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-definition" xlink:title="column_definition" shape="rect"> + <rect x="43" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">column_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-constraint-definition" xlink:title="table_constraint_definition" shape="rect"> + <rect x="43" y="29" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">table_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#like-clause" xlink:title="like_clause" shape="rect"> + <rect x="43" y="57" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">like_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m88 0 h4 m0 0 h38 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v8 m154 0 v-8 m-154 8 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m126 0 h4 m-144 -10 v20 m154 0 v-20 m-154 20 v8 m154 0 v-8 m-154 8 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m58 0 h4 m0 0 h68 m23 -56 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-element" title="table_element" shape="rect">table_element</a></div> + <div>         ::= <a href="#column-definition" title="column_definition" shape="rect">column_definition</a></div> + <div>           | <a href="#table-constraint-definition" title="table_constraint_definition" shape="rect">table_constraint_definition</a></div> + <div>           | <a href="#like-clause" title="like_clause" shape="rect">like_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-element-list" title="table-element-list">table-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + typed_table_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="579" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="51" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="55" y="13">path_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subtable-clause" xlink:title="subtable_clause" shape="rect"> + <rect x="279" y="22" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="34">subtable_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#typed-table-element-list" xlink:title="typed_table_element_list" shape="rect"> + <rect x="411" y="22" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="415" y="34">typed_table_element_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m200 0 h4 m20 0 h10 m0 0 h82 m-112 0 h20 m92 0 h20 m-132 0 q10 0 10 10 m112 0 q0 -10 10 -10 m-122 10 v1 m112 0 v-1 m-112 1 q0 10 10 10 m92 0 q10 0 10 -10 m-102 10 h4 m84 0 h4 m40 -21 h10 m0 0 h122 m-152 0 h20 m132 0 h20 m-172 0 q10 0 10 10 m152 0 q0 -10 10 -10 m-162 10 v1 m152 0 v-1 m-152 1 q0 10 10 10 m132 0 q10 0 10 -10 m-142 10 h4 m124 0 h4 m23 -21 h-3"/> + <polygon points="569 10 577 6 577 14"/> + <polygon points="569 10 561 6 561 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#typed-table-clause" title="typed_table_clause" shape="rect">typed_table_clause</a></div> + <div>         ::= 'OF' <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a> <a href="#subtable-clause" title="subtable_clause" shape="rect">subtable_clause</a>? <a href="#typed-table-element-list" title="typed_table_element_list" shape="rect">typed_table_element_list</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-contents-source" title="table-contents-source">table-contents-source</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + typed_table_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#typed-table-element" xlink:title="typed_table_element" shape="rect"> + <rect x="63" y="29" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">typed_table_element</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="199" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m108 0 h4 m-136 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m116 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-116 0 h4 m8 0 h4 m0 0 h100 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="225 38 233 34 233 42"/> + <polygon points="225 38 217 34 217 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#typed-table-element-list" title="typed_table_element_list" shape="rect">typed_table_element_list</a></div> + <div>         ::= '(' <a href="#typed-table-element" title="typed_table_element" shape="rect">typed_table_element</a> ( ',' <a href="#typed-table-element" title="typed_table_element" shape="rect">typed_table_element</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#typed-table-clause" title="typed-table-clause">typed-table-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + typed_table_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-options" xlink:title="column_options" shape="rect"> + <rect x="43" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">column_options</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-constraint-definition" xlink:title="table_constraint_definition" shape="rect"> + <rect x="43" y="29" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">table_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#self-referencing-column-specification" xlink:title="self_referencing_column_specification" shape="rect"> + <rect x="43" y="57" width="178" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">self_referencing_column_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m82 0 h4 m0 0 h96 m-206 0 h20 m186 0 h20 m-226 0 q10 0 10 10 m206 0 q0 -10 10 -10 m-216 10 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m126 0 h4 m0 0 h52 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m178 0 h4 m23 -56 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#typed-table-element" title="typed_table_element" shape="rect">typed_table_element</a></div> + <div>         ::= <a href="#column-options" title="column_options" shape="rect">column_options</a></div> + <div>           | <a href="#table-constraint-definition" title="table_constraint_definition" shape="rect">table_constraint_definition</a></div> + <div>           | <a href="#self-referencing-column-specification" title="self_referencing_column_specification" shape="rect">self_referencing_column_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#typed-table-element-list" title="typed-table-element-list">typed-table-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + self_referencing_column_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="307" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">REF</text> + <rect x="55" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">IS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="81" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-generation" xlink:title="reference_generation" shape="rect"> + <rect x="155" y="22" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="34">reference_generation</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h106 m-136 0 h20 m116 0 h20 m-156 0 q10 0 10 10 m136 0 q0 -10 10 -10 m-146 10 v1 m136 0 v-1 m-136 1 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m108 0 h4 m23 -21 h-3"/> + <polygon points="297 10 305 6 305 14"/> + <polygon points="297 10 289 6 289 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#self-referencing-column-specification" title="self_referencing_column_specification" shape="rect">self_referencing_column_specification</a></div> + <div>         ::= 'REF' 'IS' <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#reference-generation" title="reference_generation" shape="rect">reference_generation</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#typed-table-element" title="typed-table-element">typed-table-element</a></li><li><a href="#view-element" title="view-element">view-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + reference_generation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">SYSTEM</text> + <rect x="63" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">USER</text> + <rect x="135" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="13">GENERATED</text> + <rect x="43" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">DERIVED</text> + <path class="line" d="m17 10 h2 m40 0 h4 m44 0 h4 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m32 0 h4 m0 0 h12 m20 -28 h4 m62 0 h4 m-182 0 h20 m162 0 h20 m-202 0 q10 0 10 10 m182 0 q0 -10 10 -10 m-192 10 v36 m182 0 v-36 m-182 36 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m48 0 h4 m0 0 h106 m23 -56 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#reference-generation" title="reference_generation" shape="rect">reference_generation</a></div> + <div>         ::= ( 'SYSTEM' | 'USER' ) 'GENERATED'</div> + <div>           | 'DERIVED'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#self-referencing-column-specification" title="self-referencing-column-specification">self-referencing-column-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_options +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="297" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><rect x="77" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">WITH</text> + <rect x="119" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">OPTIONS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-option-list" xlink:title="column_option_list" shape="rect"> + <rect x="179" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="13">column_option_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m52 0 h4 m0 0 h4 m94 0 h4 m3 0 h-3"/> + <polygon points="287 10 295 6 295 14"/> + <polygon points="287 10 279 6 279 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-options" title="column_options" shape="rect">column_options</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> 'WITH' 'OPTIONS' <a href="#column-option-list" title="column_option_list" shape="rect">column_option_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#typed-table-element" title="typed-table-element">typed-table-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_option_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="467" height="63"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#scope-clause" xlink:title="scope_clause" shape="rect"> + <rect x="43" y="43" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="55">scope_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#default-clause" xlink:title="default_clause" shape="rect"> + <rect x="163" y="43" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="167" y="55">default_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-constraint-definition" xlink:title="column_constraint_definition" shape="rect"> + <rect x="285" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="289" y="13">column_constraint_definition</text></a><path class="line" d="m17 31 h2 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m40 -21 h10 m0 0 h72 m-102 0 h20 m82 0 h20 m-122 0 q10 0 10 10 m102 0 q0 -10 10 -10 m-112 10 v1 m102 0 v-1 m-102 1 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m74 0 h4 m40 -21 h10 m0 0 h136 m-166 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m146 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-146 0 h4 m138 0 h4 m23 21 h-3"/> + <polygon points="457 31 465 27 465 35"/> + <polygon points="457 31 449 27 449 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-option-list" title="column_option_list" shape="rect">column_option_list</a></div> + <div>         ::= <a href="#scope-clause" title="scope_clause" shape="rect">scope_clause</a>? <a href="#default-clause" title="default_clause" shape="rect">default_clause</a>? <a href="#column-constraint-definition" title="column_constraint_definition" shape="rect">column_constraint_definition</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-options" title="column-options">column-options</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + subtable_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="187" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UNDER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#supertable-clause" xlink:title="supertable_clause" shape="rect"> + <rect x="71" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="13">supertable_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="177 10 185 6 185 14"/> + <polygon points="177 10 169 6 169 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#subtable-clause" title="subtable_clause" shape="rect">subtable_clause</a></div> + <div>         ::= 'UNDER' <a href="#supertable-clause" title="supertable_clause" shape="rect">supertable_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#typed-table-clause" title="typed-table-clause">typed-table-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + supertable_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#supertable-name" xlink:title="supertable_name" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">supertable_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#supertable-clause" title="supertable_clause" shape="rect">supertable_clause</a></div> + <div>         ::= <a href="#supertable-name" title="supertable_name" shape="rect">supertable_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#subtable-clause" title="subtable-clause">subtable-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + supertable_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="113" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="23" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">table_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m66 0 h4 m3 0 h-3"/> + <polygon points="103 10 111 6 111 14"/> + <polygon points="103 10 95 6 95 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#supertable-name" title="supertable_name" shape="rect">supertable_name</a></div> + <div>         ::= <a href="#table-name" title="table_name" shape="rect">table_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#supertable-clause" title="supertable-clause">supertable-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + like_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="259" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LIKE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="59" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">table_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#like-options" xlink:title="like_options" shape="rect"> + <rect x="153" y="22" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="157" y="34">like_options</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m66 0 h4 m20 0 h10 m0 0 h60 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v1 m90 0 v-1 m-90 1 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m62 0 h4 m23 -21 h-3"/> + <polygon points="249 10 257 6 257 14"/> + <polygon points="249 10 241 6 241 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#like-clause" title="like_clause" shape="rect">like_clause</a></div> + <div>         ::= 'LIKE' <a href="#table-name" title="table_name" shape="rect">table_name</a> <a href="#like-options" title="like_options" shape="rect">like_options</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-element" title="table-element">table-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + like_options +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="145" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#like-option" xlink:title="like_option" shape="rect"> + <rect x="43" y="13" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">like_option</text></a><path class="line" d="m17 22 h2 m20 0 h4 m58 0 h4 m-86 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m66 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-66 0 h10 m0 0 h56 m23 21 h-3"/> + <polygon points="135 22 143 18 143 26"/> + <polygon points="135 22 127 18 127 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#like-options" title="like_options" shape="rect">like_options</a></div> + <div>         ::= <a href="#like-option" title="like_option" shape="rect">like_option</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#like-clause" title="like-clause">like-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + like_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identity-option" xlink:title="identity_option" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identity_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-default-option" xlink:title="column_default_option" shape="rect"> + <rect x="43" y="29" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">column_default_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#generation-option" xlink:title="generation_option" shape="rect"> + <rect x="43" y="57" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">generation_option</text></a><rect x="43" y="85" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">INCLUDING</text> + <rect x="111" y="85" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="97">PROPERTIES</text> + <path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h58 m-162 0 h20 m142 0 h20 m-182 0 q10 0 10 10 m162 0 q0 -10 10 -10 m-172 10 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m114 0 h4 m0 0 h20 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m94 0 h4 m0 0 h40 m-152 -10 v20 m162 0 v-20 m-162 20 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m60 0 h4 m0 0 h4 m66 0 h4 m23 -84 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#like-option" title="like_option" shape="rect">like_option</a></div> + <div>         ::= <a href="#identity-option" title="identity_option" shape="rect">identity_option</a></div> + <div>           | <a href="#column-default-option" title="column_default_option" shape="rect">column_default_option</a></div> + <div>           | <a href="#generation-option" title="generation_option" shape="rect">generation_option</a></div> + <div>           | 'INCLUDING' 'PROPERTIES'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#like-options" title="like-options">like-options</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identity_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">INCLUDING</text> + <rect x="43" y="29" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">EXCLUDING</text> + <rect x="131" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="13">IDENTITY</text> + <path class="line" d="m17 10 h2 m20 0 h4 m60 0 h4 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m20 -28 h4 m50 0 h4 m3 0 h-3"/> + <polygon points="195 10 203 6 203 14"/> + <polygon points="195 10 187 6 187 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identity-option" title="identity_option" shape="rect">identity_option</a></div> + <div>         ::= ( 'INCLUDING' | 'EXCLUDING' ) 'IDENTITY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#like-option" title="like-option">like-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_default_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">INCLUDING</text> + <rect x="43" y="29" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">EXCLUDING</text> + <rect x="131" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="13">DEFAULTS</text> + <path class="line" d="m17 10 h2 m20 0 h4 m60 0 h4 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m20 -28 h4 m54 0 h4 m3 0 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-default-option" title="column_default_option" shape="rect">column_default_option</a></div> + <div>         ::= ( 'INCLUDING' | 'EXCLUDING' ) 'DEFAULTS'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#like-option" title="like-option">like-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + generation_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">INCLUDING</text> + <rect x="43" y="29" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">EXCLUDING</text> + <rect x="131" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="13">GENERATED</text> + <path class="line" d="m17 10 h2 m20 0 h4 m60 0 h4 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m20 -28 h4 m62 0 h4 m3 0 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#generation-option" title="generation_option" shape="rect">generation_option</a></div> + <div>         ::= ( 'INCLUDING' | 'EXCLUDING' ) 'GENERATED'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#like-option" title="like-option">like-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + as_subquery_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="713" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="63" y="22" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">column_name_list</text></a><rect x="163" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="34">)</text> + <rect x="223" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="227" y="34">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-attributes" xlink:title="table_attributes" shape="rect"> + <rect x="265" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="269" y="34">table_attributes</text></a><rect x="373" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="377" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subquery" xlink:title="subquery" shape="rect"> + <rect x="421" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="13">subquery</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-expression" xlink:title="query_expression" shape="rect"> + <rect x="421" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="41">query_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#with-or-without-data" xlink:title="with_or_without_data" shape="rect"> + <rect x="561" y="22" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="565" y="34">with_or_without_data</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m12 0 h4 m40 -21 h10 m0 0 h120 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v1 m150 0 v-1 m-150 1 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m34 0 h4 m0 0 h4 m80 0 h4 m20 -21 h4 m20 0 h4 m20 0 h4 m52 0 h4 m0 0 h40 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m92 0 h4 m40 -28 h10 m0 0 h106 m-136 0 h20 m116 0 h20 m-156 0 q10 0 10 10 m136 0 q0 -10 10 -10 m-146 10 v1 m136 0 v-1 m-136 1 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m108 0 h4 m23 -21 h-3"/> + <polygon points="703 10 711 6 711 14"/> + <polygon points="703 10 695 6 695 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#as-subquery-clause" title="as_subquery_clause" shape="rect">as_subquery_clause</a></div> + <div>         ::= ( '(' <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a> ')' )? ( 'WITH' <a href="#table-attributes" title="table_attributes" shape="rect">table_attributes</a> )? 'AS' ( <a href="#subquery" title="subquery" shape="rect">subquery</a> | <a href="#query-expression" title="query_expression" shape="rect">query_expression</a> ) <a href="#with-or-without-data" title="with_or_without_data" shape="rect">with_or_without_data</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-contents-source" title="table-contents-source">table-contents-source</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + with_or_without_data +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WITH</text> + <rect x="85" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="34">NO</text> + <rect x="135" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="13">DATA</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m20 0 h10 m0 0 h20 m-50 0 h20 m30 0 h20 m-70 0 q10 0 10 10 m50 0 q0 -10 10 -10 m-60 10 v1 m50 0 v-1 m-50 1 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m22 0 h4 m20 -21 h4 m32 0 h4 m3 0 h-3"/> + <polygon points="181 10 189 6 189 14"/> + <polygon points="181 10 173 6 173 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#with-or-without-data" title="with_or_without_data" shape="rect">with_or_without_data</a></div> + <div>         ::= 'WITH' 'NO'? 'DATA'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#as-subquery-clause" title="as-subquery-clause">as-subquery-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="765" height="233"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type-or-schema-qualified-name" xlink:title="data_type_or_schema_qualified_name" shape="rect"> + <rect x="97" y="43" width="190" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="55">data_type_or_schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#default-clause" xlink:title="default_clause" shape="rect"> + <rect x="335" y="43" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="339" y="55">default_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identity-column-specification" xlink:title="identity_column_specification" shape="rect"> + <rect x="335" y="71" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="339" y="83">identity_column_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#generation-clause" xlink:title="generation_clause" shape="rect"> + <rect x="335" y="99" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="339" y="111">generation_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#system-version-start-column-specification" xlink:title="system_version_start_column_specification" shape="rect"> + <rect x="335" y="127" width="206" height="18" class="nonterminal"/> + <text class="nonterminal" x="339" y="139">system_version_start_column_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#system-version-end-column-specification" xlink:title="system_version_end_column_specification" shape="rect"> + <rect x="335" y="155" width="204" height="18" class="nonterminal"/> + <text class="nonterminal" x="339" y="167">system_version_end_column_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-constraint-definition" xlink:title="column_constraint_definition" shape="rect"> + <rect x="589" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="593" y="13">column_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collate-clause" xlink:title="collate_clause" shape="rect"> + <rect x="505" y="213" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="509" y="225">collate_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-description" xlink:title="column_description" shape="rect"> + <rect x="625" y="213" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="629" y="225">column_description</text></a><path class="line" d="m17 31 h2 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h188 m-218 0 h20 m198 0 h20 m-238 0 q10 0 10 10 m218 0 q0 -10 10 -10 m-228 10 v1 m218 0 v-1 m-218 1 q0 10 10 10 m198 0 q10 0 10 -10 m-208 10 h4 m190 0 h4 m40 -21 h10 m0 0 h204 m-234 0 h20 m214 0 h20 m-254 0 q10 0 10 10 m234 0 q0 -10 10 -10 m-244 10 v1 m234 0 v-1 m-234 1 q0 10 10 10 m214 0 q10 0 10 -10 m-224 10 h4 m74 0 h4 m0 0 h132 m-224 -10 v20 m234 0 v-20 m-234 20 v8 m234 0 v-8 m-234 8 q0 10 10 10 m214 0 q10 0 10 -10 m-224 10 h4 m138 0 h4 m0 0 h68 m-224 -10 v20 m234 0 v-20 m-234 20 v8 m234 0 v-8 m-234 8 q0 10 10 10 m214 0 q10 0 10 -10 m-224 10 h4 m94 0 h4 m0 0 h112 m-224 -10 v20 m234 0 v-20 m-234 20 v8 m234 0 v-8 m-234 8 q0 10 10 10 m214 0 q10 0 10 -10 m-224 10 h4 m206 0 h4 m-224 -10 v20 m234 0 v-20 m-234 20 v8 m234 0 v-8 m-234 8 q0 10 10 10 m214 0 q10 0 10 -10 m-224 10 h4 m204 0 h4 m0 0 h2 m40 -133 h10 m0 0 h136 m-166 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m146 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-146 0 h4 m138 0 h4 m22 21 l2 0 m2 0 l2 0 m2 0 l2 0 m-294 170 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m40 -21 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m96 0 h4 m23 -21 h-3"/> + <polygon points="755 201 763 197 763 205"/> + <polygon points="755 201 747 197 747 205"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-definition" title="column_definition" shape="rect">column_definition</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#data-type-or-schema-qualified-name" title="data_type_or_schema_qualified_name" shape="rect">data_type_or_schema_qualified_name</a>? ( <a href="#default-clause" title="default_clause" shape="rect">default_clause</a> | <a href="#identity-column-specification" title="identity_column_specification" shape="rect">identity_column_specification</a> | <a href="#generation-clause" title="generation_clause" shape="rect">generation_clause</a> | <a href="#system-version-start-column-specification" title="system_version_start_column_specification" shape="rect">system_version_start_column_specification</a> | <a href="#system-version-end-column-specification" title="system_version_end_column_specification" shape="rect">system_version_end_column_specification</a> )? <a href="#column-constraint-definition" title="column_constraint_definition" shape="rect">column_constraint_definition</a>* <a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a>? <a href="#column-description" title="column_description" shape="rect">column_description</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-column-definition" title="add-column-definition">add-column-definition</a></li><li><a href="#column-definition-1" title="column-definition-1">column-definition-1</a></li><li><a href="#column-definition-2" title="column-definition-2">column-definition-2</a></li><li><a href="#table-element" title="table-element">table-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + data_type_or_schema_qualified_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="43" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="43" y="29" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m56 0 h4 m0 0 h66 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v8 m150 0 v-8 m-150 8 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m122 0 h4 m23 -28 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#data-type-or-schema-qualified-name" title="data_type_or_schema_qualified_name" shape="rect">data_type_or_schema_qualified_name</a></div> + <div>         ::= <a href="#data-type" title="data_type" shape="rect">data_type</a></div> + <div>           | <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-definition" title="column-definition">column-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + system_version_start_column_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="365" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#timestamp-generation-rule" xlink:title="timestamp_generation_rule" shape="rect"> + <rect x="23" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">timestamp_generation_rule</text></a><rect x="167" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="171" y="13">AS</text> + <rect x="195" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="13">SYSTEM</text> + <rect x="247" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="251" y="13">VERSION</text> + <rect x="305" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="309" y="13">START</text> + <path class="line" d="m17 10 h2 m0 0 h4 m136 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m36 0 h4 m3 0 h-3"/> + <polygon points="355 10 363 6 363 14"/> + <polygon points="355 10 347 6 347 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#system-version-start-column-specification" title="system_version_start_column_specification" shape="rect">system_version_start_column_specification</a></div> + <div>         ::= <a href="#timestamp-generation-rule" title="timestamp_generation_rule" shape="rect">timestamp_generation_rule</a> 'AS' 'SYSTEM' 'VERSION' 'START'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-definition" title="column-definition">column-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + system_version_end_column_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="355" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#timestamp-generation-rule" xlink:title="timestamp_generation_rule" shape="rect"> + <rect x="23" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">timestamp_generation_rule</text></a><rect x="167" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="171" y="13">AS</text> + <rect x="195" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="13">SYSTEM</text> + <rect x="247" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="251" y="13">VERSION</text> + <rect x="305" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="309" y="13">END</text> + <path class="line" d="m17 10 h2 m0 0 h4 m136 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m26 0 h4 m3 0 h-3"/> + <polygon points="345 10 353 6 353 14"/> + <polygon points="345 10 337 6 337 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#system-version-end-column-specification" title="system_version_end_column_specification" shape="rect">system_version_end_column_specification</a></div> + <div>         ::= <a href="#timestamp-generation-rule" title="timestamp_generation_rule" shape="rect">timestamp_generation_rule</a> 'AS' 'SYSTEM' 'VERSION' 'END'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-definition" title="column-definition">column-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + timestamp_generation_rule +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="165" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GENERATED</text> + <rect x="93" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">ALWAYS</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m48 0 h4 m3 0 h-3"/> + <polygon points="155 10 163 6 163 14"/> + <polygon points="155 10 147 6 147 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#timestamp-generation-rule" title="timestamp_generation_rule" shape="rect">timestamp_generation_rule</a></div> + <div>         ::= 'GENERATED' 'ALWAYS'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#system-version-end-column-specification" title="system-version-end-column-specification">system-version-end-column-specification</a></li><li><a href="#system-version-start-column-specification" title="system-version-start-column-specification">system-version-start-column-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="487" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-name-definition" xlink:title="constraint_name_definition" shape="rect"> + <rect x="43" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">constraint_name_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-constraint" xlink:title="column_constraint" shape="rect"> + <rect x="203" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="207" y="13">column_constraint</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-characteristics" xlink:title="constraint_characteristics" shape="rect"> + <rect x="323" y="22" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="327" y="34">constraint_characteristics</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m20 -21 h4 m92 0 h4 m20 0 h10 m0 0 h118 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v1 m148 0 v-1 m-148 1 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m120 0 h4 m23 -21 h-3"/> + <polygon points="477 10 485 6 485 14"/> + <polygon points="477 10 469 6 469 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-constraint-definition" title="column_constraint_definition" shape="rect">column_constraint_definition</a></div> + <div>         ::= <a href="#constraint-name-definition" title="constraint_name_definition" shape="rect">constraint_name_definition</a>? <a href="#column-constraint" title="column_constraint" shape="rect">column_constraint</a> <a href="#constraint-characteristics" title="constraint_characteristics" shape="rect">constraint_characteristics</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-definition" title="column-definition">column-definition</a></li><li><a href="#column-option-list" title="column-option-list">column-option-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_constraint +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NOT</text> + <rect x="79" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13">NULL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unique-specification" xlink:title="unique_specification" shape="rect"> + <rect x="43" y="29" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">unique_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#references-specification" xlink:title="references_specification" shape="rect"> + <rect x="43" y="57" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">references_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#check-constraint-definition" xlink:title="check_constraint_definition" shape="rect"> + <rect x="43" y="85" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">check_constraint_definition</text></a><path class="line" d="m17 10 h2 m20 0 h4 m28 0 h4 m0 0 h4 m32 0 h4 m0 0 h62 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m100 0 h4 m0 0 h30 m-148 -10 v20 m158 0 v-20 m-158 20 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m116 0 h4 m0 0 h14 m-148 -10 v20 m158 0 v-20 m-158 20 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m130 0 h4 m23 -84 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-constraint" title="column_constraint" shape="rect">column_constraint</a></div> + <div>         ::= 'NOT' 'NULL'</div> + <div>           | <a href="#unique-specification" title="unique_specification" shape="rect">unique_specification</a></div> + <div>           | <a href="#references-specification" title="references_specification" shape="rect">references_specification</a></div> + <div>           | <a href="#check-constraint-definition" title="check_constraint_definition" shape="rect">check_constraint_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-constraint-definition" title="column-constraint-definition">column-constraint-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identity_column_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="599" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GENERATED</text> + <rect x="113" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="13">ALWAYS</text> + <rect x="113" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="41">BY</text> + <rect x="141" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="41">DEFAULT</text> + <rect x="217" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="13">AS</text> + <rect x="245" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="13">IDENTITY</text> + <rect x="323" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="327" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#common-sequence-generator-options" xlink:title="common_sequence_generator_options" shape="rect"> + <rect x="343" y="22" width="192" height="18" class="nonterminal"/> + <text class="nonterminal" x="347" y="34">common_sequence_generator_options</text></a><rect x="543" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="547" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m20 0 h4 m48 0 h4 m0 0 h28 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m20 0 h4 m0 0 h4 m48 0 h4 m20 -28 h4 m20 0 h4 m0 0 h4 m50 0 h4 m20 0 h10 m0 0 h230 m-260 0 h20 m240 0 h20 m-280 0 q10 0 10 10 m260 0 q0 -10 10 -10 m-270 10 v1 m260 0 v-1 m-260 1 q0 10 10 10 m240 0 q10 0 10 -10 m-250 10 h4 m12 0 h4 m0 0 h4 m192 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="589 10 597 6 597 14"/> + <polygon points="589 10 581 6 581 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identity-column-specification" title="identity_column_specification" shape="rect">identity_column_specification</a></div> + <div>         ::= 'GENERATED' ( 'ALWAYS' | 'BY' 'DEFAULT' ) 'AS' 'IDENTITY' ( '(' <a href="#common-sequence-generator-options" title="common_sequence_generator_options" shape="rect">common_sequence_generator_options</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-definition" title="column-definition">column-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + generation_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="279" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#generation-rule" xlink:title="generation_rule" shape="rect"> + <rect x="23" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">generation_rule</text></a><rect x="113" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#generation-expression" xlink:title="generation_expression" shape="rect"> + <rect x="141" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="13">generation_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m82 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m114 0 h4 m3 0 h-3"/> + <polygon points="269 10 277 6 277 14"/> + <polygon points="269 10 261 6 261 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#generation-clause" title="generation_clause" shape="rect">generation_clause</a></div> + <div>         ::= <a href="#generation-rule" title="generation_rule" shape="rect">generation_rule</a> 'AS' <a href="#generation-expression" title="generation_expression" shape="rect">generation_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-definition" title="column-definition">column-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + generation_rule +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="165" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GENERATED</text> + <rect x="93" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">ALWAYS</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m48 0 h4 m3 0 h-3"/> + <polygon points="155 10 163 6 163 14"/> + <polygon points="155 10 147 6 147 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#generation-rule" title="generation_rule" shape="rect">generation_rule</a></div> + <div>         ::= 'GENERATED' 'ALWAYS'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#generation-clause" title="generation-clause">generation-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + generation_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><rect x="141" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#generation-expression" title="generation_expression" shape="rect">generation_expression</a></div> + <div>         ::= '(' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#generation-clause" title="generation-clause">generation-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + default_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DEFAULT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#default-option" xlink:title="default_option" shape="rect"> + <rect x="79" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="83" y="13">default_option</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#default-clause" title="default_clause" shape="rect">default_clause</a></div> + <div>         ::= 'DEFAULT' <a href="#default-option" title="default_option" shape="rect">default_option</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#attribute-default" title="attribute-default">attribute-default</a></li><li><a href="#column-definition" title="column-definition">column-definition</a></li><li><a href="#column-option-list" title="column-option-list">column-option-list</a></li><li><a href="#domain-definition" title="domain-definition">domain-definition</a></li><li><a href="#set-column-default-clause" title="set-column-default-clause">set-column-default-clause</a></li><li><a href="#set-domain-default-clause" title="set-domain-default-clause">set-domain-default-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + default_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="301"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#literal" xlink:title="literal" shape="rect"> + <rect x="43" y="1" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">literal</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetime-value-function" xlink:title="datetime_value_function" shape="rect"> + <rect x="43" y="29" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">datetime_value_function</text></a><rect x="43" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">USER</text> + <rect x="43" y="85" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">CURRENT_USER</text> + <rect x="43" y="113" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">CURRENT_ROLE</text> + <rect x="43" y="141" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">SESSION_USER</text> + <rect x="43" y="169" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">SYSTEM_USER</text> + <rect x="43" y="197" width="100" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">CURRENT_CATALOG</text> + <rect x="43" y="225" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">CURRENT_SCHEMA</text> + <rect x="43" y="253" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">CURRENT_PATH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#implicitly-typed-value-specification" xlink:title="implicitly_typed_value_specification" shape="rect"> + <rect x="43" y="281" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="293">implicitly_typed_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h132 m-192 0 h20 m172 0 h20 m-212 0 q10 0 10 10 m192 0 q0 -10 10 -10 m-202 10 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m122 0 h4 m0 0 h42 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m32 0 h4 m0 0 h132 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m80 0 h4 m0 0 h84 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m82 0 h4 m0 0 h82 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m80 0 h4 m0 0 h84 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m74 0 h4 m0 0 h90 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m100 0 h4 m0 0 h64 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m96 0 h4 m0 0 h68 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m82 0 h4 m0 0 h82 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m164 0 h4 m23 -280 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#default-option" title="default_option" shape="rect">default_option</a></div> + <div>         ::= <a href="#literal" title="literal" shape="rect">literal</a></div> + <div>           | <a href="#datetime-value-function" title="datetime_value_function" shape="rect">datetime_value_function</a></div> + <div>           | 'USER'</div> + <div>           | 'CURRENT_USER'</div> + <div>           | 'CURRENT_ROLE'</div> + <div>           | 'SESSION_USER'</div> + <div>           | 'SYSTEM_USER'</div> + <div>           | 'CURRENT_CATALOG'</div> + <div>           | 'CURRENT_SCHEMA'</div> + <div>           | 'CURRENT_PATH'</div> + <div>           | <a href="#implicitly-typed-value-specification" title="implicitly_typed_value_specification" shape="rect">implicitly_typed_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#default-clause" title="default-clause">default-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="477" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-name-definition" xlink:title="constraint_name_definition" shape="rect"> + <rect x="43" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">constraint_name_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-constraint" xlink:title="table_constraint" shape="rect"> + <rect x="203" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="207" y="13">table_constraint</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-characteristics" xlink:title="constraint_characteristics" shape="rect"> + <rect x="313" y="22" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="34">constraint_characteristics</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m20 -21 h4 m82 0 h4 m20 0 h10 m0 0 h118 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v1 m148 0 v-1 m-148 1 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m120 0 h4 m23 -21 h-3"/> + <polygon points="467 10 475 6 475 14"/> + <polygon points="467 10 459 6 459 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-constraint-definition" title="table_constraint_definition" shape="rect">table_constraint_definition</a></div> + <div>         ::= <a href="#constraint-name-definition" title="constraint_name_definition" shape="rect">constraint_name_definition</a>? <a href="#table-constraint" title="table_constraint" shape="rect">table_constraint</a> <a href="#constraint-characteristics" title="constraint_characteristics" shape="rect">constraint_characteristics</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-table-constraint-definition" title="add-table-constraint-definition">add-table-constraint-definition</a></li><li><a href="#table-element" title="table-element">table-element</a></li><li><a href="#typed-table-element" title="typed-table-element">typed-table-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_constraint +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unique-constraint-definition" xlink:title="unique_constraint_definition" shape="rect"> + <rect x="43" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">unique_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#referential-constraint-definition" xlink:title="referential_constraint_definition" shape="rect"> + <rect x="43" y="29" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">referential_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#check-constraint-definition" xlink:title="check_constraint_definition" shape="rect"> + <rect x="43" y="57" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">check_constraint_definition</text></a><path class="line" d="m17 10 h2 m20 0 h4 m136 0 h4 m0 0 h12 m-176 0 h20 m156 0 h20 m-196 0 q10 0 10 10 m176 0 q0 -10 10 -10 m-186 10 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m148 0 h4 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m130 0 h4 m0 0 h18 m23 -56 h-3"/> + <polygon points="225 10 233 6 233 14"/> + <polygon points="225 10 217 6 217 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-constraint" title="table_constraint" shape="rect">table_constraint</a></div> + <div>         ::= <a href="#unique-constraint-definition" title="unique_constraint_definition" shape="rect">unique_constraint_definition</a></div> + <div>           | <a href="#referential-constraint-definition" title="referential_constraint_definition" shape="rect">referential_constraint_definition</a></div> + <div>           | <a href="#check-constraint-definition" title="check_constraint_definition" shape="rect">check_constraint_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-constraint-definition" title="table-constraint-definition">table-constraint-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unique_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="331" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unique-specification" xlink:title="unique_specification" shape="rect"> + <rect x="43" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">unique_specification</text></a><rect x="151" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="155" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unique-column-list" xlink:title="unique_column_list" shape="rect"> + <rect x="171" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="175" y="13">unique_column_list</text></a><rect x="275" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="279" y="13">)</text> + <rect x="43" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">UNIQUE</text> + <rect x="95" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="41">VALUE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m100 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m96 0 h4 m0 0 h4 m12 0 h4 m-272 0 h20 m252 0 h20 m-292 0 q10 0 10 10 m272 0 q0 -10 10 -10 m-282 10 v8 m272 0 v-8 m-272 8 q0 10 10 10 m252 0 q10 0 10 -10 m-262 10 h4 m44 0 h4 m0 0 h4 m36 0 h4 m0 0 h156 m23 -28 h-3"/> + <polygon points="321 10 329 6 329 14"/> + <polygon points="321 10 313 6 313 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unique-constraint-definition" title="unique_constraint_definition" shape="rect">unique_constraint_definition</a></div> + <div>         ::= <a href="#unique-specification" title="unique_specification" shape="rect">unique_specification</a> '(' <a href="#unique-column-list" title="unique_column_list" shape="rect">unique_column_list</a> ')'</div> + <div>           | 'UNIQUE' 'VALUE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-constraint" title="table-constraint">table-constraint</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unique_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="169" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">UNIQUE</text> + <rect x="43" y="29" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">PRIMARY</text> + <rect x="101" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="41">KEY</text> + <path class="line" d="m17 10 h2 m20 0 h4 m44 0 h4 m0 0 h38 m-110 0 h20 m90 0 h20 m-130 0 q10 0 10 10 m110 0 q0 -10 10 -10 m-120 10 v8 m110 0 v-8 m-110 8 q0 10 10 10 m90 0 q10 0 10 -10 m-100 10 h4 m50 0 h4 m0 0 h4 m24 0 h4 m23 -28 h-3"/> + <polygon points="159 10 167 6 167 14"/> + <polygon points="159 10 151 6 151 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unique-specification" title="unique_specification" shape="rect">unique_specification</a></div> + <div>         ::= 'UNIQUE'</div> + <div>           | 'PRIMARY' 'KEY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-constraint" title="column-constraint">column-constraint</a></li><li><a href="#unique-constraint-definition" title="unique-constraint-definition">unique-constraint-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unique_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unique-column-list" title="unique_column_list" shape="rect">unique_column_list</a></div> + <div>         ::= <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unique-constraint-definition" title="unique-constraint-definition">unique-constraint-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + referential_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="405" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FOREIGN</text> + <rect x="81" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="85" y="13">KEY</text> + <rect x="113" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#referencing-columns" xlink:title="referencing_columns" shape="rect"> + <rect x="133" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">referencing_columns</text></a><rect x="245" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#references-specification" xlink:title="references_specification" shape="rect"> + <rect x="265" y="1" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="269" y="13">references_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m104 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m116 0 h4 m3 0 h-3"/> + <polygon points="395 10 403 6 403 14"/> + <polygon points="395 10 387 6 387 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#referential-constraint-definition" title="referential_constraint_definition" shape="rect">referential_constraint_definition</a></div> + <div>         ::= 'FOREIGN' 'KEY' '(' <a href="#referencing-columns" title="referencing_columns" shape="rect">referencing_columns</a> ')' <a href="#references-specification" title="references_specification" shape="rect">references_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-constraint" title="table-constraint">table-constraint</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + references_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="615" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">REFERENCES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#referenced-table-and-columns" xlink:title="referenced_table_and_columns" shape="rect"> + <rect x="97" y="1" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="13">referenced_table_and_columns</text></a><rect x="279" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="283" y="34">MATCH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#match-type" xlink:title="match_type" shape="rect"> + <rect x="327" y="22" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="34">match_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#referential-triggered-action" xlink:title="referential_triggered_action" shape="rect"> + <rect x="439" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="443" y="34">referential_triggered_action</text></a><path class="line" d="m17 10 h2 m0 0 h4 m66 0 h4 m0 0 h4 m154 0 h4 m20 0 h10 m0 0 h110 m-140 0 h20 m120 0 h20 m-160 0 q10 0 10 10 m140 0 q0 -10 10 -10 m-150 10 v1 m140 0 v-1 m-140 1 q0 10 10 10 m120 0 q10 0 10 -10 m-130 10 h4 m40 0 h4 m0 0 h4 m64 0 h4 m40 -21 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m23 -21 h-3"/> + <polygon points="605 10 613 6 613 14"/> + <polygon points="605 10 597 6 597 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#references-specification" title="references_specification" shape="rect">references_specification</a></div> + <div>         ::= 'REFERENCES' <a href="#referenced-table-and-columns" title="referenced_table_and_columns" shape="rect">referenced_table_and_columns</a> ( 'MATCH' <a href="#match-type" title="match_type" shape="rect">match_type</a> )? <a href="#referential-triggered-action" title="referential_triggered_action" shape="rect">referential_triggered_action</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-constraint" title="column-constraint">column-constraint</a></li><li><a href="#referential-constraint-definition" title="referential-constraint-definition">referential-constraint-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + match_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">FULL</text> + <rect x="43" y="29" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">PARTIAL</text> + <rect x="43" y="57" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">SIMPLE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m30 0 h4 m0 0 h16 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v8 m74 0 v-8 m-74 8 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m46 0 h4 m-64 -10 v20 m74 0 v-20 m-74 20 v8 m74 0 v-8 m-74 8 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m42 0 h4 m0 0 h4 m23 -56 h-3"/> + <polygon points="123 10 131 6 131 14"/> + <polygon points="123 10 115 6 115 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#match-type" title="match_type" shape="rect">match_type</a></div> + <div>         ::= 'FULL'</div> + <div>           | 'PARTIAL'</div> + <div>           | 'SIMPLE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#references-specification" title="references-specification">references-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + referencing_columns +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-column-list" xlink:title="reference_column_list" shape="rect"> + <rect x="23" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">reference_column_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#referencing-columns" title="referencing_columns" shape="rect">referencing_columns</a></div> + <div>         ::= <a href="#reference-column-list" title="reference_column_list" shape="rect">reference_column_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#referential-constraint-definition" title="referential-constraint-definition">referential-constraint-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + referenced_table_and_columns +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="309" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="23" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">table_name</text></a><rect x="117" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-column-list" xlink:title="reference_column_list" shape="rect"> + <rect x="137" y="22" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="34">reference_column_list</text></a><rect x="253" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m66 0 h4 m20 0 h10 m0 0 h146 m-176 0 h20 m156 0 h20 m-196 0 q10 0 10 10 m176 0 q0 -10 10 -10 m-186 10 v1 m176 0 v-1 m-176 1 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m12 0 h4 m0 0 h4 m108 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="299 10 307 6 307 14"/> + <polygon points="299 10 291 6 291 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#referenced-table-and-columns" title="referenced_table_and_columns" shape="rect">referenced_table_and_columns</a></div> + <div>         ::= <a href="#table-name" title="table_name" shape="rect">table_name</a> ( '(' <a href="#reference-column-list" title="reference_column_list" shape="rect">reference_column_list</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#references-specification" title="references-specification">references-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + reference_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#reference-column-list" title="reference_column_list" shape="rect">reference_column_list</a></div> + <div>         ::= <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#referenced-table-and-columns" title="referenced-table-and-columns">referenced-table-and-columns</a></li><li><a href="#referencing-columns" title="referencing-columns">referencing-columns</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + referential_triggered_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="259" height="91"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-rule" xlink:title="update_rule" shape="rect"> + <rect x="43" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">update_rule</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delete-rule" xlink:title="delete_rule" shape="rect"> + <rect x="135" y="22" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="34">delete_rule</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delete-rule" xlink:title="delete_rule" shape="rect"> + <rect x="43" y="50" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="62">delete_rule</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-rule" xlink:title="update_rule" shape="rect"> + <rect x="131" y="71" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="83">update_rule</text></a><path class="line" d="m17 10 h2 m20 0 h4 m64 0 h4 m20 0 h10 m0 0 h58 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v1 m88 0 v-1 m-88 1 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m-180 -21 h20 m180 0 h20 m-220 0 q10 0 10 10 m200 0 q0 -10 10 -10 m-210 10 v29 m200 0 v-29 m-200 29 q0 10 10 10 m180 0 q10 0 10 -10 m-190 10 h4 m60 0 h4 m20 0 h10 m0 0 h62 m-92 0 h20 m72 0 h20 m-112 0 q10 0 10 10 m92 0 q0 -10 10 -10 m-102 10 v1 m92 0 v-1 m-92 1 q0 10 10 10 m72 0 q10 0 10 -10 m-82 10 h4 m64 0 h4 m43 -70 h-3"/> + <polygon points="249 10 257 6 257 14"/> + <polygon points="249 10 241 6 241 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#referential-triggered-action" title="referential_triggered_action" shape="rect">referential_triggered_action</a></div> + <div>         ::= <a href="#update-rule" title="update_rule" shape="rect">update_rule</a> <a href="#delete-rule" title="delete_rule" shape="rect">delete_rule</a>?</div> + <div>           | <a href="#delete-rule" title="delete_rule" shape="rect">delete_rule</a> <a href="#update-rule" title="update_rule" shape="rect">update_rule</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#references-specification" title="references-specification">references-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + update_rule +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ON</text> + <rect x="53" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="57" y="13">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#referential-action" xlink:title="referential_action" shape="rect"> + <rect x="105" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">referential_action</text></a><path class="line" d="m17 10 h2 m0 0 h4 m22 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="205 10 213 6 213 14"/> + <polygon points="205 10 197 6 197 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#update-rule" title="update_rule" shape="rect">update_rule</a></div> + <div>         ::= 'ON' 'UPDATE' <a href="#referential-action" title="referential_action" shape="rect">referential_action</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#referential-triggered-action" title="referential-triggered-action">referential-triggered-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + delete_rule +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="211" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ON</text> + <rect x="53" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="57" y="13">DELETE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#referential-action" xlink:title="referential_action" shape="rect"> + <rect x="101" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="13">referential_action</text></a><path class="line" d="m17 10 h2 m0 0 h4 m22 0 h4 m0 0 h4 m40 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="201 10 209 6 209 14"/> + <polygon points="201 10 193 6 193 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#delete-rule" title="delete_rule" shape="rect">delete_rule</a></div> + <div>         ::= 'ON' 'DELETE' <a href="#referential-action" title="referential_action" shape="rect">referential_action</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#referential-triggered-action" title="referential-triggered-action">referential-triggered-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + referential_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="207" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CASCADE</text> + <rect x="43" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SET</text> + <rect x="95" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="41">NULL</text> + <rect x="95" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="69">DEFAULT</text> + <rect x="43" y="85" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">RESTRICT</text> + <rect x="43" y="113" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">NO</text> + <rect x="73" y="113" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="125">ACTION</text> + <path class="line" d="m17 10 h2 m20 0 h4 m50 0 h4 m0 0 h70 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v8 m148 0 v-8 m-148 8 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m24 0 h4 m20 0 h4 m32 0 h4 m0 0 h16 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v8 m76 0 v-8 m-76 8 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m-118 -38 v20 m148 0 v-20 m-148 20 v36 m148 0 v-36 m-148 36 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m52 0 h4 m0 0 h68 m-138 -10 v20 m148 0 v-20 m-148 20 v8 m148 0 v-8 m-148 8 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m22 0 h4 m0 0 h4 m44 0 h4 m0 0 h46 m23 -112 h-3"/> + <polygon points="197 10 205 6 205 14"/> + <polygon points="197 10 189 6 189 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#referential-action" title="referential_action" shape="rect">referential_action</a></div> + <div>         ::= 'CASCADE'</div> + <div>           | 'SET' ( 'NULL' | 'DEFAULT' )</div> + <div>           | 'RESTRICT'</div> + <div>           | 'NO' 'ACTION'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#delete-rule" title="delete-rule">delete-rule</a></li><li><a href="#update-rule" title="update-rule">update-rule</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + check_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CHECK</text> + <rect x="69" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="89" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="93" y="13">search_condition</text></a><rect x="183" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#check-constraint-definition" title="check_constraint_definition" shape="rect">check_constraint_definition</a></div> + <div>         ::= 'CHECK' '(' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-constraint" title="column-constraint">column-constraint</a></li><li><a href="#domain-constraint" title="domain-constraint">domain-constraint</a></li><li><a href="#table-constraint" title="table-constraint">table-constraint</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_table_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="299" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALTER</text> + <rect x="67" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="111" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">table_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-table-action" xlink:title="alter_table_action" shape="rect"> + <rect x="185" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="189" y="13">alter_table_action</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="289 10 297 6 297 14"/> + <polygon points="289 10 281 6 281 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-table-statement" title="alter_table_statement" shape="rect">alter_table_statement</a></div> + <div>         ::= 'ALTER' 'TABLE' <a href="#table-name" title="table_name" shape="rect">table_name</a> <a href="#alter-table-action" title="alter_table_action" shape="rect">alter_table_action</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_table_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="245"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-column-definition" xlink:title="add_column_definition" shape="rect"> + <rect x="43" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">add_column_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-column-definition" xlink:title="alter_column_definition" shape="rect"> + <rect x="43" y="29" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">alter_column_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-column-definition" xlink:title="drop_column_definition" shape="rect"> + <rect x="43" y="57" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">drop_column_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-table-constraint-definition" xlink:title="add_table_constraint_definition" shape="rect"> + <rect x="43" y="85" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">add_table_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-table-constraint-definition" xlink:title="alter_table_constraint_definition" shape="rect"> + <rect x="43" y="113" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">alter_table_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-table-constraint-definition" xlink:title="drop_table_constraint_definition" shape="rect"> + <rect x="43" y="141" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">drop_table_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-system-versioning-clause" xlink:title="add_system_versioning_clause" shape="rect"> + <rect x="43" y="169" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">add_system_versioning_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-system-versioning-clause" xlink:title="alter_system_versioning_clause" shape="rect"> + <rect x="43" y="197" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">alter_system_versioning_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-system-versioning-clause" xlink:title="drop_system_versioning_clause" shape="rect"> + <rect x="43" y="225" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">drop_system_versioning_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m112 0 h4 m0 0 h44 m-184 0 h20 m164 0 h20 m-204 0 q10 0 10 10 m184 0 q0 -10 10 -10 m-194 10 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m114 0 h4 m0 0 h42 m-174 -10 v20 m184 0 v-20 m-184 20 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m114 0 h4 m0 0 h42 m-174 -10 v20 m184 0 v-20 m-184 20 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m150 0 h4 m0 0 h6 m-174 -10 v20 m184 0 v-20 m-184 20 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m152 0 h4 m0 0 h4 m-174 -10 v20 m184 0 v-20 m-184 20 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m154 0 h4 m0 0 h2 m-174 -10 v20 m184 0 v-20 m-184 20 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m154 0 h4 m0 0 h2 m-174 -10 v20 m184 0 v-20 m-184 20 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m154 0 h4 m0 0 h2 m-174 -10 v20 m184 0 v-20 m-184 20 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m156 0 h4 m23 -224 h-3"/> + <polygon points="233 10 241 6 241 14"/> + <polygon points="233 10 225 6 225 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-table-action" title="alter_table_action" shape="rect">alter_table_action</a></div> + <div>         ::= <a href="#add-column-definition" title="add_column_definition" shape="rect">add_column_definition</a></div> + <div>           | <a href="#alter-column-definition" title="alter_column_definition" shape="rect">alter_column_definition</a></div> + <div>           | <a href="#drop-column-definition" title="drop_column_definition" shape="rect">drop_column_definition</a></div> + <div>           | <a href="#add-table-constraint-definition" title="add_table_constraint_definition" shape="rect">add_table_constraint_definition</a></div> + <div>           | <a href="#alter-table-constraint-definition" title="alter_table_constraint_definition" shape="rect">alter_table_constraint_definition</a></div> + <div>           | <a href="#drop-table-constraint-definition" title="drop_table_constraint_definition" shape="rect">drop_table_constraint_definition</a></div> + <div>           | <a href="#add-system-versioning-clause" title="add_system_versioning_clause" shape="rect">add_system_versioning_clause</a></div> + <div>           | <a href="#alter-system-versioning-clause" title="alter_system_versioning_clause" shape="rect">alter_system_versioning_clause</a></div> + <div>           | <a href="#drop-system-versioning-clause" title="drop_system_versioning_clause" shape="rect">drop_system_versioning_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-statement" title="alter-table-statement">alter-table-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_column_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="267" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text> + <rect x="79" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="34">COLUMN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-definition" xlink:title="column_definition" shape="rect"> + <rect x="155" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="13">column_definition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m20 0 h10 m0 0 h46 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v1 m76 0 v-1 m-76 1 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m20 -21 h4 m88 0 h4 m3 0 h-3"/> + <polygon points="257 10 265 6 265 14"/> + <polygon points="257 10 249 6 249 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-column-definition" title="add_column_definition" shape="rect">add_column_definition</a></div> + <div>         ::= 'ADD' 'COLUMN'? <a href="#column-definition" title="column_definition" shape="rect">column_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_column_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="341" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALTER</text> + <rect x="87" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="34">COLUMN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="163" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="167" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-column-action" xlink:title="alter_column_action" shape="rect"> + <rect x="217" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="221" y="13">alter_column_action</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m20 0 h10 m0 0 h46 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v1 m76 0 v-1 m-76 1 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m20 -21 h4 m46 0 h4 m0 0 h4 m100 0 h4 m3 0 h-3"/> + <polygon points="331 10 339 6 339 14"/> + <polygon points="331 10 323 6 323 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-column-definition" title="alter_column_definition" shape="rect">alter_column_definition</a></div> + <div>         ::= 'ALTER' 'COLUMN'? <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#alter-column-action" title="alter_column_action" shape="rect">alter_column_action</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_column_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="303" height="273"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-column-default-clause" xlink:title="set_column_default_clause" shape="rect"> + <rect x="43" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">set_column_default_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-column-default-clause" xlink:title="drop_column_default_clause" shape="rect"> + <rect x="43" y="29" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">drop_column_default_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-column-not-null-clause" xlink:title="set_column_not_null_clause" shape="rect"> + <rect x="43" y="57" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">set_column_not_null_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-column-not-null-clause" xlink:title="drop_column_not_null_clause" shape="rect"> + <rect x="43" y="85" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">drop_column_not_null_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-column-scope-clause" xlink:title="add_column_scope_clause" shape="rect"> + <rect x="43" y="113" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">add_column_scope_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-column-scope-clause" xlink:title="drop_column_scope_clause" shape="rect"> + <rect x="43" y="141" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">drop_column_scope_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-column-data-type-clause" xlink:title="alter_column_data_type_clause" shape="rect"> + <rect x="43" y="169" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">alter_column_data_type_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-identity-column-specification" xlink:title="alter_identity_column_specification" shape="rect"> + <rect x="43" y="197" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">alter_identity_column_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-identity-property-clause" xlink:title="drop_identity_property_clause" shape="rect"> + <rect x="43" y="225" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">drop_identity_property_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-column-generation-expression-clause" xlink:title="drop_column_generation_expression_clause" shape="rect"> + <rect x="43" y="253" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">drop_column_generation_expression_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m134 0 h4 m0 0 h82 m-244 0 h20 m224 0 h20 m-264 0 q10 0 10 10 m244 0 q0 -10 10 -10 m-254 10 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m140 0 h4 m0 0 h76 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m138 0 h4 m0 0 h78 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m146 0 h4 m0 0 h70 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m134 0 h4 m0 0 h82 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m138 0 h4 m0 0 h78 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m156 0 h4 m0 0 h60 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m164 0 h4 m0 0 h52 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m148 0 h4 m0 0 h68 m-234 -10 v20 m244 0 v-20 m-244 20 v8 m244 0 v-8 m-244 8 q0 10 10 10 m224 0 q10 0 10 -10 m-234 10 h4 m216 0 h4 m23 -252 h-3"/> + <polygon points="293 10 301 6 301 14"/> + <polygon points="293 10 285 6 285 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-column-action" title="alter_column_action" shape="rect">alter_column_action</a></div> + <div>         ::= <a href="#set-column-default-clause" title="set_column_default_clause" shape="rect">set_column_default_clause</a></div> + <div>           | <a href="#drop-column-default-clause" title="drop_column_default_clause" shape="rect">drop_column_default_clause</a></div> + <div>           | <a href="#set-column-not-null-clause" title="set_column_not_null_clause" shape="rect">set_column_not_null_clause</a></div> + <div>           | <a href="#drop-column-not-null-clause" title="drop_column_not_null_clause" shape="rect">drop_column_not_null_clause</a></div> + <div>           | <a href="#add-column-scope-clause" title="add_column_scope_clause" shape="rect">add_column_scope_clause</a></div> + <div>           | <a href="#drop-column-scope-clause" title="drop_column_scope_clause" shape="rect">drop_column_scope_clause</a></div> + <div>           | <a href="#alter-column-data-type-clause" title="alter_column_data_type_clause" shape="rect">alter_column_data_type_clause</a></div> + <div>           | <a href="#alter-identity-column-specification" title="alter_identity_column_specification" shape="rect">alter_identity_column_specification</a></div> + <div>           | <a href="#drop-identity-property-clause" title="drop_identity_property_clause" shape="rect">drop_identity_property_clause</a></div> + <div>           | <a href="#drop-column-generation-expression-clause" title="drop_column_generation_expression_clause" shape="rect">drop_column_generation_expression_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-definition" title="alter-column-definition">alter-column-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_column_default_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="153" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#default-clause" xlink:title="default_clause" shape="rect"> + <rect x="55" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="59" y="13">default_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="143 10 151 6 151 14"/> + <polygon points="143 10 135 6 135 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-column-default-clause" title="set_column_default_clause" shape="rect">set_column_default_clause</a></div> + <div>         ::= 'SET' <a href="#default-clause" title="default_clause" shape="rect">default_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_column_default_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">DEFAULT</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m48 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-column-default-clause" title="drop_column_default_clause" shape="rect">drop_column_default_clause</a></div> + <div>         ::= 'DROP' 'DEFAULT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_column_not_null_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">NOT</text> + <rect x="91" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="13">NULL</text> + <path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m32 0 h4 m3 0 h-3"/> + <polygon points="137 10 145 6 145 14"/> + <polygon points="137 10 129 6 129 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-column-not-null-clause" title="set_column_not_null_clause" shape="rect">set_column_not_null_clause</a></div> + <div>         ::= 'SET' 'NOT' 'NULL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_column_not_null_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">NOT</text> + <rect x="101" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="13">NULL</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m32 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-column-not-null-clause" title="drop_column_not_null_clause" shape="rect">drop_column_not_null_clause</a></div> + <div>         ::= 'DROP' 'NOT' 'NULL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_column_scope_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#scope-clause" xlink:title="scope_clause" shape="rect"> + <rect x="59" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">scope_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m72 0 h4 m3 0 h-3"/> + <polygon points="145 10 153 6 153 14"/> + <polygon points="145 10 137 6 137 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-column-scope-clause" title="add_column_scope_clause" shape="rect">add_column_scope_clause</a></div> + <div>         ::= 'ADD' <a href="#scope-clause" title="scope_clause" shape="rect">scope_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_column_scope_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="211" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">SCOPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="111" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m38 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="201 10 209 6 209 14"/> + <polygon points="201 10 193 6 193 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-column-scope-clause" title="drop_column_scope_clause" shape="rect">drop_column_scope_clause</a></div> + <div>         ::= 'DROP' 'SCOPE' <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_column_data_type_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">DATA</text> + <rect x="95" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="13">TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="133" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">data_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m56 0 h4 m3 0 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-column-data-type-clause" title="alter_column_data_type_clause" shape="rect">alter_column_data_type_clause</a></div> + <div>         ::= 'SET' 'DATA' 'TYPE' <a href="#data-type" title="data_type" shape="rect">data_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_identity_column_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="465" height="70"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-identity-column-generation-clause" xlink:title="set_identity_column_generation_clause" shape="rect"> + <rect x="43" y="22" width="190" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">set_identity_column_generation_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-identity-column-option" xlink:title="alter_identity_column_option" shape="rect"> + <rect x="43" y="50" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="62">alter_identity_column_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-identity-column-option" xlink:title="alter_identity_column_option" shape="rect"> + <rect x="281" y="1" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="285" y="13">alter_identity_column_option</text></a><path class="line" d="m17 31 h2 m20 0 h4 m190 0 h4 m-218 0 h20 m198 0 h20 m-238 0 q10 0 10 10 m218 0 q0 -10 10 -10 m-228 10 v8 m218 0 v-8 m-218 8 q0 10 10 10 m198 0 q10 0 10 -10 m-208 10 h4 m140 0 h4 m0 0 h50 m40 -28 h10 m0 0 h138 m-168 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m148 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-148 0 h4 m140 0 h4 m23 21 h-3"/> + <polygon points="455 31 463 27 463 35"/> + <polygon points="455 31 447 27 447 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-identity-column-specification" title="alter_identity_column_specification" shape="rect">alter_identity_column_specification</a></div> + <div>         ::= ( <a href="#set-identity-column-generation-clause" title="set_identity_column_generation_clause" shape="rect">set_identity_column_generation_clause</a> | <a href="#alter-identity-column-option" title="alter_identity_column_option" shape="rect">alter_identity_column_option</a> ) <a href="#alter-identity-column-option" title="alter_identity_column_option" shape="rect">alter_identity_column_option</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_identity_column_generation_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">GENERATED</text> + <rect x="145" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="13">ALWAYS</text> + <rect x="145" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="41">BY</text> + <rect x="173" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="41">DEFAULT</text> + <path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m62 0 h4 m20 0 h4 m48 0 h4 m0 0 h28 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m20 0 h4 m0 0 h4 m48 0 h4 m23 -28 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-identity-column-generation-clause" title="set_identity_column_generation_clause" shape="rect">set_identity_column_generation_clause</a></div> + <div>         ::= 'SET' 'GENERATED' ( 'ALWAYS' | 'BY' 'DEFAULT' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-identity-column-specification" title="alter-identity-column-specification">alter-identity-column-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_identity_column_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-sequence-generator-restart-option" xlink:title="alter_sequence_generator_restart_option" shape="rect"> + <rect x="43" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">alter_sequence_generator_restart_option</text></a><rect x="43" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#basic-sequence-generator-option" xlink:title="basic_sequence_generator_option" shape="rect"> + <rect x="75" y="29" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="41">basic_sequence_generator_option</text></a><path class="line" d="m17 10 h2 m20 0 h4 m200 0 h4 m-228 0 h20 m208 0 h20 m-248 0 q10 0 10 10 m228 0 q0 -10 10 -10 m-238 10 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m24 0 h4 m0 0 h4 m168 0 h4 m23 -28 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-identity-column-option" title="alter_identity_column_option" shape="rect">alter_identity_column_option</a></div> + <div>         ::= <a href="#alter-sequence-generator-restart-option" title="alter_sequence_generator_restart_option" shape="rect">alter_sequence_generator_restart_option</a></div> + <div>           | 'SET' <a href="#basic-sequence-generator-option" title="basic_sequence_generator_option" shape="rect">basic_sequence_generator_option</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-identity-column-specification" title="alter-identity-column-specification">alter-identity-column-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_identity_property_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">IDENTITY</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m50 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-identity-property-clause" title="drop_identity_property_clause" shape="rect">drop_identity_property_clause</a></div> + <div>         ::= 'DROP' 'IDENTITY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_column_generation_expression_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">EXPRESSION</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m68 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-column-generation-expression-clause" title="drop_column_generation_expression_clause" shape="rect">drop_column_generation_expression_clause</a></div> + <div>         ::= 'DROP' 'EXPRESSION'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-column-action" title="alter-column-action">alter-column-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_column_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="315" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="85" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="34">COLUMN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="161" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="215" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m20 0 h10 m0 0 h46 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v1 m76 0 v-1 m-76 1 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m20 -21 h4 m46 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="305 10 313 6 313 14"/> + <polygon points="305 10 297 6 297 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-column-definition" title="drop_column_definition" shape="rect">drop_column_definition</a></div> + <div>         ::= 'DROP' 'COLUMN'? <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_table_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-constraint-definition" xlink:title="table_constraint_definition" shape="rect"> + <rect x="59" y="1" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">table_constraint_definition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m126 0 h4 m3 0 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-table-constraint-definition" title="add_table_constraint_definition" shape="rect">add_table_constraint_definition</a></div> + <div>         ::= 'ADD' <a href="#table-constraint-definition" title="table_constraint_definition" shape="rect">table_constraint_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_table_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="415" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALTER</text> + <rect x="67" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">CONSTRAINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="143" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-enforcement" xlink:title="constraint_enforcement" shape="rect"> + <rect x="273" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="277" y="13">constraint_enforcement</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m68 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m118 0 h4 m3 0 h-3"/> + <polygon points="405 10 413 6 413 14"/> + <polygon points="405 10 397 6 397 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-table-constraint-definition" title="alter_table_constraint_definition" shape="rect">alter_table_constraint_definition</a></div> + <div>         ::= 'ALTER' 'CONSTRAINT' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#constraint-enforcement" title="constraint_enforcement" shape="rect">constraint_enforcement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_table_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="371" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">CONSTRAINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="141" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="271" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="275" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m68 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="361 10 369 6 369 14"/> + <polygon points="361 10 353 6 353 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-table-constraint-definition" title="drop_table_constraint_definition" shape="rect">drop_table_constraint_definition</a></div> + <div>         ::= 'DROP' 'CONSTRAINT' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_system_versioning_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="383" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#system-versioning-clause" xlink:title="system_versioning_clause" shape="rect"> + <rect x="59" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">system_versioning_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-system-version-column-list" xlink:title="add_system_version_column_list" shape="rect"> + <rect x="197" y="1" width="162" height="18" class="nonterminal"/> + <text class="nonterminal" x="201" y="13">add_system_version_column_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m130 0 h4 m0 0 h4 m162 0 h4 m3 0 h-3"/> + <polygon points="373 10 381 6 381 14"/> + <polygon points="373 10 365 6 365 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-system-versioning-clause" title="add_system_versioning_clause" shape="rect">add_system_versioning_clause</a></div> + <div>         ::= 'ADD' <a href="#system-versioning-clause" title="system_versioning_clause" shape="rect">system_versioning_clause</a> <a href="#add-system-version-column-list" title="add_system_version_column_list" shape="rect">add_system_version_column_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_system_version_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="519" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text> + <rect x="79" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="34">COLUMN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-definition-1" xlink:title="column_definition_1" shape="rect"> + <rect x="155" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="13">column_definition_1</text></a><rect x="263" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="13">ADD</text> + <rect x="319" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="323" y="34">COLUMN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-definition-2" xlink:title="column_definition_2" shape="rect"> + <rect x="395" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="399" y="13">column_definition_2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m20 0 h10 m0 0 h46 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v1 m76 0 v-1 m-76 1 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m20 -21 h4 m100 0 h4 m0 0 h4 m28 0 h4 m20 0 h10 m0 0 h46 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v1 m76 0 v-1 m-76 1 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m20 -21 h4 m100 0 h4 m3 0 h-3"/> + <polygon points="509 10 517 6 517 14"/> + <polygon points="509 10 501 6 501 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-system-version-column-list" title="add_system_version_column_list" shape="rect">add_system_version_column_list</a></div> + <div>         ::= 'ADD' 'COLUMN'? <a href="#column-definition-1" title="column_definition_1" shape="rect">column_definition_1</a> 'ADD' 'COLUMN'? <a href="#column-definition-2" title="column_definition_2" shape="rect">column_definition_2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-system-versioning-clause" title="add-system-versioning-clause">add-system-versioning-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_definition_1 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="135" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-definition" xlink:title="column_definition" shape="rect"> + <rect x="23" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_definition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m88 0 h4 m3 0 h-3"/> + <polygon points="125 10 133 6 133 14"/> + <polygon points="125 10 117 6 117 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-definition-1" title="column_definition_1" shape="rect">column_definition_1</a></div> + <div>         ::= <a href="#column-definition" title="column_definition" shape="rect">column_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-system-version-column-list" title="add-system-version-column-list">add-system-version-column-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_definition_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="135" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-definition" xlink:title="column_definition" shape="rect"> + <rect x="23" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_definition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m88 0 h4 m3 0 h-3"/> + <polygon points="125 10 133 6 133 14"/> + <polygon points="125 10 117 6 117 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-definition-2" title="column_definition_2" shape="rect">column_definition_2</a></div> + <div>         ::= <a href="#column-definition" title="column_definition" shape="rect">column_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-system-version-column-list" title="add-system-version-column-list">add-system-version-column-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_system_versioning_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="361" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALTER</text> + <rect x="67" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">SYSTEM</text> + <rect x="119" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">VERSIONING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#retention-period-specification" xlink:title="retention_period_specification" shape="rect"> + <rect x="195" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="199" y="13">retention_period_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m68 0 h4 m0 0 h4 m142 0 h4 m3 0 h-3"/> + <polygon points="351 10 359 6 359 14"/> + <polygon points="351 10 343 6 343 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-system-versioning-clause" title="alter_system_versioning_clause" shape="rect">alter_system_versioning_clause</a></div> + <div>         ::= 'ALTER' 'SYSTEM' 'VERSIONING' <a href="#retention-period-specification" title="retention_period_specification" shape="rect">retention_period_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_system_versioning_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="293" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">SYSTEM</text> + <rect x="117" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="13">VERSIONING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="193" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m68 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="283 10 291 6 291 14"/> + <polygon points="283 10 275 6 275 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-system-versioning-clause" title="drop_system_versioning_clause" shape="rect">drop_system_versioning_clause</a></div> + <div>         ::= 'DROP' 'SYSTEM' 'VERSIONING' <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-table-action" title="alter-table-action">alter-table-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_table_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="435" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">TABLE</text> + <rect x="129" y="22" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="34">IF</text> + <rect x="153" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="34">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="221" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="13">table_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="315" y="22" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="319" y="34">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m36 0 h4 m20 0 h10 m0 0 h62 m-92 0 h20 m72 0 h20 m-112 0 q10 0 10 10 m92 0 q0 -10 10 -10 m-102 10 v1 m92 0 v-1 m-92 1 q0 10 10 10 m72 0 q10 0 10 -10 m-82 10 h4 m16 0 h4 m0 0 h4 m40 0 h4 m20 -21 h4 m66 0 h4 m20 0 h10 m0 0 h74 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v1 m104 0 v-1 m-104 1 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m76 0 h4 m23 -21 h-3"/> + <polygon points="425 10 433 6 433 14"/> + <polygon points="425 10 417 6 417 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-table-statement" title="drop_table_statement" shape="rect">drop_table_statement</a></div> + <div>         ::= 'DROP' 'TABLE' ( 'IF' 'EXISTS' )? <a href="#table-name" title="table_name" shape="rect">table_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + view_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="637" height="121"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#or-replace" xlink:title="or_replace" shape="rect"> + <rect x="93" y="22" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="34">or_replace</text></a><rect x="199" y="22" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="34">RECURSIVE</text> + <rect x="287" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="291" y="13">VIEW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="329" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="333" y="13">table_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#view-specification" xlink:title="view_specification" shape="rect"> + <rect x="403" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="407" y="13">view_specification</text></a><rect x="499" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="503" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-expression" xlink:title="query_expression" shape="rect"> + <rect x="527" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="531" y="13">query_expression</text></a><rect x="343" y="80" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="347" y="92">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#levels-clause" xlink:title="levels_clause" shape="rect"> + <rect x="405" y="101" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="409" y="113">levels_clause</text></a><rect x="501" y="80" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="505" y="92">CHECK</text> + <rect x="547" y="80" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="551" y="92">OPTION</text> + <path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m20 0 h10 m0 0 h56 m-86 0 h20 m66 0 h20 m-106 0 q10 0 10 10 m86 0 q0 -10 10 -10 m-96 10 v1 m86 0 v-1 m-86 1 q0 10 10 10 m66 0 q10 0 10 -10 m-76 10 h4 m58 0 h4 m40 -21 h10 m0 0 h58 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v1 m88 0 v-1 m-88 1 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m20 -21 h4 m34 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m88 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m92 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-328 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h248 m-278 0 h20 m258 0 h20 m-298 0 q10 0 10 10 m278 0 q0 -10 10 -10 m-288 10 v1 m278 0 v-1 m-278 1 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m34 0 h4 m20 0 h10 m0 0 h66 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v1 m96 0 v-1 m-96 1 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m68 0 h4 m20 -21 h4 m38 0 h4 m0 0 h4 m46 0 h4 m23 -21 h-3"/> + <polygon points="627 68 635 64 635 72"/> + <polygon points="627 68 619 64 619 72"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#view-definition" title="view_definition" shape="rect">view_definition</a></div> + <div>         ::= 'CREATE' <a href="#or-replace" title="or_replace" shape="rect">or_replace</a>? 'RECURSIVE'? 'VIEW' <a href="#table-name" title="table_name" shape="rect">table_name</a> <a href="#view-specification" title="view_specification" shape="rect">view_specification</a> 'AS' <a href="#query-expression" title="query_expression" shape="rect">query_expression</a> ( 'WITH' <a href="#levels-clause" title="levels_clause" shape="rect">levels_clause</a>? 'CHECK' 'OPTION' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + view_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regular-view-specification" xlink:title="regular_view_specification" shape="rect"> + <rect x="43" y="1" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">regular_view_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#referenceable-view-specification" xlink:title="referenceable_view_specification" shape="rect"> + <rect x="43" y="29" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">referenceable_view_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m126 0 h4 m0 0 h30 m-184 0 h20 m164 0 h20 m-204 0 q10 0 10 10 m184 0 q0 -10 10 -10 m-194 10 v8 m184 0 v-8 m-184 8 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m156 0 h4 m23 -28 h-3"/> + <polygon points="233 10 241 6 241 14"/> + <polygon points="233 10 225 6 225 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#view-specification" title="view_specification" shape="rect">view_specification</a></div> + <div>         ::= <a href="#regular-view-specification" title="regular_view_specification" shape="rect">regular_view_specification</a></div> + <div>           | <a href="#referenceable-view-specification" title="referenceable_view_specification" shape="rect">referenceable_view_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#view-definition" title="view-definition">view-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + regular_view_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="37"> + <polygon points="9 5 1 1 1 9"/> + <polygon points="17 5 9 1 9 9"/> + <rect x="43" y="17" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="29">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#view-column-list" xlink:title="view_column_list" shape="rect"> + <rect x="63" y="17" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="29">view_column_list</text></a><rect x="157" y="17" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="29">)</text> + <path class="line" d="m17 5 h2 m20 0 h10 m0 0 h124 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v1 m154 0 v-1 m-154 1 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="203 5 211 1 211 9"/> + <polygon points="203 5 195 1 195 9"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regular-view-specification" title="regular_view_specification" shape="rect">regular_view_specification</a></div> + <div>         ::= ( '(' <a href="#view-column-list" title="view_column_list" shape="rect">view_column_list</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#view-specification" title="view-specification">view-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + referenceable_view_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="543" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="51" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="55" y="13">path_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subview-clause" xlink:title="subview_clause" shape="rect"> + <rect x="279" y="22" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="34">subview_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#view-element-list" xlink:title="view_element_list" shape="rect"> + <rect x="409" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="413" y="34">view_element_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m200 0 h4 m20 0 h10 m0 0 h80 m-110 0 h20 m90 0 h20 m-130 0 q10 0 10 10 m110 0 q0 -10 10 -10 m-120 10 v1 m110 0 v-1 m-110 1 q0 10 10 10 m90 0 q10 0 10 -10 m-100 10 h4 m82 0 h4 m40 -21 h10 m0 0 h88 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v1 m118 0 v-1 m-118 1 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m90 0 h4 m23 -21 h-3"/> + <polygon points="533 10 541 6 541 14"/> + <polygon points="533 10 525 6 525 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#referenceable-view-specification" title="referenceable_view_specification" shape="rect">referenceable_view_specification</a></div> + <div>         ::= 'OF' <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a> <a href="#subview-clause" title="subview_clause" shape="rect">subview_clause</a>? <a href="#view-element-list" title="view_element_list" shape="rect">view_element_list</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#view-specification" title="view-specification">view-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + subview_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="161" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UNDER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="71" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="13">table_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m66 0 h4 m3 0 h-3"/> + <polygon points="151 10 159 6 159 14"/> + <polygon points="151 10 143 6 143 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#subview-clause" title="subview_clause" shape="rect">subview_clause</a></div> + <div>         ::= 'UNDER' <a href="#table-name" title="table_name" shape="rect">table_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#referenceable-view-specification" title="referenceable-view-specification">referenceable-view-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + view_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="201" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#view-element" xlink:title="view_element" shape="rect"> + <rect x="63" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">view_element</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="165" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m74 0 h4 m-102 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m82 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-82 0 h4 m8 0 h4 m0 0 h66 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="191 38 199 34 199 42"/> + <polygon points="191 38 183 34 183 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#view-element-list" title="view_element_list" shape="rect">view_element_list</a></div> + <div>         ::= '(' <a href="#view-element" title="view_element" shape="rect">view_element</a> ( ',' <a href="#view-element" title="view_element" shape="rect">view_element</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#referenceable-view-specification" title="referenceable-view-specification">referenceable-view-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + view_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#self-referencing-column-specification" xlink:title="self_referencing_column_specification" shape="rect"> + <rect x="43" y="1" width="178" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">self_referencing_column_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#view-column-option" xlink:title="view_column_option" shape="rect"> + <rect x="43" y="29" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">view_column_option</text></a><path class="line" d="m17 10 h2 m20 0 h4 m178 0 h4 m-206 0 h20 m186 0 h20 m-226 0 q10 0 10 10 m206 0 q0 -10 10 -10 m-216 10 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m104 0 h4 m0 0 h74 m23 -28 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#view-element" title="view_element" shape="rect">view_element</a></div> + <div>         ::= <a href="#self-referencing-column-specification" title="self_referencing_column_specification" shape="rect">self_referencing_column_specification</a></div> + <div>           | <a href="#view-column-option" title="view_column_option" shape="rect">view_column_option</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#view-element-list" title="view-element-list">view-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + view_column_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="275" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><rect x="77" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">WITH</text> + <rect x="119" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">OPTIONS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#scope-clause" xlink:title="scope_clause" shape="rect"> + <rect x="179" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="13">scope_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m52 0 h4 m0 0 h4 m72 0 h4 m3 0 h-3"/> + <polygon points="265 10 273 6 273 14"/> + <polygon points="265 10 257 6 257 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#view-column-option" title="view_column_option" shape="rect">view_column_option</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> 'WITH' 'OPTIONS' <a href="#scope-clause" title="scope_clause" shape="rect">scope_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#view-element" title="view-element">view-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + levels_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="145" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CASCADED</text> + <rect x="43" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LOCAL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m58 0 h4 m-86 0 h20 m66 0 h20 m-106 0 q10 0 10 10 m86 0 q0 -10 10 -10 m-96 10 v8 m86 0 v-8 m-86 8 q0 10 10 10 m66 0 q10 0 10 -10 m-76 10 h4 m38 0 h4 m0 0 h20 m23 -28 h-3"/> + <polygon points="135 10 143 6 143 14"/> + <polygon points="135 10 127 6 127 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#levels-clause" title="levels_clause" shape="rect">levels_clause</a></div> + <div>         ::= 'CASCADED'</div> + <div>           | 'LOCAL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#view-definition" title="view-definition">view-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + view_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#view-column-list" title="view_column_list" shape="rect">view_column_list</a></div> + <div>         ::= <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regular-view-specification" title="regular-view-specification">regular-view-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_view_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="281" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">VIEW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="107" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="13">table_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="181" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="271 10 279 6 279 14"/> + <polygon points="271 10 263 6 263 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-view-statement" title="drop_view_statement" shape="rect">drop_view_statement</a></div> + <div>         ::= 'DROP' 'VIEW' <a href="#table-name" title="table_name" shape="rect">table_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + domain_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="693" height="121"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/> + <rect x="23" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="34">CREATE</text> + <rect x="73" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="34">DOMAIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="129" y="22" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="133" y="34">schema_qualified_name</text></a><rect x="279" y="43" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="283" y="55">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#predefined-type" xlink:title="predefined_type" shape="rect"> + <rect x="327" y="22" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="34">predefined_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#default-clause" xlink:title="default_clause" shape="rect"> + <rect x="439" y="43" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="443" y="55">default_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#domain-constraint" xlink:title="domain_constraint" shape="rect"> + <rect x="561" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="565" y="13">domain_constraint</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collate-clause" xlink:title="collate_clause" shape="rect"> + <rect x="577" y="101" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="581" y="113">collate_clause</text></a><path class="line" d="m17 31 h2 m0 0 h4 m42 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m122 0 h4 m20 0 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m84 0 h4 m20 0 h10 m0 0 h72 m-102 0 h20 m82 0 h20 m-122 0 q10 0 10 10 m102 0 q0 -10 10 -10 m-112 10 v1 m102 0 v-1 m-102 1 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m74 0 h4 m40 -21 h10 m0 0 h92 m-122 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m102 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-102 0 h4 m94 0 h4 m22 21 l2 0 m2 0 l2 0 m2 0 l2 0 m-150 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m23 -21 h-3"/> + <polygon points="683 89 691 85 691 93"/> + <polygon points="683 89 675 85 675 93"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#domain-definition" title="domain_definition" shape="rect">domain_definition</a></div> + <div>         ::= 'CREATE' 'DOMAIN' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> 'AS'? <a href="#predefined-type" title="predefined_type" shape="rect">predefined_type</a> <a href="#default-clause" title="default_clause" shape="rect">default_clause</a>? <a href="#domain-constraint" title="domain_constraint" shape="rect">domain_constraint</a>* <a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + domain_constraint +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="525" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-name-definition" xlink:title="constraint_name_definition" shape="rect"> + <rect x="43" y="22" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">constraint_name_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#check-constraint-definition" xlink:title="check_constraint_definition" shape="rect"> + <rect x="203" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="207" y="13">check_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-characteristics" xlink:title="constraint_characteristics" shape="rect"> + <rect x="361" y="22" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="365" y="34">constraint_characteristics</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m20 -21 h4 m130 0 h4 m20 0 h10 m0 0 h118 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v1 m148 0 v-1 m-148 1 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m120 0 h4 m23 -21 h-3"/> + <polygon points="515 10 523 6 523 14"/> + <polygon points="515 10 507 6 507 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#domain-constraint" title="domain_constraint" shape="rect">domain_constraint</a></div> + <div>         ::= <a href="#constraint-name-definition" title="constraint_name_definition" shape="rect">constraint_name_definition</a>? <a href="#check-constraint-definition" title="check_constraint_definition" shape="rect">check_constraint_definition</a> <a href="#constraint-characteristics" title="constraint_characteristics" shape="rect">constraint_characteristics</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-domain-constraint-definition" title="add-domain-constraint-definition">add-domain-constraint-definition</a></li><li><a href="#domain-definition" title="domain-definition">domain-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_domain_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="379" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALTER</text> + <rect x="67" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">DOMAIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="123" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-domain-action" xlink:title="alter_domain_action" shape="rect"> + <rect x="253" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="257" y="13">alter_domain_action</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m102 0 h4 m3 0 h-3"/> + <polygon points="369 10 377 6 377 14"/> + <polygon points="369 10 361 6 361 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-domain-statement" title="alter_domain_statement" shape="rect">alter_domain_statement</a></div> + <div>         ::= 'ALTER' 'DOMAIN' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#alter-domain-action" title="alter_domain_action" shape="rect">alter_domain_action</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_domain_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-domain-default-clause" xlink:title="set_domain_default_clause" shape="rect"> + <rect x="43" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">set_domain_default_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-domain-default-clause" xlink:title="drop_domain_default_clause" shape="rect"> + <rect x="43" y="29" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">drop_domain_default_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-domain-constraint-definition" xlink:title="add_domain_constraint_definition" shape="rect"> + <rect x="43" y="57" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">add_domain_constraint_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-domain-constraint-definition" xlink:title="drop_domain_constraint_definition" shape="rect"> + <rect x="43" y="85" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">drop_domain_constraint_definition</text></a><path class="line" d="m17 10 h2 m20 0 h4 m136 0 h4 m0 0 h30 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m142 0 h4 m0 0 h24 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m164 0 h4 m0 0 h2 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m166 0 h4 m23 -84 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-domain-action" title="alter_domain_action" shape="rect">alter_domain_action</a></div> + <div>         ::= <a href="#set-domain-default-clause" title="set_domain_default_clause" shape="rect">set_domain_default_clause</a></div> + <div>           | <a href="#drop-domain-default-clause" title="drop_domain_default_clause" shape="rect">drop_domain_default_clause</a></div> + <div>           | <a href="#add-domain-constraint-definition" title="add_domain_constraint_definition" shape="rect">add_domain_constraint_definition</a></div> + <div>           | <a href="#drop-domain-constraint-definition" title="drop_domain_constraint_definition" shape="rect">drop_domain_constraint_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-domain-statement" title="alter-domain-statement">alter-domain-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_domain_default_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="153" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#default-clause" xlink:title="default_clause" shape="rect"> + <rect x="55" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="59" y="13">default_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="143 10 151 6 151 14"/> + <polygon points="143 10 135 6 135 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-domain-default-clause" title="set_domain_default_clause" shape="rect">set_domain_default_clause</a></div> + <div>         ::= 'SET' <a href="#default-clause" title="default_clause" shape="rect">default_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-domain-action" title="alter-domain-action">alter-domain-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_domain_default_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">DEFAULT</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m48 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-domain-default-clause" title="drop_domain_default_clause" shape="rect">drop_domain_default_clause</a></div> + <div>         ::= 'DROP' 'DEFAULT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-domain-action" title="alter-domain-action">alter-domain-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_domain_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#domain-constraint" xlink:title="domain_constraint" shape="rect"> + <rect x="59" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">domain_constraint</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m94 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-domain-constraint-definition" title="add_domain_constraint_definition" shape="rect">add_domain_constraint_definition</a></div> + <div>         ::= 'ADD' <a href="#domain-constraint" title="domain_constraint" shape="rect">domain_constraint</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-domain-action" title="alter-domain-action">alter-domain-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_domain_constraint_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">CONSTRAINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="141" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="13">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m68 0 h4 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-domain-constraint-definition" title="drop_domain_constraint_definition" shape="rect">drop_domain_constraint_definition</a></div> + <div>         ::= 'DROP' 'CONSTRAINT' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-domain-action" title="alter-domain-action">alter-domain-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_domain_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="351" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">DOMAIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="121" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="125" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="251" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="255" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="341 10 349 6 349 14"/> + <polygon points="341 10 333 6 333 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-domain-statement" title="drop_domain_statement" shape="rect">drop_domain_statement</a></div> + <div>         ::= 'DROP' 'DOMAIN' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_set_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="607" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">CHARACTER</text> + <rect x="143" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-name" xlink:title="character_set_name" shape="rect"> + <rect x="175" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="179" y="13">character_set_name</text></a><rect x="307" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="311" y="34">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-source" xlink:title="character_set_source" shape="rect"> + <rect x="355" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="359" y="13">character_set_source</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collate-clause" xlink:title="collate_clause" shape="rect"> + <rect x="491" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="495" y="34">collate_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m104 0 h4 m20 0 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m108 0 h4 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m23 -21 h-3"/> + <polygon points="597 10 605 6 605 14"/> + <polygon points="597 10 589 6 589 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-set-definition" title="character_set_definition" shape="rect">character_set_definition</a></div> + <div>         ::= 'CREATE' 'CHARACTER' 'SET' <a href="#character-set-name" title="character_set_name" shape="rect">character_set_name</a> 'AS'? <a href="#character-set-source" title="character_set_source" shape="rect">character_set_source</a> <a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_set_source +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="55" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="59" y="13">character_set_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-set-source" title="character_set_source" shape="rect">character_set_source</a></div> + <div>         ::= 'GET' <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-set-definition" title="character-set-definition">character-set-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_character_set_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="295" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">CHARACTER</text> + <rect x="135" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-name" xlink:title="character_set_name" shape="rect"> + <rect x="167" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="13">character_set_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m104 0 h4 m3 0 h-3"/> + <polygon points="285 10 293 6 293 14"/> + <polygon points="285 10 277 6 277 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-character-set-statement" title="drop_character_set_statement" shape="rect">drop_character_set_statement</a></div> + <div>         ::= 'DROP' 'CHARACTER' 'SET' <a href="#character-set-name" title="character_set_name" shape="rect">character_set_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + collation_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="773" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">COLLATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="143" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="13">schema_qualified_name</text></a><rect x="273" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="307" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="311" y="13">character_set_specification</text></a><rect x="445" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="449" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="489" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="493" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pad-characteristic" xlink:title="pad_characteristic" shape="rect"> + <rect x="639" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="643" y="34">pad_characteristic</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m130 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m122 0 h4 m20 0 h10 m0 0 h88 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v1 m118 0 v-1 m-118 1 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m90 0 h4 m23 -21 h-3"/> + <polygon points="763 10 771 6 771 14"/> + <polygon points="763 10 755 6 755 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#collation-definition" title="collation_definition" shape="rect">collation_definition</a></div> + <div>         ::= 'CREATE' 'COLLATION' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> 'FOR' <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a> 'FROM' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#pad-characteristic" title="pad_characteristic" shape="rect">pad_characteristic</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + pad_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="159" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NO</text> + <rect x="73" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">PAD</text> + <rect x="43" y="29" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">PAD</text> + <rect x="77" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="41">SPACE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m22 0 h4 m0 0 h4 m26 0 h4 m0 0 h16 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v8 m100 0 v-8 m-100 8 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m26 0 h4 m0 0 h4 m38 0 h4 m23 -28 h-3"/> + <polygon points="149 10 157 6 157 14"/> + <polygon points="149 10 141 6 141 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#pad-characteristic" title="pad_characteristic" shape="rect">pad_characteristic</a></div> + <div>         ::= 'NO' 'PAD'</div> + <div>           | 'PAD' 'SPACE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#collation-definition" title="collation-definition">collation-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_collation_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="365" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">COLLATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="135" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="265" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="269" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="355 10 363 6 363 14"/> + <polygon points="355 10 347 6 347 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-collation-statement" title="drop_collation_statement" shape="rect">drop_collation_statement</a></div> + <div>         ::= 'DROP' 'COLLATION' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transliteration_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="745" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">TRANSLATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="155" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="13">schema_qualified_name</text></a><rect x="285" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="289" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#source-character-set-specification" xlink:title="source_character_set_specification" shape="rect"> + <rect x="319" y="1" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="323" y="13">source_character_set_specification</text></a><rect x="493" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="497" y="13">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-character-set-specification" xlink:title="target_character_set_specification" shape="rect"> + <rect x="521" y="1" width="162" height="18" class="nonterminal"/> + <text class="nonterminal" x="525" y="13">target_character_set_specification</text></a><rect x="691" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="695" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transliteration-source" xlink:title="transliteration_source" shape="rect"> + <rect x="615" y="43" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="619" y="55">transliteration_source</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m166 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m162 0 h4 m0 0 h4 m36 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-144 42 l2 0 m2 0 l2 0 m2 0 l2 0 m2 0 h4 m106 0 h4 m3 0 h-3"/> + <polygon points="735 52 743 48 743 56"/> + <polygon points="735 52 727 48 727 56"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transliteration-definition" title="transliteration_definition" shape="rect">transliteration_definition</a></div> + <div>         ::= 'CREATE' 'TRANSLATION' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> 'FOR' <a href="#source-character-set-specification" title="source_character_set_specification" shape="rect">source_character_set_specification</a> 'TO' <a href="#target-character-set-specification" title="target_character_set_specification" shape="rect">target_character_set_specification</a> 'FROM' <a href="#transliteration-source" title="transliteration_source" shape="rect">transliteration_source</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + source_character_set_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_set_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#source-character-set-specification" title="source_character_set_specification" shape="rect">source_character_set_specification</a></div> + <div>         ::= <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transliteration-definition" title="transliteration-definition">transliteration-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + target_character_set_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_set_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#target-character-set-specification" title="target_character_set_specification" shape="rect">target_character_set_specification</a></div> + <div>         ::= <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transliteration-definition" title="transliteration-definition">transliteration-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transliteration_source +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="43" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transliteration-routine" xlink:title="transliteration_routine" shape="rect"> + <rect x="43" y="29" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">transliteration_routine</text></a><path class="line" d="m17 10 h2 m20 0 h4 m122 0 h4 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v8 m150 0 v-8 m-150 8 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m108 0 h4 m0 0 h14 m23 -28 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transliteration-source" title="transliteration_source" shape="rect">transliteration_source</a></div> + <div>         ::= <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div> + <div>           | <a href="#transliteration-routine" title="transliteration_routine" shape="rect">transliteration_routine</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transliteration-definition" title="transliteration-definition">transliteration-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transliteration_routine +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">specific_routine_designator</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transliteration-routine" title="transliteration_routine" shape="rect">transliteration_routine</a></div> + <div>         ::= <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transliteration-source" title="transliteration-source">transliteration-source</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_transliteration_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="293" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">TRANSLATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="147" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="13">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="283 10 291 6 291 14"/> + <polygon points="283 10 275 6 275 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-transliteration-statement" title="drop_transliteration_statement" shape="rect">drop_transliteration_statement</a></div> + <div>         ::= 'DROP' 'TRANSLATION' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + assertion_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="637" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">ASSERTION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="143" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="13">schema_qualified_name</text></a><rect x="273" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="13">CHECK</text> + <rect x="319" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="323" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="339" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="343" y="13">search_condition</text></a><rect x="433" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="437" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-characteristics" xlink:title="constraint_characteristics" shape="rect"> + <rect x="473" y="22" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="477" y="34">constraint_characteristics</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m38 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h118 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v1 m148 0 v-1 m-148 1 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m120 0 h4 m23 -21 h-3"/> + <polygon points="627 10 635 6 635 14"/> + <polygon points="627 10 619 6 619 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#assertion-definition" title="assertion_definition" shape="rect">assertion_definition</a></div> + <div>         ::= 'CREATE' 'ASSERTION' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> 'CHECK' '(' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> ')' <a href="#constraint-characteristics" title="constraint_characteristics" shape="rect">constraint_characteristics</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_assertion_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="405" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">ASSERTION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="135" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="285" y="22" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="289" y="34">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m122 0 h4 m20 0 h10 m0 0 h74 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v1 m104 0 v-1 m-104 1 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m76 0 h4 m23 -21 h-3"/> + <polygon points="395 10 403 6 403 14"/> + <polygon points="395 10 387 6 387 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-assertion-statement" title="drop_assertion_statement" shape="rect">drop_assertion_statement</a></div> + <div>         ::= 'DROP' 'ASSERTION' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + trigger_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="555" height="84"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">TRIGGER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="129" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="133" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trigger-action-time" xlink:title="trigger_action_time" shape="rect"> + <rect x="259" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="13">trigger_action_time</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trigger-event" xlink:title="trigger_event" shape="rect"> + <rect x="363" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="367" y="13">trigger_event</text></a><rect x="441" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="445" y="13">ON</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="471" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="475" y="13">table_name</text></a><rect x="189" y="64" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="193" y="76">REFERENCING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transition-table-or-variable-list" xlink:title="transition_table_or_variable_list" shape="rect"> + <rect x="269" y="64" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="273" y="76">transition_table_or_variable_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#triggered-action" xlink:title="triggered_action" shape="rect"> + <rect x="449" y="43" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="453" y="55">triggered_action</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m96 0 h4 m0 0 h4 m70 0 h4 m0 0 h4 m22 0 h4 m0 0 h4 m66 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-400 42 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h230 m-260 0 h20 m240 0 h20 m-280 0 q10 0 10 10 m260 0 q0 -10 10 -10 m-270 10 v1 m260 0 v-1 m-260 1 q0 10 10 10 m240 0 q10 0 10 -10 m-250 10 h4 m72 0 h4 m0 0 h4 m152 0 h4 m20 -21 h4 m82 0 h4 m3 0 h-3"/> + <polygon points="545 52 553 48 553 56"/> + <polygon points="545 52 537 48 537 56"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#trigger-definition" title="trigger_definition" shape="rect">trigger_definition</a></div> + <div>         ::= 'CREATE' 'TRIGGER' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#trigger-action-time" title="trigger_action_time" shape="rect">trigger_action_time</a> <a href="#trigger-event" title="trigger_event" shape="rect">trigger_event</a> 'ON' <a href="#table-name" title="table_name" shape="rect">table_name</a> ( 'REFERENCING' <a href="#transition-table-or-variable-list" title="transition_table_or_variable_list" shape="rect">transition_table_or_variable_list</a> )? <a href="#triggered-action" title="triggered_action" shape="rect">triggered_action</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + trigger_action_time +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="163" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">BEFORE</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">AFTER</text> + <rect x="43" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">INSTEAD</text> + <rect x="99" y="57" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="69">OF</text> + <path class="line" d="m17 10 h2 m20 0 h4 m44 0 h4 m0 0 h32 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m36 0 h4 m0 0 h40 m-94 -10 v20 m104 0 v-20 m-104 20 v8 m104 0 v-8 m-104 8 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m48 0 h4 m0 0 h4 m20 0 h4 m23 -56 h-3"/> + <polygon points="153 10 161 6 161 14"/> + <polygon points="153 10 145 6 145 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#trigger-action-time" title="trigger_action_time" shape="rect">trigger_action_time</a></div> + <div>         ::= 'BEFORE'</div> + <div>           | 'AFTER'</div> + <div>           | 'INSTEAD' 'OF'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#trigger-definition" title="trigger-definition">trigger-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + trigger_event +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="301" height="98"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">INSERT</text> + <rect x="43" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">DELETE</text> + <rect x="43" y="57" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">UPDATE</text> + <rect x="115" y="78" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="119" y="90">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trigger-column-list" xlink:title="trigger_column_list" shape="rect"> + <rect x="143" y="78" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="90">trigger_column_list</text></a><path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h174 m-242 0 h20 m222 0 h20 m-262 0 q10 0 10 10 m242 0 q0 -10 10 -10 m-252 10 v8 m242 0 v-8 m-242 8 q0 10 10 10 m222 0 q10 0 10 -10 m-232 10 h4 m40 0 h4 m0 0 h174 m-232 -10 v20 m242 0 v-20 m-242 20 v8 m242 0 v-8 m-242 8 q0 10 10 10 m222 0 q10 0 10 -10 m-232 10 h4 m44 0 h4 m20 0 h10 m0 0 h120 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v1 m150 0 v-1 m-150 1 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m20 0 h4 m0 0 h4 m94 0 h4 m43 -77 h-3"/> + <polygon points="291 10 299 6 299 14"/> + <polygon points="291 10 283 6 283 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#trigger-event" title="trigger_event" shape="rect">trigger_event</a></div> + <div>         ::= 'INSERT'</div> + <div>           | 'DELETE'</div> + <div>           | 'UPDATE' ( 'OF' <a href="#trigger-column-list" title="trigger_column_list" shape="rect">trigger_column_list</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#trigger-definition" title="trigger-definition">trigger-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + trigger_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#trigger-column-list" title="trigger_column_list" shape="rect">trigger_column_list</a></div> + <div>         ::= <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#trigger-event" title="trigger-event">trigger-event</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + triggered_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="563" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">FOR</text> + <rect x="77" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="34">EACH</text> + <rect x="137" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="34">ROW</text> + <rect x="137" y="50" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="62">STATEMENT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#triggered-when-clause" xlink:title="triggered_when_clause" shape="rect"> + <rect x="267" y="22" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="271" y="34">triggered_when_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#triggered-sql-statement" xlink:title="triggered_SQL_statement" shape="rect"> + <rect x="411" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="415" y="13">triggered_SQL_statement</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h174 m-204 0 h20 m184 0 h20 m-224 0 q10 0 10 10 m204 0 q0 -10 10 -10 m-214 10 v1 m204 0 v-1 m-204 1 q0 10 10 10 m184 0 q10 0 10 -10 m-194 10 h4 m26 0 h4 m0 0 h4 m32 0 h4 m20 0 h4 m32 0 h4 m0 0 h30 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m62 0 h4 m60 -49 h10 m0 0 h114 m-144 0 h20 m124 0 h20 m-164 0 q10 0 10 10 m144 0 q0 -10 10 -10 m-154 10 v1 m144 0 v-1 m-144 1 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m116 0 h4 m20 -21 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="553 10 561 6 561 14"/> + <polygon points="553 10 545 6 545 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#triggered-action" title="triggered_action" shape="rect">triggered_action</a></div> + <div>         ::= ( 'FOR' 'EACH' ( 'ROW' | 'STATEMENT' ) )? <a href="#triggered-when-clause" title="triggered_when_clause" shape="rect">triggered_when_clause</a>? <a href="#triggered-sql-statement" title="triggered_SQL_statement" shape="rect">triggered_SQL_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#trigger-definition" title="trigger-definition">trigger-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + triggered_when_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WHEN</text> + <rect x="69" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="89" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="93" y="13">search_condition</text></a><rect x="183" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#triggered-when-clause" title="triggered_when_clause" shape="rect">triggered_when_clause</a></div> + <div>         ::= 'WHEN' '(' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#triggered-action" title="triggered-action">triggered-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + triggered_SQL_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="409" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-procedure-statement" xlink:title="SQL_procedure_statement" shape="rect"> + <rect x="43" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SQL_procedure_statement</text></a><rect x="43" y="43" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="55">BEGIN</text> + <rect x="87" y="43" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="55">ATOMIC</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-procedure-statement" xlink:title="SQL_procedure_statement" shape="rect"> + <rect x="159" y="43" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="163" y="55">SQL_procedure_statement</text></a><rect x="301" y="43" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="305" y="55">;</text> + <rect x="339" y="43" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="343" y="55">END</text> + <path class="line" d="m17 10 h2 m20 0 h4 m134 0 h4 m0 0 h188 m-350 0 h20 m330 0 h20 m-370 0 q10 0 10 10 m350 0 q0 -10 10 -10 m-360 10 v22 m350 0 v-22 m-350 22 q0 10 10 10 m330 0 q10 0 10 -10 m-340 10 h4 m36 0 h4 m0 0 h4 m44 0 h4 m20 0 h4 m134 0 h4 m0 0 h4 m10 0 h4 m-180 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m160 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-160 0 h10 m0 0 h150 m20 21 h4 m26 0 h4 m23 -42 h-3"/> + <polygon points="399 10 407 6 407 14"/> + <polygon points="399 10 391 6 391 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#triggered-sql-statement" title="triggered_SQL_statement" shape="rect">triggered_SQL_statement</a></div> + <div>         ::= <a href="#sql-procedure-statement" title="SQL_procedure_statement" shape="rect">SQL_procedure_statement</a></div> + <div>           | 'BEGIN' 'ATOMIC' ( <a href="#sql-procedure-statement" title="SQL_procedure_statement" shape="rect">SQL_procedure_statement</a> ';' )+ 'END'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#triggered-action" title="triggered-action">triggered-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transition_table_or_variable_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transition-table-or-variable" xlink:title="transition_table_or_variable" shape="rect"> + <rect x="43" y="13" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">transition_table_or_variable</text></a><path class="line" d="m17 22 h2 m20 0 h4 m134 0 h4 m-162 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m142 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-142 0 h10 m0 0 h132 m23 21 h-3"/> + <polygon points="211 22 219 18 219 26"/> + <polygon points="211 22 203 18 203 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transition-table-or-variable-list" title="transition_table_or_variable_list" shape="rect">transition_table_or_variable_list</a></div> + <div>         ::= <a href="#transition-table-or-variable" title="transition_table_or_variable" shape="rect">transition_table_or_variable</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#trigger-definition" title="trigger-definition">trigger-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transition_table_or_variable +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="323" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">OLD</text> + <rect x="43" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NEW</text> + <rect x="121" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="34">ROW</text> + <rect x="121" y="50" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="62">TABLE</text> + <rect x="205" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="209" y="34">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="253" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="257" y="13">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m28 0 h4 m0 0 h2 m-58 0 h20 m38 0 h20 m-78 0 q10 0 10 10 m58 0 q0 -10 10 -10 m-68 10 v8 m58 0 v-8 m-58 8 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m30 0 h4 m40 -28 h10 m0 0 h34 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v1 m64 0 v-1 m-64 1 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m32 0 h4 m0 0 h4 m-54 -10 v20 m64 0 v-20 m-64 20 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m36 0 h4 m40 -49 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="313 10 321 6 321 14"/> + <polygon points="313 10 305 6 305 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transition-table-or-variable" title="transition_table_or_variable" shape="rect">transition_table_or_variable</a></div> + <div>         ::= ( 'OLD' | 'NEW' ) ( 'ROW' | 'TABLE' )? 'AS'? <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transition-table-or-variable-list" title="transition-table-or-variable-list">transition-table-or-variable-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_trigger_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="267" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">TRIGGER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="121" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="125" y="13">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="257 10 265 6 265 14"/> + <polygon points="257 10 249 6 249 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-trigger-statement" title="drop_trigger_statement" shape="rect">drop_trigger_statement</a></div> + <div>         ::= 'DROP' 'TRIGGER' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_type_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="259" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-body" xlink:title="user_defined_type_body" shape="rect"> + <rect x="111" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">user_defined_type_body</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="249 10 257 6 257 14"/> + <polygon points="249 10 241 6 241 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-type-definition" title="user_defined_type_definition" shape="rect">user_defined_type_definition</a></div> + <div>         ::= 'CREATE' 'TYPE' <a href="#user-defined-type-body" title="user_defined_type_body" shape="rect">user_defined_type_body</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_type_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="733" height="100"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="23" y="1" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subtype-clause" xlink:title="subtype_clause" shape="rect"> + <rect x="267" y="22" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="271" y="34">subtype_clause</text></a><rect x="397" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="401" y="34">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#representation" xlink:title="representation" shape="rect"> + <rect x="425" y="22" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="429" y="34">representation</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-option-list" xlink:title="user_defined_type_option_list" shape="rect"> + <rect x="549" y="22" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="553" y="34">user_defined_type_option_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#method-specification-list" xlink:title="method_specification_list" shape="rect"> + <rect x="567" y="80" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="571" y="92">method_specification_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m216 0 h4 m20 0 h10 m0 0 h80 m-110 0 h20 m90 0 h20 m-130 0 q10 0 10 10 m110 0 q0 -10 10 -10 m-120 10 v1 m110 0 v-1 m-110 1 q0 10 10 10 m90 0 q10 0 10 -10 m-100 10 h4 m82 0 h4 m40 -21 h10 m0 0 h102 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v1 m132 0 v-1 m-132 1 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m20 0 h4 m0 0 h4 m76 0 h4 m40 -21 h10 m0 0 h144 m-174 0 h20 m154 0 h20 m-194 0 q10 0 10 10 m174 0 q0 -10 10 -10 m-184 10 v1 m174 0 v-1 m-174 1 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m146 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-200 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h120 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v1 m150 0 v-1 m-150 1 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m122 0 h4 m23 -21 h-3"/> + <polygon points="723 68 731 64 731 72"/> + <polygon points="723 68 715 64 715 72"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-type-body" title="user_defined_type_body" shape="rect">user_defined_type_body</a></div> + <div>         ::= <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> <a href="#subtype-clause" title="subtype_clause" shape="rect">subtype_clause</a>? ( 'AS' <a href="#representation" title="representation" shape="rect">representation</a> )? <a href="#user-defined-type-option-list" title="user_defined_type_option_list" shape="rect">user_defined_type_option_list</a>? <a href="#method-specification-list" title="method_specification_list" shape="rect">method_specification_list</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-definition" title="user-defined-type-definition">user-defined-type-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_type_option_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-option" xlink:title="user_defined_type_option" shape="rect"> + <rect x="43" y="13" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">user_defined_type_option</text></a><path class="line" d="m17 22 h2 m20 0 h4 m130 0 h4 m-158 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m138 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-138 0 h10 m0 0 h128 m23 21 h-3"/> + <polygon points="207 22 215 18 215 26"/> + <polygon points="207 22 199 18 199 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-type-option-list" title="user_defined_type_option_list" shape="rect">user_defined_type_option_list</a></div> + <div>         ::= <a href="#user-defined-type-option" title="user_defined_type_option" shape="rect">user_defined_type_option</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-body" title="user-defined-type-body">user-defined-type-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_type_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#instantiable-clause" xlink:title="instantiable_clause" shape="rect"> + <rect x="43" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">instantiable_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#finality" xlink:title="finality" shape="rect"> + <rect x="43" y="29" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">finality</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reference-type-specification" xlink:title="reference_type_specification" shape="rect"> + <rect x="43" y="57" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">reference_type_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-to-ref" xlink:title="cast_to_ref" shape="rect"> + <rect x="43" y="85" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">cast_to_ref</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-to-type" xlink:title="cast_to_type" shape="rect"> + <rect x="43" y="113" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">cast_to_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-to-distinct" xlink:title="cast_to_distinct" shape="rect"> + <rect x="43" y="141" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">cast_to_distinct</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-to-source" xlink:title="cast_to_source" shape="rect"> + <rect x="43" y="169" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">cast_to_source</text></a><path class="line" d="m17 10 h2 m20 0 h4 m94 0 h4 m0 0 h42 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m36 0 h4 m0 0 h100 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m60 0 h4 m0 0 h76 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m68 0 h4 m0 0 h68 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m78 0 h4 m0 0 h58 m-154 -10 v20 m164 0 v-20 m-164 20 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m80 0 h4 m0 0 h56 m23 -168 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-type-option" title="user_defined_type_option" shape="rect">user_defined_type_option</a></div> + <div>         ::= <a href="#instantiable-clause" title="instantiable_clause" shape="rect">instantiable_clause</a></div> + <div>           | <a href="#finality" title="finality" shape="rect">finality</a></div> + <div>           | <a href="#reference-type-specification" title="reference_type_specification" shape="rect">reference_type_specification</a></div> + <div>           | <a href="#cast-to-ref" title="cast_to_ref" shape="rect">cast_to_ref</a></div> + <div>           | <a href="#cast-to-type" title="cast_to_type" shape="rect">cast_to_type</a></div> + <div>           | <a href="#cast-to-distinct" title="cast_to_distinct" shape="rect">cast_to_distinct</a></div> + <div>           | <a href="#cast-to-source" title="cast_to_source" shape="rect">cast_to_source</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-option-list" title="user-defined-type-option-list">user-defined-type-option-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + subtype_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UNDER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#supertype-name" xlink:title="supertype_name" shape="rect"> + <rect x="71" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="13">supertype_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#subtype-clause" title="subtype_clause" shape="rect">subtype_clause</a></div> + <div>         ::= 'UNDER' <a href="#supertype-name" title="supertype_name" shape="rect">supertype_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-body" title="user-defined-type-body">user-defined-type-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + supertype_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="23" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">path_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m200 0 h4 m3 0 h-3"/> + <polygon points="237 10 245 6 245 14"/> + <polygon points="237 10 229 6 229 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#supertype-name" title="supertype_name" shape="rect">supertype_name</a></div> + <div>         ::= <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#subtype-clause" title="subtype-clause">subtype-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + representation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="171" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#predefined-type" xlink:title="predefined_type" shape="rect"> + <rect x="43" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">predefined_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="43" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#member-list" xlink:title="member_list" shape="rect"> + <rect x="43" y="57" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">member_list</text></a><path class="line" d="m17 10 h2 m20 0 h4 m84 0 h4 m-112 0 h20 m92 0 h20 m-132 0 q10 0 10 10 m112 0 q0 -10 10 -10 m-122 10 v8 m112 0 v-8 m-112 8 q0 10 10 10 m92 0 q10 0 10 -10 m-102 10 h4 m56 0 h4 m0 0 h28 m-102 -10 v20 m112 0 v-20 m-112 20 v8 m112 0 v-8 m-112 8 q0 10 10 10 m92 0 q10 0 10 -10 m-102 10 h4 m66 0 h4 m0 0 h18 m23 -56 h-3"/> + <polygon points="161 10 169 6 169 14"/> + <polygon points="161 10 153 6 153 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#representation" title="representation" shape="rect">representation</a></div> + <div>         ::= <a href="#predefined-type" title="predefined_type" shape="rect">predefined_type</a></div> + <div>           | <a href="#data-type" title="data_type" shape="rect">data_type</a></div> + <div>           | <a href="#member-list" title="member_list" shape="rect">member_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-body" title="user-defined-type-body">user-defined-type-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + member_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#member" xlink:title="member" shape="rect"> + <rect x="63" y="29" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">member</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="141" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m50 0 h4 m-78 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m58 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-58 0 h4 m8 0 h4 m0 0 h42 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="167 38 175 34 175 42"/> + <polygon points="167 38 159 34 159 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#member-list" title="member_list" shape="rect">member_list</a></div> + <div>         ::= '(' <a href="#member" title="member" shape="rect">member</a> ( ',' <a href="#member" title="member" shape="rect">member</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#representation" title="representation">representation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + member +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#attribute-definition" xlink:title="attribute_definition" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">attribute_definition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#member" title="member" shape="rect">member</a>   ::= <a href="#attribute-definition" title="attribute_definition" shape="rect">attribute_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#member-list" title="member-list">member-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + instantiable_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="197" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">INSTANTIABLE</text> + <path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="187 10 195 6 195 14"/> + <polygon points="187 10 179 6 179 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#instantiable-clause" title="instantiable_clause" shape="rect">instantiable_clause</a></div> + <div>         ::= 'NOT'? 'INSTANTIABLE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-option" title="user-defined-type-option">user-defined-type-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + finality +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">FINAL</text> + <path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#finality" title="finality" shape="rect">finality</a> ::= 'NOT'? 'FINAL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-option" title="user-defined-type-option">user-defined-type-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + reference_type_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="257" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-representation" xlink:title="user_defined_representation" shape="rect"> + <rect x="43" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">user_defined_representation</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#derived-representation" xlink:title="derived_representation" shape="rect"> + <rect x="43" y="29" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">derived_representation</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#system-generated-representation" xlink:title="system_generated_representation" shape="rect"> + <rect x="43" y="57" width="170" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">system_generated_representation</text></a><path class="line" d="m17 10 h2 m20 0 h4 m142 0 h4 m0 0 h28 m-198 0 h20 m178 0 h20 m-218 0 q10 0 10 10 m198 0 q0 -10 10 -10 m-208 10 v8 m198 0 v-8 m-198 8 q0 10 10 10 m178 0 q10 0 10 -10 m-188 10 h4 m116 0 h4 m0 0 h54 m-188 -10 v20 m198 0 v-20 m-198 20 v8 m198 0 v-8 m-198 8 q0 10 10 10 m178 0 q10 0 10 -10 m-188 10 h4 m170 0 h4 m23 -56 h-3"/> + <polygon points="247 10 255 6 255 14"/> + <polygon points="247 10 239 6 239 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#reference-type-specification" title="reference_type_specification" shape="rect">reference_type_specification</a></div> + <div>         ::= <a href="#user-defined-representation" title="user_defined_representation" shape="rect">user_defined_representation</a></div> + <div>           | <a href="#derived-representation" title="derived_representation" shape="rect">derived_representation</a></div> + <div>           | <a href="#system-generated-representation" title="system_generated_representation" shape="rect">system_generated_representation</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-option" title="user-defined-type-option">user-defined-type-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_representation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">REF</text> + <rect x="55" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#predefined-type" xlink:title="predefined_type" shape="rect"> + <rect x="101" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="13">predefined_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m38 0 h4 m0 0 h4 m84 0 h4 m3 0 h-3"/> + <polygon points="199 10 207 6 207 14"/> + <polygon points="199 10 191 6 191 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-representation" title="user_defined_representation" shape="rect">user_defined_representation</a></div> + <div>         ::= 'REF' 'USING' <a href="#predefined-type" title="predefined_type" shape="rect">predefined_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#reference-type-specification" title="reference-type-specification">reference-type-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + derived_representation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">REF</text> + <rect x="55" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#list-of-attributes" xlink:title="list_of_attributes" shape="rect"> + <rect x="99" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">list_of_attributes</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m82 0 h4 m3 0 h-3"/> + <polygon points="195 10 203 6 203 14"/> + <polygon points="195 10 187 6 187 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#derived-representation" title="derived_representation" shape="rect">derived_representation</a></div> + <div>         ::= 'REF' 'FROM' <a href="#list-of-attributes" title="list_of_attributes" shape="rect">list_of_attributes</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#reference-type-specification" title="reference-type-specification">reference-type-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + system_generated_representation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">REF</text> + <rect x="55" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">IS</text> + <rect x="81" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="85" y="13">SYSTEM</text> + <rect x="133" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="13">GENERATED</text> + <path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m62 0 h4 m3 0 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#system-generated-representation" title="system_generated_representation" shape="rect">system_generated_representation</a></div> + <div>         ::= 'REF' 'IS' 'SYSTEM' 'GENERATED'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#reference-type-specification" title="reference-type-specification">reference-type-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cast_to_ref +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="329" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CAST</text> + <rect x="63" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">(</text> + <rect x="83" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">SOURCE</text> + <rect x="137" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="13">AS</text> + <rect x="165" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="13">REF</text> + <rect x="197" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="13">)</text> + <rect x="217" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="259" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="319 10 327 6 327 14"/> + <polygon points="319 10 311 6 311 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cast-to-ref" title="cast_to_ref" shape="rect">cast_to_ref</a></div> + <div>         ::= 'CAST' '(' 'SOURCE' 'AS' 'REF' ')' 'WITH' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-option" title="user-defined-type-option">user-defined-type-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cast_to_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="329" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CAST</text> + <rect x="63" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">(</text> + <rect x="83" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">REF</text> + <rect x="115" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="119" y="13">AS</text> + <rect x="143" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="13">SOURCE</text> + <rect x="197" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="13">)</text> + <rect x="217" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="259" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="319 10 327 6 327 14"/> + <polygon points="319 10 311 6 311 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cast-to-type" title="cast_to_type" shape="rect">cast_to_type</a></div> + <div>         ::= 'CAST' '(' 'REF' 'AS' 'SOURCE' ')' 'WITH' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-option" title="user-defined-type-option">user-defined-type-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + list_of_attributes +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="173" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="63" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">identifier</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="137" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="163 38 171 34 171 42"/> + <polygon points="163 38 155 34 155 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#list-of-attributes" title="list_of_attributes" shape="rect">list_of_attributes</a></div> + <div>         ::= '(' <a href="#identifier" title="identifier" shape="rect">identifier</a> ( ',' <a href="#identifier" title="identifier" shape="rect">identifier</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#derived-representation" title="derived-representation">derived-representation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cast_to_distinct +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="355" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CAST</text> + <rect x="63" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">(</text> + <rect x="83" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">SOURCE</text> + <rect x="137" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="13">AS</text> + <rect x="165" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="13">DISTINCT</text> + <rect x="223" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="227" y="13">)</text> + <rect x="243" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="285" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="289" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="345 10 353 6 353 14"/> + <polygon points="345 10 337 6 337 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cast-to-distinct" title="cast_to_distinct" shape="rect">cast_to_distinct</a></div> + <div>         ::= 'CAST' '(' 'SOURCE' 'AS' 'DISTINCT' ')' 'WITH' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-option" title="user-defined-type-option">user-defined-type-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cast_to_source +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="355" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CAST</text> + <rect x="63" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">(</text> + <rect x="83" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">DISTINCT</text> + <rect x="141" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="13">AS</text> + <rect x="169" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="13">SOURCE</text> + <rect x="223" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="227" y="13">)</text> + <rect x="243" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="285" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="289" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="345 10 353 6 353 14"/> + <polygon points="345 10 337 6 337 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cast-to-source" title="cast_to_source" shape="rect">cast_to_source</a></div> + <div>         ::= 'CAST' '(' 'DISTINCT' 'AS' 'SOURCE' ')' 'WITH' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-option" title="user-defined-type-option">user-defined-type-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + method_specification_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#method-specification" xlink:title="method_specification" shape="rect"> + <rect x="43" y="29" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">method_specification</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m104 0 h4 m-132 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m112 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-112 0 h4 m8 0 h4 m0 0 h96 m23 28 h-3"/> + <polygon points="181 38 189 34 189 42"/> + <polygon points="181 38 173 34 173 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#method-specification-list" title="method_specification_list" shape="rect">method_specification_list</a></div> + <div>         ::= <a href="#method-specification" title="method_specification" shape="rect">method_specification</a> ( ',' <a href="#method-specification" title="method_specification" shape="rect">method_specification</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-type-body" title="user-defined-type-body">user-defined-type-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + method_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#original-method-specification" xlink:title="original_method_specification" shape="rect"> + <rect x="43" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">original_method_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#overriding-method-specification" xlink:title="overriding_method_specification" shape="rect"> + <rect x="43" y="29" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">overriding_method_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m142 0 h4 m0 0 h12 m-182 0 h20 m162 0 h20 m-202 0 q10 0 10 10 m182 0 q0 -10 10 -10 m-192 10 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m154 0 h4 m23 -28 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#method-specification" title="method_specification" shape="rect">method_specification</a></div> + <div>         ::= <a href="#original-method-specification" title="original_method_specification" shape="rect">original_method_specification</a></div> + <div>           | <a href="#overriding-method-specification" title="overriding_method_specification" shape="rect">overriding_method_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#method-specification-list" title="method-specification-list">method-specification-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + original_method_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="665" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#partial-method-specification" xlink:title="partial_method_specification" shape="rect"> + <rect x="23" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">partial_method_specification</text></a><rect x="189" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="193" y="34">SELF</text> + <rect x="225" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="229" y="34">AS</text> + <rect x="253" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="34">RESULT</text> + <rect x="343" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="347" y="34">SELF</text> + <rect x="379" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="383" y="34">AS</text> + <rect x="407" y="22" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="411" y="34">LOCATOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#method-characteristics" xlink:title="method_characteristics" shape="rect"> + <rect x="507" y="22" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="511" y="34">method_characteristics</text></a><path class="line" d="m17 10 h2 m0 0 h4 m138 0 h4 m20 0 h10 m0 0 h104 m-134 0 h20 m114 0 h20 m-154 0 q10 0 10 10 m134 0 q0 -10 10 -10 m-144 10 v1 m134 0 v-1 m-134 1 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m28 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m42 0 h4 m40 -21 h10 m0 0 h114 m-144 0 h20 m124 0 h20 m-164 0 q10 0 10 10 m144 0 q0 -10 10 -10 m-154 10 v1 m144 0 v-1 m-144 1 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m28 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m52 0 h4 m40 -21 h10 m0 0 h112 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v1 m142 0 v-1 m-142 1 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m114 0 h4 m23 -21 h-3"/> + <polygon points="655 10 663 6 663 14"/> + <polygon points="655 10 647 6 647 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#original-method-specification" title="original_method_specification" shape="rect">original_method_specification</a></div> + <div>         ::= <a href="#partial-method-specification" title="partial_method_specification" shape="rect">partial_method_specification</a> ( 'SELF' 'AS' 'RESULT' )? ( 'SELF' 'AS' 'LOCATOR' )? <a href="#method-characteristics" title="method_characteristics" shape="rect">method_characteristics</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-original-method-specification" title="add-original-method-specification">add-original-method-specification</a></li><li><a href="#method-specification" title="method-specification">method-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + overriding_method_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OVERRIDING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#partial-method-specification" xlink:title="partial_method_specification" shape="rect"> + <rect x="99" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">partial_method_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m68 0 h4 m0 0 h4 m138 0 h4 m3 0 h-3"/> + <polygon points="251 10 259 6 259 14"/> + <polygon points="251 10 243 6 243 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#overriding-method-specification" title="overriding_method_specification" shape="rect">overriding_method_specification</a></div> + <div>         ::= 'OVERRIDING' <a href="#partial-method-specification" title="partial_method_specification" shape="rect">partial_method_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-overriding-method-specification" title="add-overriding-method-specification">add-overriding-method-specification</a></li><li><a href="#method-specification" title="method-specification">method-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + partial_method_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="707" height="98"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">INSTANCE</text> + <rect x="43" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">STATIC</text> + <rect x="43" y="78" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="90">CONSTRUCTOR</text> + <rect x="149" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="13">METHOD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="205" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="209" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-parameter-declaration-list" xlink:title="SQL_parameter_declaration_list" shape="rect"> + <rect x="259" y="1" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="13">SQL_parameter_declaration_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#returns-clause" xlink:title="returns_clause" shape="rect"> + <rect x="421" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="13">returns_clause</text></a><rect x="525" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="529" y="34">SPECIFIC</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-identifier" xlink:title="specific_identifier" shape="rect"> + <rect x="581" y="22" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="585" y="34">specific_identifier</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m54 0 h4 m0 0 h24 m-96 -10 v20 m106 0 v-20 m-106 20 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m40 0 h4 m0 0 h38 m-96 -10 v20 m106 0 v-20 m-106 20 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m20 -77 h4 m48 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m154 0 h4 m0 0 h4 m76 0 h4 m20 0 h10 m0 0 h136 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v1 m166 0 v-1 m-166 1 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m48 0 h4 m0 0 h4 m82 0 h4 m23 -21 h-3"/> + <polygon points="697 10 705 6 705 14"/> + <polygon points="697 10 689 6 689 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#partial-method-specification" title="partial_method_specification" shape="rect">partial_method_specification</a></div> + <div>         ::= ( 'INSTANCE' | 'STATIC' | 'CONSTRUCTOR' )? 'METHOD' <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#sql-parameter-declaration-list" title="SQL_parameter_declaration_list" shape="rect">SQL_parameter_declaration_list</a> <a href="#returns-clause" title="returns_clause" shape="rect">returns_clause</a> ( 'SPECIFIC' <a href="#specific-identifier" title="specific_identifier" shape="rect">specific_identifier</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#original-method-specification" title="original-method-specification">original-method-specification</a></li><li><a href="#overriding-method-specification" title="overriding-method-specification">overriding-method-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + specific_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name" xlink:title="schema_name" shape="rect"> + <rect x="43" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">schema_name</text></a><rect x="131" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="34">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="167" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="13">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m80 0 h4 m0 0 h4 m8 0 h4 m20 -21 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#specific-identifier" title="specific_identifier" shape="rect">specific_identifier</a></div> + <div>         ::= ( <a href="#schema-name" title="schema_name" shape="rect">schema_name</a> '.' )? <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#method-specification-designator" title="method-specification-designator">method-specification-designator</a></li><li><a href="#partial-method-specification" title="partial-method-specification">partial-method-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + method_characteristics +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#method-characteristic" xlink:title="method_characteristic" shape="rect"> + <rect x="43" y="13" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">method_characteristic</text></a><path class="line" d="m17 22 h2 m20 0 h4 m108 0 h4 m-136 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m116 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-116 0 h10 m0 0 h106 m23 21 h-3"/> + <polygon points="185 22 193 18 193 26"/> + <polygon points="185 22 177 18 177 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#method-characteristics" title="method_characteristics" shape="rect">method_characteristics</a></div> + <div>         ::= <a href="#method-characteristic" title="method_characteristic" shape="rect">method_characteristic</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#original-method-specification" title="original-method-specification">original-method-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + method_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#language-clause" xlink:title="language_clause" shape="rect"> + <rect x="43" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">language_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-style-clause" xlink:title="parameter_style_clause" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">parameter_style_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#deterministic-characteristic" xlink:title="deterministic_characteristic" shape="rect"> + <rect x="43" y="57" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">deterministic_characteristic</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-data-access-indication" xlink:title="SQL_data_access_indication" shape="rect"> + <rect x="43" y="85" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">SQL_data_access_indication</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-call-clause" xlink:title="null_call_clause" shape="rect"> + <rect x="43" y="113" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">null_call_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m88 0 h4 m0 0 h50 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m120 0 h4 m0 0 h18 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m128 0 h4 m0 0 h10 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m138 0 h4 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m78 0 h4 m0 0 h60 m23 -112 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#method-characteristic" title="method_characteristic" shape="rect">method_characteristic</a></div> + <div>         ::= <a href="#language-clause" title="language_clause" shape="rect">language_clause</a></div> + <div>           | <a href="#parameter-style-clause" title="parameter_style_clause" shape="rect">parameter_style_clause</a></div> + <div>           | <a href="#deterministic-characteristic" title="deterministic_characteristic" shape="rect">deterministic_characteristic</a></div> + <div>           | <a href="#sql-data-access-indication" title="SQL_data_access_indication" shape="rect">SQL_data_access_indication</a></div> + <div>           | <a href="#null-call-clause" title="null_call_clause" shape="rect">null_call_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#method-characteristics" title="method-characteristics">method-characteristics</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + attribute_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="409" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="77" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#attribute-default" xlink:title="attribute_default" shape="rect"> + <rect x="161" y="22" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="34">attribute_default</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collate-clause" xlink:title="collate_clause" shape="rect"> + <rect x="293" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="297" y="34">collate_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m56 0 h4 m20 0 h10 m0 0 h82 m-112 0 h20 m92 0 h20 m-132 0 q10 0 10 10 m112 0 q0 -10 10 -10 m-122 10 v1 m112 0 v-1 m-112 1 q0 10 10 10 m92 0 q10 0 10 -10 m-102 10 h4 m84 0 h4 m40 -21 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m23 -21 h-3"/> + <polygon points="399 10 407 6 407 14"/> + <polygon points="399 10 391 6 391 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#attribute-definition" title="attribute_definition" shape="rect">attribute_definition</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#data-type" title="data_type" shape="rect">data_type</a> <a href="#attribute-default" title="attribute_default" shape="rect">attribute_default</a>? <a href="#collate-clause" title="collate_clause" shape="rect">collate_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-attribute-definition" title="add-attribute-definition">add-attribute-definition</a></li><li><a href="#member" title="member">member</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + attribute_default +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="121" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#default-clause" xlink:title="default_clause" shape="rect"> + <rect x="23" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">default_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="111 10 119 6 119 14"/> + <polygon points="111 10 103 6 103 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#attribute-default" title="attribute_default" shape="rect">attribute_default</a></div> + <div>         ::= <a href="#default-clause" title="default_clause" shape="rect">default_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#attribute-definition" title="attribute-definition">attribute-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_type_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="441" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALTER</text> + <rect x="67" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="105" y="1" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-type-action" xlink:title="alter_type_action" shape="rect"> + <rect x="329" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="333" y="13">alter_type_action</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m216 0 h4 m0 0 h4 m88 0 h4 m3 0 h-3"/> + <polygon points="431 10 439 6 439 14"/> + <polygon points="431 10 423 6 423 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-type-statement" title="alter_type_statement" shape="rect">alter_type_statement</a></div> + <div>         ::= 'ALTER' 'TYPE' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> <a href="#alter-type-action" title="alter_type_action" shape="rect">alter_type_action</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_type_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-attribute-definition" xlink:title="add_attribute_definition" shape="rect"> + <rect x="43" y="1" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">add_attribute_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-attribute-definition" xlink:title="drop_attribute_definition" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">drop_attribute_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-original-method-specification" xlink:title="add_original_method_specification" shape="rect"> + <rect x="43" y="57" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">add_original_method_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-overriding-method-specification" xlink:title="add_overriding_method_specification" shape="rect"> + <rect x="43" y="85" width="178" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">add_overriding_method_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-method-specification" xlink:title="drop_method_specification" shape="rect"> + <rect x="43" y="113" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">drop_method_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m116 0 h4 m0 0 h62 m-206 0 h20 m186 0 h20 m-226 0 q10 0 10 10 m206 0 q0 -10 10 -10 m-216 10 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m120 0 h4 m0 0 h58 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m166 0 h4 m0 0 h12 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m178 0 h4 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m132 0 h4 m0 0 h46 m23 -112 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-type-action" title="alter_type_action" shape="rect">alter_type_action</a></div> + <div>         ::= <a href="#add-attribute-definition" title="add_attribute_definition" shape="rect">add_attribute_definition</a></div> + <div>           | <a href="#drop-attribute-definition" title="drop_attribute_definition" shape="rect">drop_attribute_definition</a></div> + <div>           | <a href="#add-original-method-specification" title="add_original_method_specification" shape="rect">add_original_method_specification</a></div> + <div>           | <a href="#add-overriding-method-specification" title="add_overriding_method_specification" shape="rect">add_overriding_method_specification</a></div> + <div>           | <a href="#drop-method-specification" title="drop_method_specification" shape="rect">drop_method_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-type-statement" title="alter-type-statement">alter-type-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_attribute_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text> + <rect x="59" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="63" y="13">ATTRIBUTE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#attribute-definition" xlink:title="attribute_definition" shape="rect"> + <rect x="125" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="13">attribute_definition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m58 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-attribute-definition" title="add_attribute_definition" shape="rect">add_attribute_definition</a></div> + <div>         ::= 'ADD' 'ATTRIBUTE' <a href="#attribute-definition" title="attribute_definition" shape="rect">attribute_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-type-action" title="alter-type-action">alter-type-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_attribute_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">ATTRIBUTE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="131" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="13">identifier</text></a><rect x="185" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="13">RESTRICT</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m58 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="251 10 259 6 259 14"/> + <polygon points="251 10 243 6 243 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-attribute-definition" title="drop_attribute_definition" shape="rect">drop_attribute_definition</a></div> + <div>         ::= 'DROP' 'ATTRIBUTE' <a href="#identifier" title="identifier" shape="rect">identifier</a> 'RESTRICT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-type-action" title="alter-type-action">alter-type-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_original_method_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#original-method-specification" xlink:title="original_method_specification" shape="rect"> + <rect x="59" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">original_method_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m142 0 h4 m3 0 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-original-method-specification" title="add_original_method_specification" shape="rect">add_original_method_specification</a></div> + <div>         ::= 'ADD' <a href="#original-method-specification" title="original_method_specification" shape="rect">original_method_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-type-action" title="alter-type-action">alter-type-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_overriding_method_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#overriding-method-specification" xlink:title="overriding_method_specification" shape="rect"> + <rect x="59" y="1" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">overriding_method_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m154 0 h4 m3 0 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-overriding-method-specification" title="add_overriding_method_specification" shape="rect">add_overriding_method_specification</a></div> + <div>         ::= 'ADD' <a href="#overriding-method-specification" title="overriding_method_specification" shape="rect">overriding_method_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-type-action" title="alter-type-action">alter-type-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_method_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="345" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-method-specification-designator" xlink:title="specific_method_specification_designator" shape="rect"> + <rect x="65" y="1" width="196" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">specific_method_specification_designator</text></a><rect x="269" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="13">RESTRICT</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m196 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="335 10 343 6 343 14"/> + <polygon points="335 10 327 6 327 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-method-specification" title="drop_method_specification" shape="rect">drop_method_specification</a></div> + <div>         ::= 'DROP' <a href="#specific-method-specification-designator" title="specific_method_specification_designator" shape="rect">specific_method_specification_designator</a> 'RESTRICT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-type-action" title="alter-type-action">alter-type-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + specific_method_specification_designator +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="357" height="98"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">INSTANCE</text> + <rect x="43" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">STATIC</text> + <rect x="43" y="78" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="90">CONSTRUCTOR</text> + <rect x="149" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="13">METHOD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="205" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="209" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type-list" xlink:title="data_type_list" shape="rect"> + <rect x="259" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="13">data_type_list</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m54 0 h4 m0 0 h24 m-96 -10 v20 m106 0 v-20 m-106 20 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m40 0 h4 m0 0 h38 m-96 -10 v20 m106 0 v-20 m-106 20 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m20 -77 h4 m48 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="347 10 355 6 355 14"/> + <polygon points="347 10 339 6 339 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#specific-method-specification-designator" title="specific_method_specification_designator" shape="rect">specific_method_specification_designator</a></div> + <div>         ::= ( 'INSTANCE' | 'STATIC' | 'CONSTRUCTOR' )? 'METHOD' <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#data-type-list" title="data_type_list" shape="rect">data_type_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#drop-method-specification" title="drop-method-specification">drop-method-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_data_type_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="427" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="103" y="1" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="13">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="327" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m216 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="417 10 425 6 425 14"/> + <polygon points="417 10 409 6 409 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-data-type-statement" title="drop_data_type_statement" shape="rect">drop_data_type_statement</a></div> + <div>         ::= 'DROP' 'TYPE' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_invoked_routine +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="131" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-routine" xlink:title="schema_routine" shape="rect"> + <rect x="23" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">schema_routine</text></a><path class="line" d="m17 10 h2 m0 0 h4 m84 0 h4 m3 0 h-3"/> + <polygon points="121 10 129 6 129 14"/> + <polygon points="121 10 113 6 113 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-invoked-routine" title="SQL_invoked_routine" shape="rect">SQL_invoked_routine</a></div> + <div>         ::= <a href="#schema-routine" title="schema_routine" shape="rect">schema_routine</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_routine +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-procedure" xlink:title="schema_procedure" shape="rect"> + <rect x="43" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">schema_procedure</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-function" xlink:title="schema_function" shape="rect"> + <rect x="43" y="29" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">schema_function</text></a><path class="line" d="m17 10 h2 m20 0 h4 m98 0 h4 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v8 m126 0 v-8 m-126 8 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m88 0 h4 m0 0 h10 m23 -28 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-routine" title="schema_routine" shape="rect">schema_routine</a></div> + <div>         ::= <a href="#schema-procedure" title="schema_procedure" shape="rect">schema_procedure</a></div> + <div>           | <a href="#schema-function" title="schema_function" shape="rect">schema_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-invoked-routine" title="sql-invoked-routine">sql-invoked-routine</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_procedure +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-invoked-procedure" xlink:title="SQL_invoked_procedure" shape="rect"> + <rect x="73" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="77" y="13">SQL_invoked_procedure</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-procedure" title="schema_procedure" shape="rect">schema_procedure</a></div> + <div>         ::= 'CREATE' <a href="#sql-invoked-procedure" title="SQL_invoked_procedure" shape="rect">SQL_invoked_procedure</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-routine" title="schema-routine">schema-routine</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="313" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#or-replace" xlink:title="or_replace" shape="rect"> + <rect x="93" y="22" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="34">or_replace</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-invoked-function" xlink:title="SQL_invoked_function" shape="rect"> + <rect x="179" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="13">SQL_invoked_function</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m20 0 h10 m0 0 h56 m-86 0 h20 m66 0 h20 m-106 0 q10 0 10 10 m86 0 q0 -10 10 -10 m-96 10 v1 m86 0 v-1 m-86 1 q0 10 10 10 m66 0 q10 0 10 -10 m-76 10 h4 m58 0 h4 m20 -21 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="303 10 311 6 311 14"/> + <polygon points="303 10 295 6 295 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-function" title="schema_function" shape="rect">schema_function</a></div> + <div>         ::= 'CREATE' <a href="#or-replace" title="or_replace" shape="rect">or_replace</a>? <a href="#sql-invoked-function" title="SQL_invoked_function" shape="rect">SQL_invoked_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-routine" title="schema-routine">schema-routine</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_invoked_procedure +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="597" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">PROCEDURE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="95" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-parameter-declaration-list" xlink:title="SQL_parameter_declaration_list" shape="rect"> + <rect x="225" y="1" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="229" y="13">SQL_parameter_declaration_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-characteristics" xlink:title="routine_characteristics" shape="rect"> + <rect x="387" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="391" y="13">routine_characteristics</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-body" xlink:title="routine_body" shape="rect"> + <rect x="503" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="507" y="13">routine_body</text></a><path class="line" d="m17 10 h2 m0 0 h4 m64 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m154 0 h4 m0 0 h4 m108 0 h4 m0 0 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="587 10 595 6 595 14"/> + <polygon points="587 10 579 6 579 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-invoked-procedure" title="SQL_invoked_procedure" shape="rect">SQL_invoked_procedure</a></div> + <div>         ::= 'PROCEDURE' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#sql-parameter-declaration-list" title="SQL_parameter_declaration_list" shape="rect">SQL_parameter_declaration_list</a> <a href="#routine-characteristics" title="routine_characteristics" shape="rect">routine_characteristics</a> <a href="#routine-body" title="routine_body" shape="rect">routine_body</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-procedure" title="schema-procedure">schema-procedure</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_invoked_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="325" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#function-specification" xlink:title="function_specification" shape="rect"> + <rect x="43" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">function_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#method-specification-designator" xlink:title="method_specification_designator" shape="rect"> + <rect x="43" y="29" width="160" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">method_specification_designator</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-body" xlink:title="routine_body" shape="rect"> + <rect x="231" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="235" y="13">routine_body</text></a><path class="line" d="m17 10 h2 m20 0 h4 m102 0 h4 m0 0 h58 m-188 0 h20 m168 0 h20 m-208 0 q10 0 10 10 m188 0 q0 -10 10 -10 m-198 10 v8 m188 0 v-8 m-188 8 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m160 0 h4 m20 -28 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="315 10 323 6 323 14"/> + <polygon points="315 10 307 6 307 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-invoked-function" title="SQL_invoked_function" shape="rect">SQL_invoked_function</a></div> + <div>         ::= ( <a href="#function-specification" title="function_specification" shape="rect">function_specification</a> | <a href="#method-specification-designator" title="method_specification_designator" shape="rect">method_specification_designator</a> ) <a href="#routine-body" title="routine_body" shape="rect">routine_body</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-function" title="schema-function">schema-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_parameter_declaration_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="305" height="61"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-parameter-declaration" xlink:title="SQL_parameter_declaration" shape="rect"> + <rect x="83" y="29" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">SQL_parameter_declaration</text></a><rect x="83" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">,</text> + <rect x="269" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m40 0 h4 m138 0 h4 m-166 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m146 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-146 0 h4 m8 0 h4 m0 0 h130 m-186 28 h20 m186 0 h20 m-226 0 q10 0 10 10 m206 0 q0 -10 10 -10 m-216 10 v1 m206 0 v-1 m-206 1 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h10 m0 0 h176 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="295 38 303 34 303 42"/> + <polygon points="295 38 287 34 287 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-parameter-declaration-list" title="SQL_parameter_declaration_list" shape="rect">SQL_parameter_declaration_list</a></div> + <div>         ::= '(' ( <a href="#sql-parameter-declaration" title="SQL_parameter_declaration" shape="rect">SQL_parameter_declaration</a> ( ',' <a href="#sql-parameter-declaration" title="SQL_parameter_declaration" shape="rect">SQL_parameter_declaration</a> )* )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-invoked-procedure" title="sql-invoked-procedure">sql-invoked-procedure</a></li><li><a href="#function-specification" title="function-specification">function-specification</a></li><li><a href="#method-specification-designator" title="method-specification-designator">method-specification-designator</a></li><li><a href="#partial-method-specification" title="partial-method-specification">partial-method-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_parameter_declaration +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="653" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-mode" xlink:title="parameter_mode" shape="rect"> + <rect x="43" y="22" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">parameter_mode</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="183" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="187" y="34">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-type" xlink:title="parameter_type" shape="rect"> + <rect x="257" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="261" y="13">parameter_type</text></a><rect x="369" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="373" y="34">RESULT</text> + <rect x="459" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="463" y="34">DEFAULT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-default" xlink:title="parameter_default" shape="rect"> + <rect x="515" y="22" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="519" y="34">parameter_default</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h90 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v1 m120 0 v-1 m-120 1 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m92 0 h4 m40 -21 h10 m0 0 h44 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v1 m74 0 v-1 m-74 1 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m46 0 h4 m20 -21 h4 m84 0 h4 m20 0 h10 m0 0 h40 m-70 0 h20 m50 0 h20 m-90 0 q10 0 10 10 m70 0 q0 -10 10 -10 m-80 10 v1 m70 0 v-1 m-70 1 q0 10 10 10 m50 0 q10 0 10 -10 m-60 10 h4 m42 0 h4 m40 -21 h10 m0 0 h148 m-178 0 h20 m158 0 h20 m-198 0 q10 0 10 10 m178 0 q0 -10 10 -10 m-188 10 v1 m178 0 v-1 m-178 1 q0 10 10 10 m158 0 q10 0 10 -10 m-168 10 h4 m48 0 h4 m0 0 h4 m94 0 h4 m23 -21 h-3"/> + <polygon points="643 10 651 6 651 14"/> + <polygon points="643 10 635 6 635 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-parameter-declaration" title="SQL_parameter_declaration" shape="rect">SQL_parameter_declaration</a></div> + <div>         ::= <a href="#parameter-mode" title="parameter_mode" shape="rect">parameter_mode</a>? <a href="#identifier" title="identifier" shape="rect">identifier</a>? <a href="#parameter-type" title="parameter_type" shape="rect">parameter_type</a> 'RESULT'? ( 'DEFAULT' <a href="#parameter-default" title="parameter_default" shape="rect">parameter_default</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-parameter-declaration-list" title="sql-parameter-declaration-list">sql-parameter-declaration-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parameter_default +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="271" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="43" y="29" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">contextually_typed_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h94 m-212 0 h20 m192 0 h20 m-232 0 q10 0 10 10 m212 0 q0 -10 10 -10 m-222 10 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m184 0 h4 m23 -28 h-3"/> + <polygon points="261 10 269 6 269 14"/> + <polygon points="261 10 253 6 253 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parameter-default" title="parameter_default" shape="rect">parameter_default</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>           | <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-parameter-declaration" title="sql-parameter-declaration">sql-parameter-declaration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parameter_mode +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="125" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">IN</text> + <rect x="43" y="29" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">OUT</text> + <rect x="43" y="57" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">INOUT</text> + <path class="line" d="m17 10 h2 m20 0 h4 m18 0 h4 m0 0 h20 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v8 m66 0 v-8 m-66 8 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h4 m28 0 h4 m0 0 h10 m-56 -10 v20 m66 0 v-20 m-66 20 v8 m66 0 v-8 m-66 8 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h4 m38 0 h4 m23 -56 h-3"/> + <polygon points="115 10 123 6 123 14"/> + <polygon points="115 10 107 6 107 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parameter-mode" title="parameter_mode" shape="rect">parameter_mode</a></div> + <div>         ::= 'IN'</div> + <div>           | 'OUT'</div> + <div>           | 'INOUT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-parameter-declaration" title="sql-parameter-declaration">sql-parameter-declaration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parameter_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="23" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#locator-indication" xlink:title="locator_indication" shape="rect"> + <rect x="107" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="34">locator_indication</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m23 -21 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parameter-type" title="parameter_type" shape="rect">parameter_type</a></div> + <div>         ::= <a href="#data-type" title="data_type" shape="rect">data_type</a> <a href="#locator-indication" title="locator_indication" shape="rect">locator_indication</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-parameter-declaration" title="sql-parameter-declaration">sql-parameter-declaration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + locator_indication +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="127" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">AS</text> + <rect x="51" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="55" y="13">LOCATOR</text> + <path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="117 10 125 6 125 14"/> + <polygon points="117 10 109 6 109 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#locator-indication" title="locator_indication" shape="rect">locator_indication</a></div> + <div>         ::= 'AS' 'LOCATOR'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#host-parameter-data-type" title="host-parameter-data-type">host-parameter-data-type</a></li><li><a href="#parameter-type" title="parameter-type">parameter-type</a></li><li><a href="#result-cast-from-type" title="result-cast-from-type">result-cast-from-type</a></li><li><a href="#returns-data-type" title="returns-data-type">returns-data-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + function_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="731" height="100"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FUNCTION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="87" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-parameter-declaration-list" xlink:title="SQL_parameter_declaration_list" shape="rect"> + <rect x="217" y="1" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="221" y="13">SQL_parameter_declaration_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#returns-clause" xlink:title="returns_clause" shape="rect"> + <rect x="379" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="383" y="13">returns_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-description" xlink:title="routine_description" shape="rect"> + <rect x="483" y="22" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="487" y="34">routine_description</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-characteristics" xlink:title="routine_characteristics" shape="rect"> + <rect x="605" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="609" y="13">routine_characteristics</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dispatch-clause" xlink:title="dispatch_clause" shape="rect"> + <rect x="605" y="80" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="609" y="92">dispatch_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m154 0 h4 m0 0 h4 m76 0 h4 m20 0 h10 m0 0 h92 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v1 m122 0 v-1 m-122 1 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m94 0 h4 m20 -21 h4 m108 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-160 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h80 m-110 0 h20 m90 0 h20 m-130 0 q10 0 10 10 m110 0 q0 -10 10 -10 m-120 10 v1 m110 0 v-1 m-110 1 q0 10 10 10 m90 0 q10 0 10 -10 m-100 10 h4 m82 0 h4 m23 -21 h-3"/> + <polygon points="721 68 729 64 729 72"/> + <polygon points="721 68 713 64 713 72"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#function-specification" title="function_specification" shape="rect">function_specification</a></div> + <div>         ::= 'FUNCTION' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#sql-parameter-declaration-list" title="SQL_parameter_declaration_list" shape="rect">SQL_parameter_declaration_list</a> <a href="#returns-clause" title="returns_clause" shape="rect">returns_clause</a> <a href="#routine-description" title="routine_description" shape="rect">routine_description</a>? <a href="#routine-characteristics" title="routine_characteristics" shape="rect">routine_characteristics</a> <a href="#dispatch-clause" title="dispatch_clause" shape="rect">dispatch_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-invoked-function" title="sql-invoked-function">sql-invoked-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + method_specification_designator +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="859" height="126"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">SPECIFIC</text> + <rect x="99" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">METHOD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-identifier" xlink:title="specific_identifier" shape="rect"> + <rect x="155" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="13">specific_identifier</text></a><rect x="63" y="50" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="62">INSTANCE</text> + <rect x="63" y="78" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="90">STATIC</text> + <rect x="63" y="106" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="118">CONSTRUCTOR</text> + <rect x="169" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="41">METHOD</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="225" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="229" y="41">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-parameter-declaration-list" xlink:title="SQL_parameter_declaration_list" shape="rect"> + <rect x="279" y="29" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="41">SQL_parameter_declaration_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#returns-clause" xlink:title="returns_clause" shape="rect"> + <rect x="461" y="50" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="465" y="62">returns_clause</text></a><rect x="565" y="29" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="569" y="41">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="599" y="29" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="603" y="41">schema_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m48 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m82 0 h4 m0 0 h578 m-800 0 h20 m780 0 h20 m-820 0 q10 0 10 10 m800 0 q0 -10 10 -10 m-810 10 v8 m800 0 v-8 m-800 8 q0 10 10 10 m780 0 q10 0 10 -10 m-770 10 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m54 0 h4 m0 0 h24 m-96 -10 v20 m106 0 v-20 m-106 20 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m40 0 h4 m0 0 h38 m-96 -10 v20 m106 0 v-20 m-106 20 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m20 -77 h4 m48 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m154 0 h4 m20 0 h10 m0 0 h74 m-104 0 h20 m84 0 h20 m-124 0 q10 0 10 10 m104 0 q0 -10 10 -10 m-114 10 v1 m104 0 v-1 m-104 1 q0 10 10 10 m84 0 q10 0 10 -10 m-94 10 h4 m76 0 h4 m20 -21 h4 m26 0 h4 m0 0 h4 m216 0 h4 m23 -28 h-3"/> + <polygon points="849 10 857 6 857 14"/> + <polygon points="849 10 841 6 841 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#method-specification-designator" title="method_specification_designator" shape="rect">method_specification_designator</a></div> + <div>         ::= 'SPECIFIC' 'METHOD' <a href="#specific-identifier" title="specific_identifier" shape="rect">specific_identifier</a></div> + <div>           | ( 'INSTANCE' | 'STATIC' | 'CONSTRUCTOR' )? 'METHOD' <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#sql-parameter-declaration-list" title="SQL_parameter_declaration_list" shape="rect">SQL_parameter_declaration_list</a> <a href="#returns-clause" title="returns_clause" shape="rect">returns_clause</a>? 'FOR' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-invoked-function" title="sql-invoked-function">sql-invoked-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + routine_characteristics +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="37"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-characteristic" xlink:title="routine_characteristic" shape="rect"> + <rect x="43" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">routine_characteristic</text></a><path class="line" d="m17 31 h2 m20 0 h10 m0 0 h102 m-132 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m112 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-112 0 h4 m104 0 h4 m23 21 h-3"/> + <polygon points="181 31 189 27 189 35"/> + <polygon points="181 31 173 27 173 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#routine-characteristics" title="routine_characteristics" shape="rect">routine_characteristics</a></div> + <div>         ::= <a href="#routine-characteristic" title="routine_characteristic" shape="rect">routine_characteristic</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-invoked-procedure" title="sql-invoked-procedure">sql-invoked-procedure</a></li><li><a href="#function-specification" title="function-specification">function-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + routine_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="217"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#language-clause" xlink:title="language_clause" shape="rect"> + <rect x="43" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">language_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-style-clause" xlink:title="parameter_style_clause" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">parameter_style_clause</text></a><rect x="43" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">SPECIFIC</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="99" y="57" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="69">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#deterministic-characteristic" xlink:title="deterministic_characteristic" shape="rect"> + <rect x="43" y="85" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">deterministic_characteristic</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-data-access-indication" xlink:title="SQL_data_access_indication" shape="rect"> + <rect x="43" y="113" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">SQL_data_access_indication</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-call-clause" xlink:title="null_call_clause" shape="rect"> + <rect x="43" y="141" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">null_call_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#returned-result-sets-characteristic" xlink:title="returned_result_sets_characteristic" shape="rect"> + <rect x="43" y="169" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">returned_result_sets_characteristic</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#savepoint-level-indication" xlink:title="savepoint_level_indication" shape="rect"> + <rect x="43" y="197" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">savepoint_level_indication</text></a><path class="line" d="m17 10 h2 m20 0 h4 m88 0 h4 m0 0 h90 m-206 0 h20 m186 0 h20 m-226 0 q10 0 10 10 m206 0 q0 -10 10 -10 m-216 10 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m120 0 h4 m0 0 h58 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m48 0 h4 m0 0 h4 m122 0 h4 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m128 0 h4 m0 0 h50 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m138 0 h4 m0 0 h40 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m78 0 h4 m0 0 h100 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m166 0 h4 m0 0 h12 m-196 -10 v20 m206 0 v-20 m-206 20 v8 m206 0 v-8 m-206 8 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m126 0 h4 m0 0 h52 m23 -196 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#routine-characteristic" title="routine_characteristic" shape="rect">routine_characteristic</a></div> + <div>         ::= <a href="#language-clause" title="language_clause" shape="rect">language_clause</a></div> + <div>           | <a href="#parameter-style-clause" title="parameter_style_clause" shape="rect">parameter_style_clause</a></div> + <div>           | 'SPECIFIC' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div> + <div>           | <a href="#deterministic-characteristic" title="deterministic_characteristic" shape="rect">deterministic_characteristic</a></div> + <div>           | <a href="#sql-data-access-indication" title="SQL_data_access_indication" shape="rect">SQL_data_access_indication</a></div> + <div>           | <a href="#null-call-clause" title="null_call_clause" shape="rect">null_call_clause</a></div> + <div>           | <a href="#returned-result-sets-characteristic" title="returned_result_sets_characteristic" shape="rect">returned_result_sets_characteristic</a></div> + <div>           | <a href="#savepoint-level-indication" title="savepoint_level_indication" shape="rect">savepoint_level_indication</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#routine-characteristics" title="routine-characteristics">routine-characteristics</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + savepoint_level_indication +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="227" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NEW</text> + <rect x="43" y="29" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">OLD</text> + <rect x="101" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="13">SAVEPOINT</text> + <rect x="169" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="13">LEVEL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m30 0 h4 m-58 0 h20 m38 0 h20 m-78 0 q10 0 10 10 m58 0 q0 -10 10 -10 m-68 10 v8 m58 0 v-8 m-58 8 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m28 0 h4 m0 0 h2 m20 -28 h4 m60 0 h4 m0 0 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="217 10 225 6 225 14"/> + <polygon points="217 10 209 6 209 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#savepoint-level-indication" title="savepoint_level_indication" shape="rect">savepoint_level_indication</a></div> + <div>         ::= ( 'NEW' | 'OLD' ) 'SAVEPOINT' 'LEVEL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#routine-characteristic" title="routine-characteristic">routine-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + returned_result_sets_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="353" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DYNAMIC</text> + <rect x="83" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">RESULT</text> + <rect x="133" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="13">SETS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#maximum-returned-result-sets" xlink:title="maximum_returned_result_sets" shape="rect"> + <rect x="171" y="1" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="175" y="13">maximum_returned_result_sets</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m158 0 h4 m3 0 h-3"/> + <polygon points="343 10 351 6 351 14"/> + <polygon points="343 10 335 6 335 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#returned-result-sets-characteristic" title="returned_result_sets_characteristic" shape="rect">returned_result_sets_characteristic</a></div> + <div>         ::= 'DYNAMIC' 'RESULT' 'SETS' <a href="#maximum-returned-result-sets" title="maximum_returned_result_sets" shape="rect">maximum_returned_result_sets</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-routine-characteristic" title="alter-routine-characteristic">alter-routine-characteristic</a></li><li><a href="#routine-characteristic" title="routine-characteristic">routine-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parameter_style_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">PARAMETER</text> + <rect x="93" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">STYLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-style" xlink:title="parameter_style" shape="rect"> + <rect x="135" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">parameter_style</text></a><path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m84 0 h4 m3 0 h-3"/> + <polygon points="233 10 241 6 241 14"/> + <polygon points="233 10 225 6 225 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parameter-style-clause" title="parameter_style_clause" shape="rect">parameter_style_clause</a></div> + <div>         ::= 'PARAMETER' 'STYLE' <a href="#parameter-style" title="parameter_style" shape="rect">parameter_style</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-routine-characteristic" title="alter-routine-characteristic">alter-routine-characteristic</a></li><li><a href="#external-body-reference" title="external-body-reference">external-body-reference</a></li><li><a href="#method-characteristic" title="method-characteristic">method-characteristic</a></li><li><a href="#routine-characteristic" title="routine-characteristic">routine-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dispatch_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="149" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">STATIC</text> + <rect x="71" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">DISPATCH</text> + <path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m54 0 h4 m3 0 h-3"/> + <polygon points="139 10 147 6 147 14"/> + <polygon points="139 10 131 6 131 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dispatch-clause" title="dispatch_clause" shape="rect">dispatch_clause</a></div> + <div>         ::= 'STATIC' 'DISPATCH'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#function-specification" title="function-specification">function-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + returns_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="173" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">RETURNS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#returns-type" xlink:title="returns_type" shape="rect"> + <rect x="81" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="13">returns_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m0 0 h4 m68 0 h4 m3 0 h-3"/> + <polygon points="163 10 171 6 171 14"/> + <polygon points="163 10 155 6 155 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#returns-clause" title="returns_clause" shape="rect">returns_clause</a></div> + <div>         ::= 'RETURNS' <a href="#returns-type" title="returns_type" shape="rect">returns_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#function-specification" title="function-specification">function-specification</a></li><li><a href="#method-specification-designator" title="method-specification-designator">method-specification-designator</a></li><li><a href="#partial-method-specification" title="partial-method-specification">partial-method-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + returns_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#returns-data-type" xlink:title="returns_data_type" shape="rect"> + <rect x="43" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">returns_data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result-cast" xlink:title="result_cast" shape="rect"> + <rect x="165" y="22" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="169" y="34">result_cast</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#returns-table-type" xlink:title="returns_table_type" shape="rect"> + <rect x="43" y="50" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="62">returns_table_type</text></a><path class="line" d="m17 10 h2 m20 0 h4 m94 0 h4 m20 0 h10 m0 0 h56 m-86 0 h20 m66 0 h20 m-106 0 q10 0 10 10 m86 0 q0 -10 10 -10 m-96 10 v1 m86 0 v-1 m-86 1 q0 10 10 10 m66 0 q10 0 10 -10 m-76 10 h4 m58 0 h4 m-208 -21 h20 m208 0 h20 m-248 0 q10 0 10 10 m228 0 q0 -10 10 -10 m-238 10 v29 m228 0 v-29 m-228 29 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m96 0 h4 m0 0 h104 m23 -49 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#returns-type" title="returns_type" shape="rect">returns_type</a></div> + <div>         ::= <a href="#returns-data-type" title="returns_data_type" shape="rect">returns_data_type</a> <a href="#result-cast" title="result_cast" shape="rect">result_cast</a>?</div> + <div>           | <a href="#returns-table-type" title="returns_table_type" shape="rect">returns_table_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#returns-clause" title="returns-clause">returns-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + returns_table_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-function-column-list" xlink:title="table_function_column_list" shape="rect"> + <rect x="67" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="71" y="13">table_function_column_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#returns-table-type" title="returns_table_type" shape="rect">returns_table_type</a></div> + <div>         ::= 'TABLE' <a href="#table-function-column-list" title="table_function_column_list" shape="rect">table_function_column_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#returns-type" title="returns-type">returns-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_function_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="299" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-function-column-list-element" xlink:title="table_function_column_list_element" shape="rect"> + <rect x="63" y="29" width="172" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">table_function_column_list_element</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="263" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m172 0 h4 m-200 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m180 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-180 0 h4 m8 0 h4 m0 0 h164 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="289 38 297 34 297 42"/> + <polygon points="289 38 281 34 281 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-function-column-list" title="table_function_column_list" shape="rect">table_function_column_list</a></div> + <div>         ::= '(' <a href="#table-function-column-list-element" title="table_function_column_list_element" shape="rect">table_function_column_list_element</a> ( ',' <a href="#table-function-column-list-element" title="table_function_column_list_element" shape="rect">table_function_column_list_element</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#returns-table-type" title="returns-table-type">returns-table-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_function_column_list_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="77" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">data_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m56 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-function-column-list-element" title="table_function_column_list_element" shape="rect">table_function_column_list_element</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#data-type" title="data_type" shape="rect">data_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-function-column-list" title="table-function-column-list">table-function-column-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + result_cast +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CAST</text> + <rect x="63" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result-cast-from-type" xlink:title="result_cast_from_type" shape="rect"> + <rect x="107" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="13">result_cast_from_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m112 0 h4 m3 0 h-3"/> + <polygon points="233 10 241 6 241 14"/> + <polygon points="233 10 225 6 225 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#result-cast" title="result_cast" shape="rect">result_cast</a></div> + <div>         ::= 'CAST' 'FROM' <a href="#result-cast-from-type" title="result_cast_from_type" shape="rect">result_cast_from_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#returns-type" title="returns-type">returns-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + result_cast_from_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="23" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#locator-indication" xlink:title="locator_indication" shape="rect"> + <rect x="107" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="34">locator_indication</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m23 -21 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#result-cast-from-type" title="result_cast_from_type" shape="rect">result_cast_from_type</a></div> + <div>         ::= <a href="#data-type" title="data_type" shape="rect">data_type</a> <a href="#locator-indication" title="locator_indication" shape="rect">locator_indication</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#result-cast" title="result-cast">result-cast</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + returns_data_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="23" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#locator-indication" xlink:title="locator_indication" shape="rect"> + <rect x="107" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="34">locator_indication</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m23 -21 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#returns-data-type" title="returns_data_type" shape="rect">returns_data_type</a></div> + <div>         ::= <a href="#data-type" title="data_type" shape="rect">data_type</a> <a href="#locator-indication" title="locator_indication" shape="rect">locator_indication</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#returns-type" title="returns-type">returns-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + routine_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="211" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-routine-spec" xlink:title="SQL_routine_spec" shape="rect"> + <rect x="43" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SQL_routine_spec</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#external-body-reference" xlink:title="external_body_reference" shape="rect"> + <rect x="43" y="29" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">external_body_reference</text></a><path class="line" d="m17 10 h2 m20 0 h4 m92 0 h4 m0 0 h32 m-152 0 h20 m132 0 h20 m-172 0 q10 0 10 10 m152 0 q0 -10 10 -10 m-162 10 v8 m152 0 v-8 m-152 8 q0 10 10 10 m132 0 q10 0 10 -10 m-142 10 h4 m124 0 h4 m23 -28 h-3"/> + <polygon points="201 10 209 6 209 14"/> + <polygon points="201 10 193 6 193 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#routine-body" title="routine_body" shape="rect">routine_body</a></div> + <div>         ::= <a href="#sql-routine-spec" title="SQL_routine_spec" shape="rect">SQL_routine_spec</a></div> + <div>           | <a href="#external-body-reference" title="external_body_reference" shape="rect">external_body_reference</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-invoked-function" title="sql-invoked-function">sql-invoked-function</a></li><li><a href="#sql-invoked-procedure" title="sql-invoked-procedure">sql-invoked-procedure</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_routine_spec +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="257" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rights-clause" xlink:title="rights_clause" shape="rect"> + <rect x="43" y="22" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">rights_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-routine-body" xlink:title="SQL_routine_body" shape="rect"> + <rect x="139" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="143" y="13">SQL_routine_body</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h66 m-96 0 h20 m76 0 h20 m-116 0 q10 0 10 10 m96 0 q0 -10 10 -10 m-106 10 v1 m96 0 v-1 m-96 1 q0 10 10 10 m76 0 q10 0 10 -10 m-86 10 h4 m68 0 h4 m20 -21 h4 m94 0 h4 m3 0 h-3"/> + <polygon points="247 10 255 6 255 14"/> + <polygon points="247 10 239 6 239 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-routine-spec" title="SQL_routine_spec" shape="rect">SQL_routine_spec</a></div> + <div>         ::= <a href="#rights-clause" title="rights_clause" shape="rect">rights_clause</a>? <a href="#sql-routine-body" title="SQL_routine_body" shape="rect">SQL_routine_body</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#routine-body" title="routine-body">routine-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + rights_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SQL</text> + <rect x="57" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="61" y="13">SECURITY</text> + <rect x="137" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="13">INVOKER</text> + <rect x="137" y="29" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="41">DEFINER</text> + <path class="line" d="m17 10 h2 m0 0 h4 m26 0 h4 m0 0 h4 m52 0 h4 m20 0 h4 m50 0 h4 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m46 0 h4 m0 0 h4 m23 -28 h-3"/> + <polygon points="221 10 229 6 229 14"/> + <polygon points="221 10 213 6 213 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#rights-clause" title="rights_clause" shape="rect">rights_clause</a></div> + <div>         ::= 'SQL' 'SECURITY' ( 'INVOKER' | 'DEFINER' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-routine-spec" title="sql-routine-spec">sql-routine-spec</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_routine_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-procedure-statement" xlink:title="SQL_procedure_statement" shape="rect"> + <rect x="23" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SQL_procedure_statement</text></a><path class="line" d="m17 10 h2 m0 0 h4 m134 0 h4 m3 0 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-routine-body" title="SQL_routine_body" shape="rect">SQL_routine_body</a></div> + <div>         ::= <a href="#sql-procedure-statement" title="SQL_procedure_statement" shape="rect">SQL_procedure_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-routine-spec" title="sql-routine-spec">sql-routine-spec</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + external_body_reference +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="665" height="100"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EXTERNAL</text> + <rect x="105" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="34">NAME</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#external-routine-name" xlink:title="external_routine_name" shape="rect"> + <rect x="147" y="22" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="34">external_routine_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-style-clause" xlink:title="parameter_style_clause" shape="rect"> + <rect x="313" y="22" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="34">parameter_style_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-group-specification" xlink:title="transform_group_specification" shape="rect"> + <rect x="481" y="22" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="485" y="34">transform_group_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#external-security-clause" xlink:title="external_security_clause" shape="rect"> + <rect x="501" y="80" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="505" y="92">external_security_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m20 0 h10 m0 0 h158 m-188 0 h20 m168 0 h20 m-208 0 q10 0 10 10 m188 0 q0 -10 10 -10 m-198 10 v1 m188 0 v-1 m-188 1 q0 10 10 10 m168 0 q10 0 10 -10 m-178 10 h4 m34 0 h4 m0 0 h4 m118 0 h4 m40 -21 h10 m0 0 h118 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v1 m148 0 v-1 m-148 1 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m120 0 h4 m40 -21 h10 m0 0 h144 m-174 0 h20 m154 0 h20 m-194 0 q10 0 10 10 m174 0 q0 -10 10 -10 m-184 10 v1 m174 0 v-1 m-174 1 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m146 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-198 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h118 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v1 m148 0 v-1 m-148 1 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m120 0 h4 m23 -21 h-3"/> + <polygon points="655 68 663 64 663 72"/> + <polygon points="655 68 647 64 647 72"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#external-body-reference" title="external_body_reference" shape="rect">external_body_reference</a></div> + <div>         ::= 'EXTERNAL' ( 'NAME' <a href="#external-routine-name" title="external_routine_name" shape="rect">external_routine_name</a> )? <a href="#parameter-style-clause" title="parameter_style_clause" shape="rect">parameter_style_clause</a>? <a href="#transform-group-specification" title="transform_group_specification" shape="rect">transform_group_specification</a>? <a href="#external-security-clause" title="external_security_clause" shape="rect">external_security_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#routine-body" title="routine-body">routine-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + external_security_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="357" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EXTERNAL</text> + <rect x="85" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="13">SECURITY</text> + <rect x="165" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="13">DEFINER</text> + <rect x="165" y="29" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="41">INVOKER</text> + <rect x="165" y="57" width="92" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="69">IMPLEMENTATION</text> + <rect x="265" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="269" y="69">DEFINED</text> + <path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m0 0 h4 m52 0 h4 m20 0 h4 m46 0 h4 m0 0 h102 m-176 0 h20 m156 0 h20 m-196 0 q10 0 10 10 m176 0 q0 -10 10 -10 m-186 10 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m50 0 h4 m0 0 h98 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m92 0 h4 m0 0 h4 m48 0 h4 m23 -56 h-3"/> + <polygon points="347 10 355 6 355 14"/> + <polygon points="347 10 339 6 339 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#external-security-clause" title="external_security_clause" shape="rect">external_security_clause</a></div> + <div>         ::= 'EXTERNAL' 'SECURITY' ( 'DEFINER' | 'INVOKER' | 'IMPLEMENTATION' 'DEFINED' + )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#external-body-reference" title="external-body-reference">external-body-reference</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parameter_style +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">SQL</text> + <rect x="43" y="29" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">GENERAL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m26 0 h4 m0 0 h24 m-78 0 h20 m58 0 h20 m-98 0 q10 0 10 10 m78 0 q0 -10 10 -10 m-88 10 v8 m78 0 v-8 m-78 8 q0 10 10 10 m58 0 q10 0 10 -10 m-68 10 h4 m50 0 h4 m23 -28 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parameter-style" title="parameter_style" shape="rect">parameter_style</a></div> + <div>         ::= 'SQL'</div> + <div>           | 'GENERAL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#parameter-style-clause" title="parameter-style-clause">parameter-style-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + deterministic_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NOT</text> + <rect x="99" y="1" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">DETERMINISTIC</text> + <path class="line" d="m17 10 h2 m20 0 h10 m0 0 h26 m-56 0 h20 m36 0 h20 m-76 0 q10 0 10 10 m56 0 q0 -10 10 -10 m-66 10 v1 m56 0 v-1 m-56 1 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m28 0 h4 m20 -21 h4 m80 0 h4 m3 0 h-3"/> + <polygon points="193 10 201 6 201 14"/> + <polygon points="193 10 185 6 185 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#deterministic-characteristic" title="deterministic_characteristic" shape="rect">deterministic_characteristic</a></div> + <div>         ::= 'NOT'? 'DETERMINISTIC'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#method-characteristic" title="method-characteristic">method-characteristic</a></li><li><a href="#routine-characteristic" title="routine-characteristic">routine-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_data_access_indication +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="255" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">NO</text> + <rect x="63" y="29" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">CONTAINS</text> + <rect x="147" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="13">SQL</text> + <rect x="63" y="57" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="69">READS</text> + <rect x="63" y="85" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="97">MODIFIES</text> + <rect x="145" y="57" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="69">SQL</text> + <rect x="179" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="69">DATA</text> + <path class="line" d="m17 10 h2 m40 0 h4 m22 0 h4 m0 0 h34 m-84 0 h20 m64 0 h20 m-104 0 q10 0 10 10 m84 0 q0 -10 10 -10 m-94 10 v8 m84 0 v-8 m-84 8 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m56 0 h4 m20 -28 h4 m26 0 h4 m0 0 h38 m-196 0 h20 m176 0 h20 m-216 0 q10 0 10 10 m196 0 q0 -10 10 -10 m-206 10 v36 m196 0 v-36 m-196 36 q0 10 10 10 m176 0 q10 0 10 -10 m-166 10 h4 m38 0 h4 m0 0 h16 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v8 m82 0 v-8 m-82 8 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m54 0 h4 m20 -28 h4 m26 0 h4 m0 0 h4 m32 0 h4 m23 -56 h-3"/> + <polygon points="245 10 253 6 253 14"/> + <polygon points="245 10 237 6 237 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-data-access-indication" title="SQL_data_access_indication" shape="rect">SQL_data_access_indication</a></div> + <div>         ::= ( 'NO' | 'CONTAINS' ) 'SQL'</div> + <div>           | ( 'READS' | 'MODIFIES' ) 'SQL' 'DATA'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-routine-characteristic" title="alter-routine-characteristic">alter-routine-characteristic</a></li><li><a href="#method-characteristic" title="method-characteristic">method-characteristic</a></li><li><a href="#routine-characteristic" title="routine-characteristic">routine-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + null_call_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="291" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">RETURNS</text> + <rect x="101" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="13">NULL</text> + <rect x="43" y="29" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CALLED</text> + <rect x="161" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="13">ON</text> + <rect x="191" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="13">NULL</text> + <rect x="231" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="13">INPUT</text> + <path class="line" d="m17 10 h2 m20 0 h4 m50 0 h4 m0 0 h4 m32 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m42 0 h4 m0 0 h48 m20 -28 h4 m22 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m36 0 h4 m3 0 h-3"/> + <polygon points="281 10 289 6 289 14"/> + <polygon points="281 10 273 6 273 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#null-call-clause" title="null_call_clause" shape="rect">null_call_clause</a></div> + <div>         ::= ( 'RETURNS' 'NULL' | 'CALLED' ) 'ON' 'NULL' 'INPUT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-routine-characteristic" title="alter-routine-characteristic">alter-routine-characteristic</a></li><li><a href="#method-characteristic" title="method-characteristic">method-characteristic</a></li><li><a href="#routine-characteristic" title="routine-characteristic">routine-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + maximum_returned_result_sets +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">unsigned_integer</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#maximum-returned-result-sets" title="maximum_returned_result_sets" shape="rect">maximum_returned_result_sets</a></div> + <div>         ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#returned-result-sets-characteristic" title="returned-result-sets-characteristic">returned-result-sets-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transform_group_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="347" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRANSFORM</text> + <rect x="97" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="13">GROUP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#single-group-specification" xlink:title="single_group_specification" shape="rect"> + <rect x="167" y="1" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="13">single_group_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiple-group-specification" xlink:title="multiple_group_specification" shape="rect"> + <rect x="167" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="41">multiple_group_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m66 0 h4 m0 0 h4 m42 0 h4 m20 0 h4 m126 0 h4 m0 0 h10 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m23 -28 h-3"/> + <polygon points="337 10 345 6 345 14"/> + <polygon points="337 10 329 6 329 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transform-group-specification" title="transform_group_specification" shape="rect">transform_group_specification</a></div> + <div>         ::= 'TRANSFORM' 'GROUP' ( <a href="#single-group-specification" title="single_group_specification" shape="rect">single_group_specification</a> | <a href="#multiple-group-specification" title="multiple_group_specification" shape="rect">multiple_group_specification</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#external-body-reference" title="external-body-reference">external-body-reference</a></li><li><a href="#module-transform-group-specification" title="module-transform-group-specification">module-transform-group-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + single_group_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="93" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="83 10 91 6 91 14"/> + <polygon points="83 10 75 6 75 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#single-group-specification" title="single_group_specification" shape="rect">single_group_specification</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transform-group-specification" title="transform-group-specification">transform-group-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiple_group_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#group-specification" xlink:title="group_specification" shape="rect"> + <rect x="43" y="29" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">group_specification</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m96 0 h4 m-124 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m104 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-104 0 h4 m8 0 h4 m0 0 h88 m23 28 h-3"/> + <polygon points="173 38 181 34 181 42"/> + <polygon points="173 38 165 34 165 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiple-group-specification" title="multiple_group_specification" shape="rect">multiple_group_specification</a></div> + <div>         ::= <a href="#group-specification" title="group_specification" shape="rect">group_specification</a> ( ',' <a href="#group-specification" title="group_specification" shape="rect">group_specification</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transform-group-specification" title="transform-group-specification">transform-group-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + group_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="373" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><rect x="77" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">FOR</text> + <rect x="111" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="13">TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="149" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="153" y="13">path_resolved_user_defined_type_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m200 0 h4 m3 0 h-3"/> + <polygon points="363 10 371 6 371 14"/> + <polygon points="363 10 355 6 355 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#group-specification" title="group_specification" shape="rect">group_specification</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> 'FOR' 'TYPE' <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiple-group-specification" title="multiple-group-specification">multiple-group-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_routine_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="425" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALTER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="67" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="71" y="13">specific_routine_designator</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-routine-characteristics" xlink:title="alter_routine_characteristics" shape="rect"> + <rect x="207" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="13">alter_routine_characteristics</text></a><rect x="349" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="353" y="13">RESTRICT</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m134 0 h4 m0 0 h4 m52 0 h4 m3 0 h-3"/> + <polygon points="415 10 423 6 423 14"/> + <polygon points="415 10 407 6 407 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-routine-statement" title="alter_routine_statement" shape="rect">alter_routine_statement</a></div> + <div>         ::= 'ALTER' <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a> <a href="#alter-routine-characteristics" title="alter_routine_characteristics" shape="rect">alter_routine_characteristics</a> 'RESTRICT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_routine_characteristics +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-routine-characteristic" xlink:title="alter_routine_characteristic" shape="rect"> + <rect x="43" y="13" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">alter_routine_characteristic</text></a><path class="line" d="m17 22 h2 m20 0 h4 m128 0 h4 m-156 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m136 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-136 0 h10 m0 0 h126 m23 21 h-3"/> + <polygon points="205 22 213 18 213 26"/> + <polygon points="205 22 197 18 197 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-routine-characteristics" title="alter_routine_characteristics" shape="rect">alter_routine_characteristics</a></div> + <div>         ::= <a href="#alter-routine-characteristic" title="alter_routine_characteristic" shape="rect">alter_routine_characteristic</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-routine-statement" title="alter-routine-statement">alter-routine-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_routine_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="161"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#language-clause" xlink:title="language_clause" shape="rect"> + <rect x="43" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">language_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-style-clause" xlink:title="parameter_style_clause" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">parameter_style_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-data-access-indication" xlink:title="SQL_data_access_indication" shape="rect"> + <rect x="43" y="57" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">SQL_data_access_indication</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#null-call-clause" xlink:title="null_call_clause" shape="rect"> + <rect x="43" y="85" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">null_call_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#returned-result-sets-characteristic" xlink:title="returned_result_sets_characteristic" shape="rect"> + <rect x="43" y="113" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">returned_result_sets_characteristic</text></a><rect x="43" y="141" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">NAME</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#external-routine-name" xlink:title="external_routine_name" shape="rect"> + <rect x="85" y="141" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="153">external_routine_name</text></a><path class="line" d="m17 10 h2 m20 0 h4 m88 0 h4 m0 0 h78 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m120 0 h4 m0 0 h46 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m138 0 h4 m0 0 h28 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m78 0 h4 m0 0 h88 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m166 0 h4 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m34 0 h4 m0 0 h4 m118 0 h4 m0 0 h6 m23 -140 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-routine-characteristic" title="alter_routine_characteristic" shape="rect">alter_routine_characteristic</a></div> + <div>         ::= <a href="#language-clause" title="language_clause" shape="rect">language_clause</a></div> + <div>           | <a href="#parameter-style-clause" title="parameter_style_clause" shape="rect">parameter_style_clause</a></div> + <div>           | <a href="#sql-data-access-indication" title="SQL_data_access_indication" shape="rect">SQL_data_access_indication</a></div> + <div>           | <a href="#null-call-clause" title="null_call_clause" shape="rect">null_call_clause</a></div> + <div>           | <a href="#returned-result-sets-characteristic" title="returned_result_sets_characteristic" shape="rect">returned_result_sets_characteristic</a></div> + <div>           | 'NAME' <a href="#external-routine-name" title="external_routine_name" shape="rect">external_routine_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-routine-characteristics" title="alter-routine-characteristics">alter-routine-characteristics</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_routine_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="305" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="65" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">specific_routine_designator</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="205" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="209" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="295 10 303 6 303 14"/> + <polygon points="295 10 287 6 287 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-routine-statement" title="drop_routine_statement" shape="rect">drop_routine_statement</a></div> + <div>         ::= 'DROP' <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_cast_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="659" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">CAST</text> + <rect x="113" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#source-data-type" xlink:title="source_data_type" shape="rect"> + <rect x="133" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">source_data_type</text></a><rect x="233" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-data-type" xlink:title="target_data_type" shape="rect"> + <rect x="261" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="265" y="13">target_data_type</text></a><rect x="359" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="363" y="13">)</text> + <rect x="379" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="383" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-function" xlink:title="cast_function" shape="rect"> + <rect x="421" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="13">cast_function</text></a><rect x="517" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="521" y="34">AS</text> + <rect x="545" y="22" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="549" y="34">ASSIGNMENT</text> + <path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m68 0 h4 m20 0 h10 m0 0 h96 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v1 m126 0 v-1 m-126 1 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m20 0 h4 m0 0 h4 m70 0 h4 m23 -21 h-3"/> + <polygon points="649 10 657 6 657 14"/> + <polygon points="649 10 641 6 641 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-cast-definition" title="user_defined_cast_definition" shape="rect">user_defined_cast_definition</a></div> + <div>         ::= 'CREATE' 'CAST' '(' <a href="#source-data-type" title="source_data_type" shape="rect">source_data_type</a> 'AS' <a href="#target-data-type" title="target_data_type" shape="rect">target_data_type</a> ')' 'WITH' <a href="#cast-function" title="cast_function" shape="rect">cast_function</a> ( 'AS' 'ASSIGNMENT' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cast_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">specific_routine_designator</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cast-function" title="cast_function" shape="rect">cast_function</a></div> + <div>         ::= <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-cast-definition" title="user-defined-cast-definition">user-defined-cast-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + source_data_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="103" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="23" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">data_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m3 0 h-3"/> + <polygon points="93 10 101 6 101 14"/> + <polygon points="93 10 85 6 85 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#source-data-type" title="source_data_type" shape="rect">source_data_type</a></div> + <div>         ::= <a href="#data-type" title="data_type" shape="rect">data_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#drop-user-defined-cast-statement" title="drop-user-defined-cast-statement">drop-user-defined-cast-statement</a></li><li><a href="#user-defined-cast-definition" title="user-defined-cast-definition">user-defined-cast-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + target_data_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="103" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="23" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">data_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m3 0 h-3"/> + <polygon points="93 10 101 6 101 14"/> + <polygon points="93 10 85 6 85 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#target-data-type" title="target_data_type" shape="rect">target_data_type</a></div> + <div>         ::= <a href="#data-type" title="data_type" shape="rect">data_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#drop-user-defined-cast-statement" title="drop-user-defined-cast-statement">drop-user-defined-cast-statement</a></li><li><a href="#user-defined-cast-definition" title="user-defined-cast-definition">user-defined-cast-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_user_defined_cast_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="471" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">CAST</text> + <rect x="105" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#source-data-type" xlink:title="source_data_type" shape="rect"> + <rect x="125" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="13">source_data_type</text></a><rect x="225" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="229" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-data-type" xlink:title="target_data_type" shape="rect"> + <rect x="253" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="257" y="13">target_data_type</text></a><rect x="351" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="355" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="371" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="375" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="461 10 469 6 469 14"/> + <polygon points="461 10 453 6 453 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-user-defined-cast-statement" title="drop_user_defined_cast_statement" shape="rect">drop_user_defined_cast_statement</a></div> + <div>         ::= 'DROP' 'CAST' '(' <a href="#source-data-type" title="source_data_type" shape="rect">source_data_type</a> 'AS' <a href="#target-data-type" title="target_data_type" shape="rect">target_data_type</a> ')' <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + user_defined_ordering_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="495" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">ORDERING</text> + <rect x="139" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="173" y="1" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="177" y="13">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordering-form" xlink:title="ordering_form" shape="rect"> + <rect x="397" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="401" y="13">ordering_form</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m58 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m216 0 h4 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="485 10 493 6 493 14"/> + <polygon points="485 10 477 6 477 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#user-defined-ordering-definition" title="user_defined_ordering_definition" shape="rect">user_defined_ordering_definition</a></div> + <div>         ::= 'CREATE' 'ORDERING' 'FOR' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> <a href="#ordering-form" title="ordering_form" shape="rect">ordering_form</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ordering_form +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="197" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#equals-ordering-form" xlink:title="equals_ordering_form" shape="rect"> + <rect x="43" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">equals_ordering_form</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#full-ordering-form" xlink:title="full_ordering_form" shape="rect"> + <rect x="43" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">full_ordering_form</text></a><path class="line" d="m17 10 h2 m20 0 h4 m110 0 h4 m-138 0 h20 m118 0 h20 m-158 0 q10 0 10 10 m138 0 q0 -10 10 -10 m-148 10 v8 m138 0 v-8 m-138 8 q0 10 10 10 m118 0 q10 0 10 -10 m-128 10 h4 m90 0 h4 m0 0 h20 m23 -28 h-3"/> + <polygon points="187 10 195 6 195 14"/> + <polygon points="187 10 179 6 179 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#ordering-form" title="ordering_form" shape="rect">ordering_form</a></div> + <div>         ::= <a href="#equals-ordering-form" title="equals_ordering_form" shape="rect">equals_ordering_form</a></div> + <div>           | <a href="#full-ordering-form" title="full_ordering_form" shape="rect">full_ordering_form</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#user-defined-ordering-definition" title="user-defined-ordering-definition">user-defined-ordering-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + equals_ordering_form +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EQUALS</text> + <rect x="75" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="13">ONLY</text> + <rect x="117" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordering-category" xlink:title="ordering_category" shape="rect"> + <rect x="145" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="13">ordering_category</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="251 10 259 6 259 14"/> + <polygon points="251 10 243 6 243 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#equals-ordering-form" title="equals_ordering_form" shape="rect">equals_ordering_form</a></div> + <div>         ::= 'EQUALS' 'ONLY' 'BY' <a href="#ordering-category" title="ordering_category" shape="rect">ordering_category</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ordering-form" title="ordering-form">ordering-form</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + full_ordering_form +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ORDER</text> + <rect x="71" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">FULL</text> + <rect x="109" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="113" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ordering-category" xlink:title="ordering_category" shape="rect"> + <rect x="137" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="13">ordering_category</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#full-ordering-form" title="full_ordering_form" shape="rect">full_ordering_form</a></div> + <div>         ::= 'ORDER' 'FULL' 'BY' <a href="#ordering-category" title="ordering_category" shape="rect">ordering_category</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ordering-form" title="ordering-form">ordering-form</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ordering_category +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="173" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relative-category" xlink:title="relative_category" shape="rect"> + <rect x="43" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">relative_category</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#map-category" xlink:title="map_category" shape="rect"> + <rect x="43" y="29" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">map_category</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#state-category" xlink:title="state_category" shape="rect"> + <rect x="43" y="57" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">state_category</text></a><path class="line" d="m17 10 h2 m20 0 h4 m86 0 h4 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v8 m114 0 v-8 m-114 8 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m76 0 h4 m0 0 h10 m-104 -10 v20 m114 0 v-20 m-114 20 v8 m114 0 v-8 m-114 8 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m78 0 h4 m0 0 h8 m23 -56 h-3"/> + <polygon points="163 10 171 6 171 14"/> + <polygon points="163 10 155 6 155 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#ordering-category" title="ordering_category" shape="rect">ordering_category</a></div> + <div>         ::= <a href="#relative-category" title="relative_category" shape="rect">relative_category</a></div> + <div>           | <a href="#map-category" title="map_category" shape="rect">map_category</a></div> + <div>           | <a href="#state-category" title="state_category" shape="rect">state_category</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#equals-ordering-form" title="equals-ordering-form">equals-ordering-form</a></li><li><a href="#full-ordering-form" title="full-ordering-form">full-ordering-form</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + relative_category +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">RELATIVE</text> + <rect x="81" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="85" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relative-function-specification" xlink:title="relative_function_specification" shape="rect"> + <rect x="123" y="1" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="13">relative_function_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m140 0 h4 m3 0 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#relative-category" title="relative_category" shape="rect">relative_category</a></div> + <div>         ::= 'RELATIVE' 'WITH' <a href="#relative-function-specification" title="relative_function_specification" shape="rect">relative_function_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ordering-category" title="ordering-category">ordering-category</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + map_category +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="255" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MAP</text> + <rect x="59" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="63" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#map-function-specification" xlink:title="map_function_specification" shape="rect"> + <rect x="101" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="13">map_function_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="245 10 253 6 253 14"/> + <polygon points="245 10 237 6 237 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#map-category" title="map_category" shape="rect">map_category</a></div> + <div>         ::= 'MAP' 'WITH' <a href="#map-function-specification" title="map_function_specification" shape="rect">map_function_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ordering-category" title="ordering-category">ordering-category</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + state_category +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">STATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="87" y="22" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="34">schema_qualified_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m20 0 h10 m0 0 h120 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v1 m150 0 v-1 m-150 1 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m122 0 h4 m23 -21 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#state-category" title="state_category" shape="rect">state_category</a></div> + <div>         ::= 'STATE' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#ordering-category" title="ordering-category">ordering-category</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + relative_function_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">specific_routine_designator</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#relative-function-specification" title="relative_function_specification" shape="rect">relative_function_specification</a></div> + <div>         ::= <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#relative-category" title="relative-category">relative-category</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + map_function_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">specific_routine_designator</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#map-function-specification" title="map_function_specification" shape="rect">map_function_specification</a></div> + <div>         ::= <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#map-category" title="map-category">map-category</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_user_defined_ordering_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="489" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">ORDERING</text> + <rect x="131" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="165" y="1" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="169" y="13">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="389" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="393" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m58 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m216 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="479 10 487 6 487 14"/> + <polygon points="479 10 471 6 471 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-user-defined-ordering-statement" title="drop_user_defined_ordering_statement" shape="rect">drop_user_defined_ordering_statement</a></div> + <div>         ::= 'DROP' 'ORDERING' 'FOR' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transform_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="601" height="61"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="23" y="13" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="25">CREATE</text> + <rect x="93" y="13" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="25">TRANSFORM</text> + <rect x="93" y="41" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="53">TRANSFORMS</text> + <rect x="193" y="13" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="197" y="25">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="227" y="13" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="231" y="25">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-group" xlink:title="transform_group" shape="rect"> + <rect x="471" y="13" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="475" y="25">transform_group</text></a><path class="line" d="m17 22 h2 m0 0 h4 m42 0 h4 m20 0 h4 m66 0 h4 m0 0 h6 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v8 m100 0 v-8 m-100 8 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m20 -28 h4 m26 0 h4 m0 0 h4 m216 0 h4 m20 0 h4 m86 0 h4 m-114 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m94 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-94 0 h10 m0 0 h84 m23 21 h-3"/> + <polygon points="591 22 599 18 599 26"/> + <polygon points="591 22 583 18 583 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transform-definition" title="transform_definition" shape="rect">transform_definition</a></div> + <div>         ::= 'CREATE' ( 'TRANSFORM' | 'TRANSFORMS' ) 'FOR' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> <a href="#transform-group" title="transform_group" shape="rect">transform_group</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transform_group +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="255" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><rect x="77" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-element-list" xlink:title="transform_element_list" shape="rect"> + <rect x="97" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="13">transform_element_list</text></a><rect x="219" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m114 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="245 10 253 6 253 14"/> + <polygon points="245 10 237 6 237 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transform-group" title="transform_group" shape="rect">transform_group</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> '(' <a href="#transform-element-list" title="transform_element_list" shape="rect">transform_element_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transform-definition" title="transform-definition">transform-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transform_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="307" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-element" xlink:title="transform_element" shape="rect"> + <rect x="23" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">transform_element</text></a><rect x="149" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="34">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-element" xlink:title="transform_element" shape="rect"> + <rect x="165" y="22" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="169" y="34">transform_element</text></a><path class="line" d="m17 10 h2 m0 0 h4 m98 0 h4 m20 0 h10 m0 0 h112 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v1 m142 0 v-1 m-142 1 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m8 0 h4 m0 0 h4 m98 0 h4 m23 -21 h-3"/> + <polygon points="297 10 305 6 305 14"/> + <polygon points="297 10 289 6 289 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transform-element-list" title="transform_element_list" shape="rect">transform_element_list</a></div> + <div>         ::= <a href="#transform-element" title="transform_element" shape="rect">transform_element</a> ( ',' <a href="#transform-element" title="transform_element" shape="rect">transform_element</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#add-transform-element-list" title="add-transform-element-list">add-transform-element-list</a></li><li><a href="#transform-group" title="transform-group">transform-group</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transform_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="135" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#to-sql" xlink:title="to_sql" shape="rect"> + <rect x="43" y="1" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">to_sql</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#from-sql" xlink:title="from_sql" shape="rect"> + <rect x="43" y="29" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">from_sql</text></a><path class="line" d="m17 10 h2 m20 0 h4 m36 0 h4 m0 0 h12 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v8 m76 0 v-8 m-76 8 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m23 -28 h-3"/> + <polygon points="125 10 133 6 133 14"/> + <polygon points="125 10 117 6 117 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transform-element" title="transform_element" shape="rect">transform_element</a></div> + <div>         ::= <a href="#to-sql" title="to_sql" shape="rect">to_sql</a></div> + <div>           | <a href="#from-sql" title="from_sql" shape="rect">from_sql</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transform-element-list" title="transform-element-list">transform-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + to_sql +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="229" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TO</text> + <rect x="51" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="55" y="13">SQL</text> + <rect x="85" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#to-sql-function" xlink:title="to_sql_function" shape="rect"> + <rect x="127" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="131" y="13">to_sql_function</text></a><path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m78 0 h4 m3 0 h-3"/> + <polygon points="219 10 227 6 227 14"/> + <polygon points="219 10 211 6 211 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#to-sql" title="to_sql" shape="rect">to_sql</a>   ::= 'TO' 'SQL' 'WITH' <a href="#to-sql-function" title="to_sql_function" shape="rect">to_sql_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transform-element" title="transform-element">transform-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + from_sql +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="257" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FROM</text> + <rect x="67" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">SQL</text> + <rect x="101" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#from-sql-function" xlink:title="from_sql_function" shape="rect"> + <rect x="143" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="13">from_sql_function</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="247 10 255 6 255 14"/> + <polygon points="247 10 239 6 239 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#from-sql" title="from_sql" shape="rect">from_sql</a> ::= 'FROM' 'SQL' 'WITH' <a href="#from-sql-function" title="from_sql_function" shape="rect">from_sql_function</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transform-element" title="transform-element">transform-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + to_sql_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">specific_routine_designator</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#to-sql-function" title="to_sql_function" shape="rect">to_sql_function</a></div> + <div>         ::= <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#to-sql" title="to-sql">to-sql</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + from_sql_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">specific_routine_designator</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#from-sql-function" title="from_sql_function" shape="rect">from_sql_function</a></div> + <div>         ::= <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#from-sql" title="from-sql">from-sql</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_transform_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="571" height="61"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="23" y="13" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="25">ALTER</text> + <rect x="87" y="13" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="25">TRANSFORM</text> + <rect x="87" y="41" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="53">TRANSFORMS</text> + <rect x="187" y="13" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="25">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="221" y="13" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="25">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-group" xlink:title="alter_group" shape="rect"> + <rect x="465" y="13" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="469" y="25">alter_group</text></a><path class="line" d="m17 22 h2 m0 0 h4 m36 0 h4 m20 0 h4 m66 0 h4 m0 0 h6 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v8 m100 0 v-8 m-100 8 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m20 -28 h4 m26 0 h4 m0 0 h4 m216 0 h4 m20 0 h4 m62 0 h4 m-90 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m70 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-70 0 h10 m0 0 h60 m23 21 h-3"/> + <polygon points="561 22 569 18 569 26"/> + <polygon points="561 22 553 18 553 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-transform-statement" title="alter_transform_statement" shape="rect">alter_transform_statement</a></div> + <div>         ::= 'ALTER' ( 'TRANSFORM' | 'TRANSFORMS' ) 'FOR' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> <a href="#alter-group" title="alter_group" shape="rect">alter_group</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_group +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="269" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><rect x="77" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-transform-action-list" xlink:title="alter_transform_action_list" shape="rect"> + <rect x="97" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="13">alter_transform_action_list</text></a><rect x="233" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m128 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="259 10 267 6 267 14"/> + <polygon points="259 10 251 6 251 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-group" title="alter_group" shape="rect">alter_group</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> '(' <a href="#alter-transform-action-list" title="alter_transform_action_list" shape="rect">alter_transform_action_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-transform-statement" title="alter-transform-statement">alter-transform-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_transform_action_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-transform-action" xlink:title="alter_transform_action" shape="rect"> + <rect x="43" y="29" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">alter_transform_action</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m112 0 h4 m-140 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m120 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-120 0 h4 m8 0 h4 m0 0 h104 m23 28 h-3"/> + <polygon points="189 38 197 34 197 42"/> + <polygon points="189 38 181 34 181 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-transform-action-list" title="alter_transform_action_list" shape="rect">alter_transform_action_list</a></div> + <div>         ::= <a href="#alter-transform-action" title="alter_transform_action" shape="rect">alter_transform_action</a> ( ',' <a href="#alter-transform-action" title="alter_transform_action" shape="rect">alter_transform_action</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-group" title="alter-group">alter-group</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_transform_action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="229" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#add-transform-element-list" xlink:title="add_transform_element_list" shape="rect"> + <rect x="43" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">add_transform_element_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-transform-element-list" xlink:title="drop_transform_element_list" shape="rect"> + <rect x="43" y="29" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">drop_transform_element_list</text></a><path class="line" d="m17 10 h2 m20 0 h4 m138 0 h4 m0 0 h4 m-170 0 h20 m150 0 h20 m-190 0 q10 0 10 10 m170 0 q0 -10 10 -10 m-180 10 v8 m170 0 v-8 m-170 8 q0 10 10 10 m150 0 q10 0 10 -10 m-160 10 h4 m142 0 h4 m23 -28 h-3"/> + <polygon points="219 10 227 6 227 14"/> + <polygon points="219 10 211 6 211 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-transform-action" title="alter_transform_action" shape="rect">alter_transform_action</a></div> + <div>         ::= <a href="#add-transform-element-list" title="add_transform_element_list" shape="rect">add_transform_element_list</a></div> + <div>           | <a href="#drop-transform-element-list" title="drop_transform_element_list" shape="rect">drop_transform_element_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-transform-action-list" title="alter-transform-action-list">alter-transform-action-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + add_transform_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ADD</text> + <rect x="59" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="63" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-element-list" xlink:title="transform_element_list" shape="rect"> + <rect x="79" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="83" y="13">transform_element_list</text></a><rect x="201" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m114 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#add-transform-element-list" title="add_transform_element_list" shape="rect">add_transform_element_list</a></div> + <div>         ::= 'ADD' '(' <a href="#transform-element-list" title="transform_element_list" shape="rect">transform_element_list</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-transform-action" title="alter-transform-action">alter-transform-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_transform_element_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="433" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-kind" xlink:title="transform_kind" shape="rect"> + <rect x="85" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">transform_kind</text></a><rect x="191" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="34">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-kind" xlink:title="transform_kind" shape="rect"> + <rect x="207" y="22" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="34">transform_kind</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="313" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="13">drop_behavior</text></a><rect x="397" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="401" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m78 0 h4 m20 0 h10 m0 0 h92 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v1 m122 0 v-1 m-122 1 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m8 0 h4 m0 0 h4 m78 0 h4 m20 -21 h4 m76 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="423 10 431 6 431 14"/> + <polygon points="423 10 415 6 415 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-transform-element-list" title="drop_transform_element_list" shape="rect">drop_transform_element_list</a></div> + <div>         ::= 'DROP' '(' <a href="#transform-kind" title="transform_kind" shape="rect">transform_kind</a> ( ',' <a href="#transform-kind" title="transform_kind" shape="rect">transform_kind</a> )? <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-transform-action" title="alter-transform-action">alter-transform-action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transform_kind +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">TO</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">FROM</text> + <rect x="107" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="13">SQL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m20 0 h4 m0 0 h16 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m36 0 h4 m20 -28 h4 m26 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transform-kind" title="transform_kind" shape="rect">transform_kind</a></div> + <div>         ::= ( 'TO' | 'FROM' ) 'SQL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#drop-transform-element-list" title="drop-transform-element-list">drop-transform-element-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_transform_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="687" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="85" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="13">TRANSFORM</text> + <rect x="85" y="29" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="41">TRANSFORMS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transforms-to-be-dropped" xlink:title="transforms_to_be_dropped" shape="rect"> + <rect x="185" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="189" y="13">transforms_to_be_dropped</text></a><rect x="329" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="333" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="363" y="1" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="367" y="13">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="587" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="591" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m20 0 h4 m66 0 h4 m0 0 h6 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v8 m100 0 v-8 m-100 8 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m20 -28 h4 m136 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m216 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="677 10 685 6 685 14"/> + <polygon points="677 10 669 6 669 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-transform-statement" title="drop_transform_statement" shape="rect">drop_transform_statement</a></div> + <div>         ::= 'DROP' ( 'TRANSFORM' | 'TRANSFORMS' ) <a href="#transforms-to-be-dropped" title="transforms_to_be_dropped" shape="rect">transforms_to_be_dropped</a> 'FOR' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transforms_to_be_dropped +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ALL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-group-element" xlink:title="transform_group_element" shape="rect"> + <rect x="43" y="29" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">transform_group_element</text></a><path class="line" d="m17 10 h2 m20 0 h4 m24 0 h4 m0 0 h106 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m130 0 h4 m23 -28 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transforms-to-be-dropped" title="transforms_to_be_dropped" shape="rect">transforms_to_be_dropped</a></div> + <div>         ::= 'ALL'</div> + <div>           | <a href="#transform-group-element" title="transform_group_element" shape="rect">transform_group_element</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#drop-transform-statement" title="drop-transform-statement">drop-transform-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transform_group_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="93" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="83 10 91 6 91 14"/> + <polygon points="83 10 75 6 75 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transform-group-element" title="transform_group_element" shape="rect">transform_group_element</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transforms-to-be-dropped" title="transforms-to-be-dropped">transforms-to-be-dropped</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="477" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">SEQUENCE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="137" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-options" xlink:title="sequence_generator_options" shape="rect"> + <rect x="287" y="22" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="291" y="34">sequence_generator_options</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m122 0 h4 m20 0 h10 m0 0 h144 m-174 0 h20 m154 0 h20 m-194 0 q10 0 10 10 m174 0 q0 -10 10 -10 m-184 10 v1 m174 0 v-1 m-174 1 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m146 0 h4 m23 -21 h-3"/> + <polygon points="467 10 475 6 475 14"/> + <polygon points="467 10 459 6 459 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-definition" title="sequence_generator_definition" shape="rect">sequence_generator_definition</a></div> + <div>         ::= 'CREATE' 'SEQUENCE' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#sequence-generator-options" title="sequence_generator_options" shape="rect">sequence_generator_options</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_options +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="227" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-option" xlink:title="sequence_generator_option" shape="rect"> + <rect x="43" y="13" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">sequence_generator_option</text></a><path class="line" d="m17 22 h2 m20 0 h4 m140 0 h4 m-168 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m148 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-148 0 h10 m0 0 h138 m23 21 h-3"/> + <polygon points="217 22 225 18 225 26"/> + <polygon points="217 22 209 18 209 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-options" title="sequence_generator_options" shape="rect">sequence_generator_options</a></div> + <div>         ::= <a href="#sequence-generator-option" title="sequence_generator_option" shape="rect">sequence_generator_option</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sequence-generator-definition" title="sequence-generator-definition">sequence-generator-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="281" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-data-type-option" xlink:title="sequence_generator_data_type_option" shape="rect"> + <rect x="43" y="1" width="194" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">sequence_generator_data_type_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#common-sequence-generator-options" xlink:title="common_sequence_generator_options" shape="rect"> + <rect x="43" y="29" width="192" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">common_sequence_generator_options</text></a><path class="line" d="m17 10 h2 m20 0 h4 m194 0 h4 m-222 0 h20 m202 0 h20 m-242 0 q10 0 10 10 m222 0 q0 -10 10 -10 m-232 10 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m192 0 h4 m0 0 h2 m23 -28 h-3"/> + <polygon points="271 10 279 6 279 14"/> + <polygon points="271 10 263 6 263 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-option" title="sequence_generator_option" shape="rect">sequence_generator_option</a></div> + <div>         ::= <a href="#sequence-generator-data-type-option" title="sequence_generator_data_type_option" shape="rect">sequence_generator_data_type_option</a></div> + <div>           | <a href="#common-sequence-generator-options" title="common_sequence_generator_options" shape="rect">common_sequence_generator_options</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sequence-generator-options" title="sequence-generator-options">sequence-generator-options</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + common_sequence_generator_options +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="275" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#common-sequence-generator-option" xlink:title="common_sequence_generator_option" shape="rect"> + <rect x="43" y="13" width="188" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">common_sequence_generator_option</text></a><path class="line" d="m17 22 h2 m20 0 h4 m188 0 h4 m-216 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m196 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-196 0 h10 m0 0 h186 m23 21 h-3"/> + <polygon points="265 22 273 18 273 26"/> + <polygon points="265 22 257 18 257 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#common-sequence-generator-options" title="common_sequence_generator_options" shape="rect">common_sequence_generator_options</a></div> + <div>         ::= <a href="#common-sequence-generator-option" title="common_sequence_generator_option" shape="rect">common_sequence_generator_option</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#identity-column-specification" title="identity-column-specification">identity-column-specification</a></li><li><a href="#sequence-generator-option" title="sequence-generator-option">sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + common_sequence_generator_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="277" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-start-with-option" xlink:title="sequence_generator_start_with_option" shape="rect"> + <rect x="43" y="1" width="190" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">sequence_generator_start_with_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#basic-sequence-generator-option" xlink:title="basic_sequence_generator_option" shape="rect"> + <rect x="43" y="29" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">basic_sequence_generator_option</text></a><path class="line" d="m17 10 h2 m20 0 h4 m190 0 h4 m-218 0 h20 m198 0 h20 m-238 0 q10 0 10 10 m218 0 q0 -10 10 -10 m-228 10 v8 m218 0 v-8 m-218 8 q0 10 10 10 m198 0 q10 0 10 -10 m-208 10 h4 m168 0 h4 m0 0 h22 m23 -28 h-3"/> + <polygon points="267 10 275 6 275 14"/> + <polygon points="267 10 259 6 259 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#common-sequence-generator-option" title="common_sequence_generator_option" shape="rect">common_sequence_generator_option</a></div> + <div>         ::= <a href="#sequence-generator-start-with-option" title="sequence_generator_start_with_option" shape="rect">sequence_generator_start_with_option</a></div> + <div>           | <a href="#basic-sequence-generator-option" title="basic_sequence_generator_option" shape="rect">basic_sequence_generator_option</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#common-sequence-generator-options" title="common-sequence-generator-options">common-sequence-generator-options</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + basic_sequence_generator_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="295" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-increment-by-option" xlink:title="sequence_generator_increment_by_option" shape="rect"> + <rect x="43" y="1" width="208" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">sequence_generator_increment_by_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-maxvalue-option" xlink:title="sequence_generator_maxvalue_option" shape="rect"> + <rect x="43" y="29" width="192" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">sequence_generator_maxvalue_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-minvalue-option" xlink:title="sequence_generator_minvalue_option" shape="rect"> + <rect x="43" y="57" width="188" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">sequence_generator_minvalue_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-cycle-option" xlink:title="sequence_generator_cycle_option" shape="rect"> + <rect x="43" y="85" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">sequence_generator_cycle_option</text></a><path class="line" d="m17 10 h2 m20 0 h4 m208 0 h4 m-236 0 h20 m216 0 h20 m-256 0 q10 0 10 10 m236 0 q0 -10 10 -10 m-246 10 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m192 0 h4 m0 0 h16 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m188 0 h4 m0 0 h20 m-226 -10 v20 m236 0 v-20 m-236 20 v8 m236 0 v-8 m-236 8 q0 10 10 10 m216 0 q10 0 10 -10 m-226 10 h4 m168 0 h4 m0 0 h40 m23 -84 h-3"/> + <polygon points="285 10 293 6 293 14"/> + <polygon points="285 10 277 6 277 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#basic-sequence-generator-option" title="basic_sequence_generator_option" shape="rect">basic_sequence_generator_option</a></div> + <div>         ::= <a href="#sequence-generator-increment-by-option" title="sequence_generator_increment_by_option" shape="rect">sequence_generator_increment_by_option</a></div> + <div>           | <a href="#sequence-generator-maxvalue-option" title="sequence_generator_maxvalue_option" shape="rect">sequence_generator_maxvalue_option</a></div> + <div>           | <a href="#sequence-generator-minvalue-option" title="sequence_generator_minvalue_option" shape="rect">sequence_generator_minvalue_option</a></div> + <div>           | <a href="#sequence-generator-cycle-option" title="sequence_generator_cycle_option" shape="rect">sequence_generator_cycle_option</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-identity-column-option" title="alter-identity-column-option">alter-identity-column-option</a></li><li><a href="#alter-sequence-generator-option" title="alter-sequence-generator-option">alter-sequence-generator-option</a></li><li><a href="#common-sequence-generator-option" title="common-sequence-generator-option">common-sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_data_type_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="131" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="51" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="55" y="13">data_type</text></a><path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m56 0 h4 m3 0 h-3"/> + <polygon points="121 10 129 6 129 14"/> + <polygon points="121 10 113 6 113 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-data-type-option" title="sequence_generator_data_type_option" shape="rect">sequence_generator_data_type_option</a></div> + <div>         ::= 'AS' <a href="#data-type" title="data_type" shape="rect">data_type</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sequence-generator-option" title="sequence-generator-option">sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_start_with_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="295" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">START</text> + <rect x="67" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-start-value" xlink:title="sequence_generator_start_value" shape="rect"> + <rect x="109" y="1" width="162" height="18" class="nonterminal"/> + <text class="nonterminal" x="113" y="13">sequence_generator_start_value</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m162 0 h4 m3 0 h-3"/> + <polygon points="285 10 293 6 293 14"/> + <polygon points="285 10 277 6 277 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-start-with-option" title="sequence_generator_start_with_option" shape="rect">sequence_generator_start_with_option</a></div> + <div>         ::= 'START' 'WITH' <a href="#sequence-generator-start-value" title="sequence_generator_start_value" shape="rect">sequence_generator_start_value</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#common-sequence-generator-option" title="common-sequence-generator-option">common-sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_start_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#signed-numeric-literal" xlink:title="signed_numeric_literal" shape="rect"> + <rect x="23" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">signed_numeric_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-start-value" title="sequence_generator_start_value" shape="rect">sequence_generator_start_value</a></div> + <div>         ::= <a href="#signed-numeric-literal" title="signed_numeric_literal" shape="rect">signed_numeric_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sequence-generator-start-with-option" title="sequence-generator-start-with-option">sequence-generator-start-with-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_increment_by_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="303" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">INCREMENT</text> + <rect x="93" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-increment" xlink:title="sequence_generator_increment" shape="rect"> + <rect x="121" y="1" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="125" y="13">sequence_generator_increment</text></a><path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m158 0 h4 m3 0 h-3"/> + <polygon points="293 10 301 6 301 14"/> + <polygon points="293 10 285 6 285 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-increment-by-option" title="sequence_generator_increment_by_option" shape="rect">sequence_generator_increment_by_option</a></div> + <div>         ::= 'INCREMENT' 'BY' <a href="#sequence-generator-increment" title="sequence_generator_increment" shape="rect">sequence_generator_increment</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#basic-sequence-generator-option" title="basic-sequence-generator-option">basic-sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_increment +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#signed-numeric-literal" xlink:title="signed_numeric_literal" shape="rect"> + <rect x="23" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">signed_numeric_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-increment" title="sequence_generator_increment" shape="rect">sequence_generator_increment</a></div> + <div>         ::= <a href="#signed-numeric-literal" title="signed_numeric_literal" shape="rect">signed_numeric_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sequence-generator-increment-by-option" title="sequence-generator-increment-by-option">sequence-generator-increment-by-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_maxvalue_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">MAXVALUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-max-value" xlink:title="sequence_generator_max_value" shape="rect"> + <rect x="109" y="1" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="113" y="13">sequence_generator_max_value</text></a><rect x="43" y="29" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NO</text> + <rect x="73" y="29" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="41">MAXVALUE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m58 0 h4 m0 0 h4 m164 0 h4 m-258 0 h20 m238 0 h20 m-278 0 q10 0 10 10 m258 0 q0 -10 10 -10 m-268 10 v8 m258 0 v-8 m-258 8 q0 10 10 10 m238 0 q10 0 10 -10 m-248 10 h4 m22 0 h4 m0 0 h4 m58 0 h4 m0 0 h142 m23 -28 h-3"/> + <polygon points="307 10 315 6 315 14"/> + <polygon points="307 10 299 6 299 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-maxvalue-option" title="sequence_generator_maxvalue_option" shape="rect">sequence_generator_maxvalue_option</a></div> + <div>         ::= 'MAXVALUE' <a href="#sequence-generator-max-value" title="sequence_generator_max_value" shape="rect">sequence_generator_max_value</a></div> + <div>           | 'NO' 'MAXVALUE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#basic-sequence-generator-option" title="basic-sequence-generator-option">basic-sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_max_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#signed-numeric-literal" xlink:title="signed_numeric_literal" shape="rect"> + <rect x="23" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">signed_numeric_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-max-value" title="sequence_generator_max_value" shape="rect">sequence_generator_max_value</a></div> + <div>         ::= <a href="#signed-numeric-literal" title="signed_numeric_literal" shape="rect">signed_numeric_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sequence-generator-maxvalue-option" title="sequence-generator-maxvalue-option">sequence-generator-maxvalue-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_minvalue_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="311" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">MINVALUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-min-value" xlink:title="sequence_generator_min_value" shape="rect"> + <rect x="107" y="1" width="160" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="13">sequence_generator_min_value</text></a><rect x="43" y="29" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NO</text> + <rect x="73" y="29" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="41">MINVALUE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m56 0 h4 m0 0 h4 m160 0 h4 m-252 0 h20 m232 0 h20 m-272 0 q10 0 10 10 m252 0 q0 -10 10 -10 m-262 10 v8 m252 0 v-8 m-252 8 q0 10 10 10 m232 0 q10 0 10 -10 m-242 10 h4 m22 0 h4 m0 0 h4 m56 0 h4 m0 0 h138 m23 -28 h-3"/> + <polygon points="301 10 309 6 309 14"/> + <polygon points="301 10 293 6 293 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-minvalue-option" title="sequence_generator_minvalue_option" shape="rect">sequence_generator_minvalue_option</a></div> + <div>         ::= 'MINVALUE' <a href="#sequence-generator-min-value" title="sequence_generator_min_value" shape="rect">sequence_generator_min_value</a></div> + <div>           | 'NO' 'MINVALUE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#basic-sequence-generator-option" title="basic-sequence-generator-option">basic-sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_min_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#signed-numeric-literal" xlink:title="signed_numeric_literal" shape="rect"> + <rect x="23" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">signed_numeric_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-min-value" title="sequence_generator_min_value" shape="rect">sequence_generator_min_value</a></div> + <div>         ::= <a href="#signed-numeric-literal" title="signed_numeric_literal" shape="rect">signed_numeric_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sequence-generator-minvalue-option" title="sequence-generator-minvalue-option">sequence-generator-minvalue-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_cycle_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="153" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NO</text> + <rect x="93" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">CYCLE</text> + <path class="line" d="m17 10 h2 m20 0 h10 m0 0 h20 m-50 0 h20 m30 0 h20 m-70 0 q10 0 10 10 m50 0 q0 -10 10 -10 m-60 10 v1 m50 0 v-1 m-50 1 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m22 0 h4 m20 -21 h4 m36 0 h4 m3 0 h-3"/> + <polygon points="143 10 151 6 151 14"/> + <polygon points="143 10 135 6 135 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-cycle-option" title="sequence_generator_cycle_option" shape="rect">sequence_generator_cycle_option</a></div> + <div>         ::= 'NO'? 'CYCLE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#basic-sequence-generator-option" title="basic-sequence-generator-option">basic-sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_sequence_generator_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="455" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALTER</text> + <rect x="67" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">SEQUENCE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="131" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-sequence-generator-options" xlink:title="alter_sequence_generator_options" shape="rect"> + <rect x="261" y="1" width="170" height="18" class="nonterminal"/> + <text class="nonterminal" x="265" y="13">alter_sequence_generator_options</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m170 0 h4 m3 0 h-3"/> + <polygon points="445 10 453 6 453 14"/> + <polygon points="445 10 437 6 437 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-sequence-generator-statement" title="alter_sequence_generator_statement" shape="rect">alter_sequence_generator_statement</a></div> + <div>         ::= 'ALTER' 'SEQUENCE' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#alter-sequence-generator-options" title="alter_sequence_generator_options" shape="rect">alter_sequence_generator_options</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_sequence_generator_options +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-sequence-generator-option" xlink:title="alter_sequence_generator_option" shape="rect"> + <rect x="43" y="13" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">alter_sequence_generator_option</text></a><path class="line" d="m17 22 h2 m20 0 h4 m166 0 h4 m-194 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m174 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-174 0 h10 m0 0 h164 m23 21 h-3"/> + <polygon points="243 22 251 18 251 26"/> + <polygon points="243 22 235 18 235 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-sequence-generator-options" title="alter_sequence_generator_options" shape="rect">alter_sequence_generator_options</a></div> + <div>         ::= <a href="#alter-sequence-generator-option" title="alter_sequence_generator_option" shape="rect">alter_sequence_generator_option</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-sequence-generator-statement" title="alter-sequence-generator-statement">alter-sequence-generator-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_sequence_generator_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-sequence-generator-restart-option" xlink:title="alter_sequence_generator_restart_option" shape="rect"> + <rect x="43" y="1" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">alter_sequence_generator_restart_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#basic-sequence-generator-option" xlink:title="basic_sequence_generator_option" shape="rect"> + <rect x="43" y="29" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">basic_sequence_generator_option</text></a><path class="line" d="m17 10 h2 m20 0 h4 m200 0 h4 m-228 0 h20 m208 0 h20 m-248 0 q10 0 10 10 m228 0 q0 -10 10 -10 m-238 10 v8 m228 0 v-8 m-228 8 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m168 0 h4 m0 0 h32 m23 -28 h-3"/> + <polygon points="277 10 285 6 285 14"/> + <polygon points="277 10 269 6 269 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-sequence-generator-option" title="alter_sequence_generator_option" shape="rect">alter_sequence_generator_option</a></div> + <div>         ::= <a href="#alter-sequence-generator-restart-option" title="alter_sequence_generator_restart_option" shape="rect">alter_sequence_generator_restart_option</a></div> + <div>           | <a href="#basic-sequence-generator-option" title="basic_sequence_generator_option" shape="rect">basic_sequence_generator_option</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-sequence-generator-options" title="alter-sequence-generator-options">alter-sequence-generator-options</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + alter_sequence_generator_restart_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="357" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">RESTART</text> + <rect x="99" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="34">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-restart-value" xlink:title="sequence_generator_restart_value" shape="rect"> + <rect x="141" y="22" width="172" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="34">sequence_generator_restart_value</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m20 0 h10 m0 0 h212 m-242 0 h20 m222 0 h20 m-262 0 q10 0 10 10 m242 0 q0 -10 10 -10 m-252 10 v1 m242 0 v-1 m-242 1 q0 10 10 10 m222 0 q10 0 10 -10 m-232 10 h4 m34 0 h4 m0 0 h4 m172 0 h4 m23 -21 h-3"/> + <polygon points="347 10 355 6 355 14"/> + <polygon points="347 10 339 6 339 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alter-sequence-generator-restart-option" title="alter_sequence_generator_restart_option" shape="rect">alter_sequence_generator_restart_option</a></div> + <div>         ::= 'RESTART' ( 'WITH' <a href="#sequence-generator-restart-value" title="sequence_generator_restart_value" shape="rect">sequence_generator_restart_value</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-identity-column-option" title="alter-identity-column-option">alter-identity-column-option</a></li><li><a href="#alter-sequence-generator-option" title="alter-sequence-generator-option">alter-sequence-generator-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + sequence_generator_restart_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#signed-numeric-literal" xlink:title="signed_numeric_literal" shape="rect"> + <rect x="23" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">signed_numeric_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sequence-generator-restart-value" title="sequence_generator_restart_value" shape="rect">sequence_generator_restart_value</a></div> + <div>         ::= <a href="#signed-numeric-literal" title="signed_numeric_literal" shape="rect">signed_numeric_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alter-sequence-generator-restart-option" title="alter-sequence-generator-restart-option">alter-sequence-generator-restart-option</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_sequence_generator_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="359" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">SEQUENCE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="129" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="133" y="13">schema_qualified_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="259" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="13">drop_behavior</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m122 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="349 10 357 6 357 14"/> + <polygon points="349 10 341 6 341 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-sequence-generator-statement" title="drop_sequence_generator_statement" shape="rect">drop_sequence_generator_statement</a></div> + <div>         ::= 'DROP' 'SEQUENCE' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grant_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grant-privilege-statement" xlink:title="grant_privilege_statement" shape="rect"> + <rect x="43" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">grant_privilege_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grant-role-statement" xlink:title="grant_role_statement" shape="rect"> + <rect x="43" y="29" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">grant_role_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m130 0 h4 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m110 0 h4 m0 0 h20 m23 -28 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grant-statement" title="grant_statement" shape="rect">grant_statement</a></div> + <div>         ::= <a href="#grant-privilege-statement" title="grant_privilege_statement" shape="rect">grant_privilege_statement</a></div> + <div>           | <a href="#grant-role-statement" title="grant_role_statement" shape="rect">grant_role_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grant_privilege_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="651" height="128"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">GRANT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#privileges" xlink:title="privileges" shape="rect"> + <rect x="71" y="29" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="41">privileges</text></a><rect x="129" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="41">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantee" xlink:title="grantee" shape="rect"> + <rect x="177" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="41">grantee</text></a><rect x="177" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="13">,</text> + <rect x="271" y="50" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="62">WITH</text> + <rect x="313" y="50" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="62">HIERARCHY</text> + <rect x="383" y="50" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="387" y="62">OPTION</text> + <rect x="477" y="50" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="481" y="62">WITH</text> + <rect x="519" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="523" y="62">GRANT</text> + <rect x="567" y="50" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="571" y="62">OPTION</text> + <rect x="477" y="108" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="481" y="120">GRANTED</text> + <rect x="537" y="108" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="541" y="120">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantor" xlink:title="grantor" shape="rect"> + <rect x="565" y="108" width="42" height="18" class="nonterminal"/> + <text class="nonterminal" x="569" y="120">grantor</text></a><path class="line" d="m17 38 h2 m0 0 h4 m40 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m20 0 h4 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m40 28 h10 m0 0 h156 m-186 0 h20 m166 0 h20 m-206 0 q10 0 10 10 m186 0 q0 -10 10 -10 m-196 10 v1 m186 0 v-1 m-186 1 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m34 0 h4 m0 0 h4 m62 0 h4 m0 0 h4 m46 0 h4 m40 -21 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m34 0 h4 m0 0 h4 m40 0 h4 m0 0 h4 m46 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-208 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m52 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m42 0 h4 m23 -21 h-3"/> + <polygon points="641 96 649 92 649 100"/> + <polygon points="641 96 633 92 633 100"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grant-privilege-statement" title="grant_privilege_statement" shape="rect">grant_privilege_statement</a></div> + <div>         ::= 'GRANT' <a href="#privileges" title="privileges" shape="rect">privileges</a> 'TO' <a href="#grantee" title="grantee" shape="rect">grantee</a> ( ',' <a href="#grantee" title="grantee" shape="rect">grantee</a> )* ( 'WITH' 'HIERARCHY' 'OPTION' )? ( 'WITH' 'GRANT' 'OPTION' )? ( 'GRANTED' 'BY' + <a href="#grantor" title="grantor" shape="rect">grantor</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grant-statement" title="grant-statement">grant-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + privileges +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="239" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#object-privileges" xlink:title="object_privileges" shape="rect"> + <rect x="23" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">object_privileges</text></a><rect x="115" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="119" y="13">ON</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#object-name" xlink:title="object_name" shape="rect"> + <rect x="145" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="13">object_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m84 0 h4 m0 0 h4 m22 0 h4 m0 0 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="229 10 237 6 237 14"/> + <polygon points="229 10 221 6 221 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#privileges" title="privileges" shape="rect">privileges</a></div> + <div>         ::= <a href="#object-privileges" title="object_privileges" shape="rect">object_privileges</a> 'ON' <a href="#object-name" title="object_name" shape="rect">object_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grant-privilege-statement" title="grant-privilege-statement">grant-privilege-statement</a></li><li><a href="#revoke-privilege-statement" title="revoke-privilege-statement">revoke-privilege-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + object_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="341" height="238"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="34">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="127" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="131" y="13">table_name</text></a><rect x="63" y="50" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="62">DOMAIN</text> + <rect x="63" y="78" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="90">COLLATION</text> + <rect x="63" y="106" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="118">TRANSLATION</text> + <rect x="63" y="134" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="146">SEQUENCE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="165" y="50" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="169" y="62">schema_qualified_name</text></a><rect x="43" y="162" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="174">CHARACTER</text> + <rect x="113" y="162" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="174">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-name" xlink:title="character_set_name" shape="rect"> + <rect x="145" y="162" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="174">character_set_name</text></a><rect x="43" y="190" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="202">TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-resolved-user-defined-type-name" xlink:title="schema_resolved_user_defined_type_name" shape="rect"> + <rect x="81" y="190" width="216" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="202">schema_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="43" y="218" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="230">specific_routine_designator</text></a><path class="line" d="m17 10 h2 m40 0 h10 m0 0 h34 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v1 m64 0 v-1 m-64 1 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m36 0 h4 m20 -21 h4 m66 0 h4 m0 0 h104 m-282 0 h20 m262 0 h20 m-302 0 q10 0 10 10 m282 0 q0 -10 10 -10 m-292 10 v29 m282 0 v-29 m-282 29 q0 10 10 10 m262 0 q10 0 10 -10 m-252 10 h4 m48 0 h4 m0 0 h26 m-102 0 h20 m82 0 h20 m-122 0 q10 0 10 10 m102 0 q0 -10 10 -10 m-112 10 v8 m102 0 v-8 m-102 8 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m62 0 h4 m0 0 h12 m-92 -10 v20 m102 0 v-20 m-102 20 v8 m102 0 v-8 m-102 8 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m74 0 h4 m-92 -10 v20 m102 0 v-20 m-102 20 v8 m102 0 v-8 m-102 8 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m56 0 h4 m0 0 h18 m20 -84 h4 m122 0 h4 m0 0 h10 m-272 -10 v20 m282 0 v-20 m-282 20 v92 m282 0 v-92 m-282 92 q0 10 10 10 m262 0 q10 0 10 -10 m-272 10 h4 m62 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m104 0 h4 m0 0 h48 m-272 -10 v20 m282 0 v-20 m-282 20 v8 m282 0 v-8 m-282 8 q0 10 10 10 m262 0 q10 0 10 -10 m-272 10 h4 m30 0 h4 m0 0 h4 m216 0 h4 m-272 -10 v20 m282 0 v-20 m-282 20 v8 m282 0 v-8 m-282 8 q0 10 10 10 m262 0 q10 0 10 -10 m-272 10 h4 m132 0 h4 m0 0 h122 m23 -217 h-3"/> + <polygon points="331 10 339 6 339 14"/> + <polygon points="331 10 323 6 323 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#object-name" title="object_name" shape="rect">object_name</a></div> + <div>         ::= 'TABLE'? <a href="#table-name" title="table_name" shape="rect">table_name</a></div> + <div>           | ( 'DOMAIN' | 'COLLATION' | 'TRANSLATION' | 'SEQUENCE' ) <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a></div> + <div>           | 'CHARACTER' 'SET' <a href="#character-set-name" title="character_set_name" shape="rect">character_set_name</a></div> + <div>           | 'TYPE' <a href="#schema-resolved-user-defined-type-name" title="schema_resolved_user_defined_type_name" shape="rect">schema_resolved_user_defined_type_name</a></div> + <div>           | <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#privileges" title="privileges">privileges</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + object_privileges +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ALL</text> + <rect x="75" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="13">PRIVILEGES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#action" xlink:title="action" shape="rect"> + <rect x="63" y="57" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="69">action</text></a><rect x="63" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">,</text> + <path class="line" d="m17 10 h2 m20 0 h4 m24 0 h4 m0 0 h4 m62 0 h4 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v36 m122 0 v-36 m-122 36 q0 10 10 10 m102 0 q10 0 10 -10 m-92 10 h4 m36 0 h4 m-64 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m44 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-44 0 h4 m8 0 h4 m0 0 h28 m20 28 h18 m23 -56 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#object-privileges" title="object_privileges" shape="rect">object_privileges</a></div> + <div>         ::= 'ALL' 'PRIVILEGES'</div> + <div>           | <a href="#action" title="action" shape="rect">action</a> ( ',' <a href="#action" title="action" shape="rect">action</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#privileges" title="privileges">privileges</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + action +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="383" height="294"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">SELECT</text> + <rect x="111" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#privilege-column-list" xlink:title="privilege_column_list" shape="rect"> + <rect x="151" y="22" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="155" y="34">privilege_column_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#privilege-method-list" xlink:title="privilege_method_list" shape="rect"> + <rect x="151" y="50" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="155" y="62">privilege_method_list</text></a><rect x="283" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="287" y="34">)</text> + <rect x="43" y="78" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="90">DELETE</text> + <rect x="63" y="106" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="118">INSERT</text> + <rect x="63" y="134" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="146">UPDATE</text> + <rect x="63" y="162" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="174">REFERENCES</text> + <rect x="177" y="127" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="139">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#privilege-column-list" xlink:title="privilege_column_list" shape="rect"> + <rect x="197" y="127" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="201" y="139">privilege_column_list</text></a><rect x="307" y="127" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="311" y="139">)</text> + <rect x="43" y="190" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="202">USAGE</text> + <rect x="43" y="218" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="230">TRIGGER</text> + <rect x="43" y="246" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="258">UNDER</text> + <rect x="43" y="274" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="286">EXECUTE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m20 0 h10 m0 0 h182 m-212 0 h20 m192 0 h20 m-232 0 q10 0 10 10 m212 0 q0 -10 10 -10 m-222 10 v1 m212 0 v-1 m-212 1 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m12 0 h4 m20 0 h4 m102 0 h4 m0 0 h2 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v8 m132 0 v-8 m-132 8 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m104 0 h4 m20 -28 h4 m12 0 h4 m20 -21 h24 m-324 0 h20 m304 0 h20 m-344 0 q10 0 10 10 m324 0 q0 -10 10 -10 m-334 10 v57 m324 0 v-57 m-324 57 q0 10 10 10 m304 0 q10 0 10 -10 m-314 10 h4 m40 0 h4 m0 0 h256 m-314 -10 v20 m324 0 v-20 m-324 20 v8 m324 0 v-8 m-324 8 q0 10 10 10 m304 0 q10 0 10 -10 m-294 10 h4 m40 0 h4 m0 0 h26 m-94 0 h20 m74 0 h20 m-114 0 q10 0 10 10 m94 0 q0 -10 10 -10 m-104 10 v8 m94 0 v-8 m-94 8 q0 10 10 10 m74 0 q10 0 10 -10 m-84 10 h4 m44 0 h4 m0 0 h22 m-84 -10 v20 m94 0 v-20 m-94 20 v8 m94 0 v-8 m-94 8 q0 10 10 10 m74 0 q10 0 10 -10 m-84 10 h4 m66 0 h4 m40 -56 h10 m0 0 h140 m-170 0 h20 m150 0 h20 m-190 0 q10 0 10 10 m170 0 q0 -10 10 -10 m-180 10 v1 m170 0 v-1 m-170 1 q0 10 10 10 m150 0 q10 0 10 -10 m-160 10 h4 m12 0 h4 m0 0 h4 m102 0 h4 m0 0 h4 m12 0 h4 m-294 -31 v20 m324 0 v-20 m-324 20 v64 m324 0 v-64 m-324 64 q0 10 10 10 m304 0 q10 0 10 -10 m-314 10 h4 m38 0 h4 m0 0 h258 m-314 -10 v20 m324 0 v-20 m-324 20 v8 m324 0 v-8 m-324 8 q0 10 10 10 m304 0 q10 0 10 -10 m-314 10 h4 m48 0 h4 m0 0 h248 m-314 -10 v20 m324 0 v-20 m-324 20 v8 m324 0 v-8 m-324 8 q0 10 10 10 m304 0 q10 0 10 -10 m-314 10 h4 m40 0 h4 m0 0 h256 m-314 -10 v20 m324 0 v-20 m-324 20 v8 m324 0 v-8 m-324 8 q0 10 10 10 m304 0 q10 0 10 -10 m-314 10 h4 m48 0 h4 m0 0 h248 m23 -273 h-3"/> + <polygon points="373 10 381 6 381 14"/> + <polygon points="373 10 365 6 365 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#action" title="action" shape="rect">action</a>   ::= 'SELECT' ( '(' ( <a href="#privilege-column-list" title="privilege_column_list" shape="rect">privilege_column_list</a> | <a href="#privilege-method-list" title="privilege_method_list" shape="rect">privilege_method_list</a> ) ')' )?</div> + <div>           | 'DELETE'</div> + <div>           | ( 'INSERT' | 'UPDATE' | 'REFERENCES' ) ( '(' <a href="#privilege-column-list" title="privilege_column_list" shape="rect">privilege_column_list</a> ')' )?</div> + <div>           | 'USAGE'</div> + <div>           | 'TRIGGER'</div> + <div>           | 'UNDER'</div> + <div>           | 'EXECUTE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#object-privileges" title="object-privileges">object-privileges</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + privilege_method_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">specific_routine_designator</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m132 0 h4 m-160 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m140 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-140 0 h4 m8 0 h4 m0 0 h124 m23 28 h-3"/> + <polygon points="209 38 217 34 217 42"/> + <polygon points="209 38 201 34 201 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#privilege-method-list" title="privilege_method_list" shape="rect">privilege_method_list</a></div> + <div>         ::= <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a> ( ',' <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#action" title="action">action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + privilege_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#privilege-column-list" title="privilege_column_list" shape="rect">privilege_column_list</a></div> + <div>         ::= <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#action" title="action">action</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grantee +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">PUBLIC</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier</text></a><path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h6 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v8 m74 0 v-8 m-74 8 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m46 0 h4 m23 -28 h-3"/> + <polygon points="123 10 131 6 131 14"/> + <polygon points="123 10 115 6 115 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grantee" title="grantee" shape="rect">grantee</a>  ::= 'PUBLIC'</div> + <div>           | <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grant-privilege-statement" title="grant-privilege-statement">grant-privilege-statement</a></li><li><a href="#grant-role-statement" title="grant-role-statement">grant-role-statement</a></li><li><a href="#revoke-privilege-statement" title="revoke-privilege-statement">revoke-privilege-statement</a></li><li><a href="#revoke-role-statement" title="revoke-role-statement">revoke-role-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grantor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="169" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CURRENT_USER</text> + <rect x="43" y="29" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CURRENT_ROLE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m80 0 h4 m0 0 h2 m-110 0 h20 m90 0 h20 m-130 0 q10 0 10 10 m110 0 q0 -10 10 -10 m-120 10 v8 m110 0 v-8 m-110 8 q0 10 10 10 m90 0 q10 0 10 -10 m-100 10 h4 m82 0 h4 m23 -28 h-3"/> + <polygon points="159 10 167 6 167 14"/> + <polygon points="159 10 151 6 151 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grantor" title="grantor" shape="rect">grantor</a>  ::= 'CURRENT_USER'</div> + <div>           | 'CURRENT_ROLE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grant-privilege-statement" title="grant-privilege-statement">grant-privilege-statement</a></li><li><a href="#grant-role-statement" title="grant-role-statement">grant-role-statement</a></li><li><a href="#revoke-privilege-statement" title="revoke-privilege-statement">revoke-privilege-statement</a></li><li><a href="#revoke-role-statement" title="revoke-role-statement">revoke-role-statement</a></li><li><a href="#role-definition" title="role-definition">role-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + role_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="363" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CREATE</text> + <rect x="73" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">ROLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="113" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="13">identifier</text></a><rect x="187" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="34">WITH</text> + <rect x="229" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="34">ADMIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantor" xlink:title="grantor" shape="rect"> + <rect x="277" y="22" width="42" height="18" class="nonterminal"/> + <text class="nonterminal" x="281" y="34">grantor</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h130 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v1 m160 0 v-1 m-160 1 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m34 0 h4 m0 0 h4 m40 0 h4 m0 0 h4 m42 0 h4 m23 -21 h-3"/> + <polygon points="353 10 361 6 361 14"/> + <polygon points="353 10 345 6 345 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#role-definition" title="role_definition" shape="rect">role_definition</a></div> + <div>         ::= 'CREATE' 'ROLE' <a href="#identifier" title="identifier" shape="rect">identifier</a> ( 'WITH' 'ADMIN' <a href="#grantor" title="grantor" shape="rect">grantor</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-definition-statement" title="sql-schema-definition-statement">sql-schema-definition-statement</a></li><li><a href="#schema-element" title="schema-element">schema-element</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grant_role_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="665" height="70"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">GRANT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="91" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="41">identifier</text></a><rect x="91" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="13">,</text> + <rect x="165" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="41">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantee" xlink:title="grantee" shape="rect"> + <rect x="213" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="41">grantee</text></a><rect x="213" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="13">,</text> + <rect x="307" y="50" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="311" y="62">WITH</text> + <rect x="349" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="353" y="62">ADMIN</text> + <rect x="397" y="50" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="401" y="62">OPTION</text> + <rect x="491" y="50" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="495" y="62">GRANTED</text> + <rect x="551" y="50" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="555" y="62">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantor" xlink:title="grantor" shape="rect"> + <rect x="579" y="50" width="42" height="18" class="nonterminal"/> + <text class="nonterminal" x="583" y="62">grantor</text></a><path class="line" d="m17 38 h2 m0 0 h4 m40 0 h4 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m20 28 h4 m20 0 h4 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m40 28 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m34 0 h4 m0 0 h4 m40 0 h4 m0 0 h4 m46 0 h4 m40 -21 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m52 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m42 0 h4 m23 -21 h-3"/> + <polygon points="655 38 663 34 663 42"/> + <polygon points="655 38 647 34 647 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grant-role-statement" title="grant_role_statement" shape="rect">grant_role_statement</a></div> + <div>         ::= 'GRANT' <a href="#identifier" title="identifier" shape="rect">identifier</a> ( ',' <a href="#identifier" title="identifier" shape="rect">identifier</a> )* 'TO' <a href="#grantee" title="grantee" shape="rect">grantee</a> ( ',' <a href="#grantee" title="grantee" shape="rect">grantee</a> )* ( 'WITH' 'ADMIN' 'OPTION' )? ( 'GRANTED' 'BY' <a href="#grantor" title="grantor" shape="rect">grantor</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grant-statement" title="grant-statement">grant-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + drop_role_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="175" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DROP</text> + <rect x="65" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">ROLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="105" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="165 10 173 6 173 14"/> + <polygon points="165 10 157 6 157 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#drop-role-statement" title="drop_role_statement" shape="rect">drop_role_statement</a></div> + <div>         ::= 'DROP' 'ROLE' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + revoke_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#revoke-privilege-statement" xlink:title="revoke_privilege_statement" shape="rect"> + <rect x="43" y="1" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">revoke_privilege_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#revoke-role-statement" xlink:title="revoke_role_statement" shape="rect"> + <rect x="43" y="29" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">revoke_role_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m136 0 h4 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m116 0 h4 m0 0 h20 m23 -28 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#revoke-statement" title="revoke_statement" shape="rect">revoke_statement</a></div> + <div>         ::= <a href="#revoke-privilege-statement" title="revoke_privilege_statement" shape="rect">revoke_privilege_statement</a></div> + <div>           | <a href="#revoke-role-statement" title="revoke_role_statement" shape="rect">revoke_role_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-manipulation-statement" title="sql-schema-manipulation-statement">sql-schema-manipulation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + revoke_privilege_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="723" height="70"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">REVOKE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#revoke-option-extension" xlink:title="revoke_option_extension" shape="rect"> + <rect x="95" y="50" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="62">revoke_option_extension</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#privileges" xlink:title="privileges" shape="rect"> + <rect x="249" y="29" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="41">privileges</text></a><rect x="307" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="311" y="41">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantee" xlink:title="grantee" shape="rect"> + <rect x="371" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="375" y="41">grantee</text></a><rect x="371" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="375" y="13">,</text> + <rect x="465" y="50" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="469" y="62">GRANTED</text> + <rect x="525" y="50" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="529" y="62">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantor" xlink:title="grantor" shape="rect"> + <rect x="553" y="50" width="42" height="18" class="nonterminal"/> + <text class="nonterminal" x="557" y="62">grantor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="623" y="29" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="627" y="41">drop_behavior</text></a><path class="line" d="m17 38 h2 m0 0 h4 m44 0 h4 m20 0 h10 m0 0 h124 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v1 m154 0 v-1 m-154 1 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m126 0 h4 m20 -21 h4 m50 0 h4 m0 0 h4 m36 0 h4 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m40 28 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m52 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m42 0 h4 m20 -21 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="713 38 721 34 721 42"/> + <polygon points="713 38 705 34 705 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#revoke-privilege-statement" title="revoke_privilege_statement" shape="rect">revoke_privilege_statement</a></div> + <div>         ::= 'REVOKE' <a href="#revoke-option-extension" title="revoke_option_extension" shape="rect">revoke_option_extension</a>? <a href="#privileges" title="privileges" shape="rect">privileges</a> 'FROM' <a href="#grantee" title="grantee" shape="rect">grantee</a> ( ',' <a href="#grantee" title="grantee" shape="rect">grantee</a> )* ( 'GRANTED' 'BY' <a href="#grantor" title="grantor" shape="rect">grantor</a> )? <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#revoke-statement" title="revoke-statement">revoke-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + revoke_option_extension +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">GRANT</text> + <rect x="43" y="29" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">HIERARCHY</text> + <rect x="133" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="13">OPTION</text> + <rect x="187" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="13">FOR</text> + <path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h22 m-90 0 h20 m70 0 h20 m-110 0 q10 0 10 10 m90 0 q0 -10 10 -10 m-100 10 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m62 0 h4 m20 -28 h4 m46 0 h4 m0 0 h4 m26 0 h4 m3 0 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#revoke-option-extension" title="revoke_option_extension" shape="rect">revoke_option_extension</a></div> + <div>         ::= ( 'GRANT' | 'HIERARCHY' ) 'OPTION' 'FOR'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#revoke-privilege-statement" title="revoke-privilege-statement">revoke-privilege-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + revoke_role_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="761" height="70"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">REVOKE</text> + <rect x="95" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="62">ADMIN</text> + <rect x="143" y="50" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="62">OPTION</text> + <rect x="197" y="50" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="62">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="271" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="275" y="41">identifier</text></a><rect x="271" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="13">,</text> + <rect x="345" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="349" y="41">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantee" xlink:title="grantee" shape="rect"> + <rect x="409" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="413" y="41">grantee</text></a><rect x="409" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="413" y="13">,</text> + <rect x="503" y="50" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="507" y="62">GRANTED</text> + <rect x="563" y="50" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="567" y="62">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grantor" xlink:title="grantor" shape="rect"> + <rect x="591" y="50" width="42" height="18" class="nonterminal"/> + <text class="nonterminal" x="595" y="62">grantor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-behavior" xlink:title="drop_behavior" shape="rect"> + <rect x="661" y="29" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="665" y="41">drop_behavior</text></a><path class="line" d="m17 38 h2 m0 0 h4 m44 0 h4 m20 0 h10 m0 0 h126 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v1 m156 0 v-1 m-156 1 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m40 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m26 0 h4 m40 -21 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m20 28 h4 m36 0 h4 m20 0 h4 m46 0 h4 m-74 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m54 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-54 0 h4 m8 0 h4 m0 0 h38 m40 28 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m52 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m42 0 h4 m20 -21 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="751 38 759 34 759 42"/> + <polygon points="751 38 743 34 743 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#revoke-role-statement" title="revoke_role_statement" shape="rect">revoke_role_statement</a></div> + <div>         ::= 'REVOKE' ( 'ADMIN' 'OPTION' 'FOR' )? <a href="#identifier" title="identifier" shape="rect">identifier</a> ( ',' <a href="#identifier" title="identifier" shape="rect">identifier</a> )* 'FROM' <a href="#grantee" title="grantee" shape="rect">grantee</a> ( ',' <a href="#grantee" title="grantee" shape="rect">grantee</a> )* ( 'GRANTED' 'BY' <a href="#grantor" title="grantor" shape="rect">grantor</a> )? <a href="#drop-behavior" title="drop_behavior" shape="rect">drop_behavior</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#revoke-statement" title="revoke-statement">revoke-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_client_module_definition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="731" height="126"> + <polygon points="11 10 3 6 3 14"/> + <polygon points="19 10 11 6 11 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#module-name-clause" xlink:title="module_name_clause" shape="rect"> + <rect x="25" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="29" y="13">module_name_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#language-clause" xlink:title="language_clause" shape="rect"> + <rect x="145" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="13">language_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#module-authorization-clause" xlink:title="module_authorization_clause" shape="rect"> + <rect x="241" y="1" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="13">module_authorization_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#module-path-specification" xlink:title="module_path_specification" shape="rect"> + <rect x="413" y="22" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="417" y="34">module_path_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#module-transform-group-specification" xlink:title="module_transform_group_specification" shape="rect"> + <rect x="37" y="106" width="186" height="18" class="nonterminal"/> + <text class="nonterminal" x="41" y="118">module_transform_group_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#module-collations" xlink:title="module_collations" shape="rect"> + <rect x="271" y="106" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="275" y="118">module_collations</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#temporary-table-declaration" xlink:title="temporary_table_declaration" shape="rect"> + <rect x="409" y="64" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="413" y="76">temporary_table_declaration</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#module-contents" xlink:title="module_contents" shape="rect"> + <rect x="597" y="85" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="601" y="97">module_contents</text></a><path class="line" d="m19 10 h2 m0 0 h4 m112 0 h4 m0 0 h4 m88 0 h4 m0 0 h4 m144 0 h4 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m130 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-578 84 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h184 m-214 0 h20 m194 0 h20 m-234 0 q10 0 10 10 m214 0 q0 -10 10 -10 m-224 10 v1 m214 0 v-1 m-214 1 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m186 0 h4 m40 -21 h10 m0 0 h88 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v1 m118 0 v-1 m-118 1 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m90 0 h4 m40 -21 h10 m0 0 h138 m-168 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m148 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-148 0 h4 m140 0 h4 m40 21 h4 m90 0 h4 m-118 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m98 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-98 0 h10 m0 0 h88 m23 21 h-3"/> + <polygon points="721 94 729 90 729 98"/> + <polygon points="721 94 713 90 713 98"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-client-module-definition" title="SQL_client_module_definition" shape="rect">SQL_client_module_definition</a></div> + <div>         ::= <a href="#module-name-clause" title="module_name_clause" shape="rect">module_name_clause</a> <a href="#language-clause" title="language_clause" shape="rect">language_clause</a> <a href="#module-authorization-clause" title="module_authorization_clause" shape="rect">module_authorization_clause</a> <a href="#module-path-specification" title="module_path_specification" shape="rect">module_path_specification</a>? <a href="#module-transform-group-specification" title="module_transform_group_specification" shape="rect">module_transform_group_specification</a>? <a href="#module-collations" title="module_collations" shape="rect">module_collations</a>? <a href="#temporary-table-declaration" title="temporary_table_declaration" shape="rect">temporary_table_declaration</a>* <a href="#module-contents" title="module_contents" shape="rect">module_contents</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + module_authorization_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="667" height="168"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">SCHEMA</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name" xlink:title="schema_name" shape="rect"> + <rect x="97" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="13">schema_name</text></a><rect x="205" y="22" width="86" height="18" class="terminal" rx="4"/> + <text class="terminal" x="209" y="34">AUTHORIZATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="299" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="303" y="34">identifier</text></a><rect x="373" y="43" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="377" y="55">FOR</text> + <rect x="407" y="43" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="411" y="55">STATIC</text> + <rect x="475" y="43" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="479" y="55">ONLY</text> + <rect x="475" y="71" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="479" y="83">AND</text> + <rect x="511" y="71" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="515" y="83">DYNAMIC</text> + <rect x="43" y="99" width="86" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="111">AUTHORIZATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="137" y="99" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="111">identifier</text></a><rect x="211" y="120" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="215" y="132">FOR</text> + <rect x="245" y="120" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="132">STATIC</text> + <rect x="313" y="120" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="132">ONLY</text> + <rect x="313" y="148" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="160">AND</text> + <rect x="349" y="148" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="353" y="160">DYNAMIC</text> + <path class="line" d="m17 10 h2 m20 0 h4 m46 0 h4 m0 0 h4 m80 0 h4 m20 0 h10 m0 0 h396 m-426 0 h20 m406 0 h20 m-446 0 q10 0 10 10 m426 0 q0 -10 10 -10 m-436 10 v1 m426 0 v-1 m-426 1 q0 10 10 10 m406 0 q10 0 10 -10 m-416 10 h4 m86 0 h4 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h208 m-238 0 h20 m218 0 h20 m-258 0 q10 0 10 10 m238 0 q0 -10 10 -10 m-248 10 v1 m238 0 v-1 m-238 1 q0 10 10 10 m218 0 q10 0 10 -10 m-228 10 h4 m26 0 h4 m0 0 h4 m40 0 h4 m20 0 h4 m34 0 h4 m0 0 h54 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m28 0 h4 m0 0 h4 m52 0 h4 m-548 -70 h20 m588 0 h20 m-628 0 q10 0 10 10 m608 0 q0 -10 10 -10 m-618 10 v78 m608 0 v-78 m-608 78 q0 10 10 10 m588 0 q10 0 10 -10 m-598 10 h4 m86 0 h4 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h208 m-238 0 h20 m218 0 h20 m-258 0 q10 0 10 10 m238 0 q0 -10 10 -10 m-248 10 v1 m238 0 v-1 m-238 1 q0 10 10 10 m218 0 q10 0 10 -10 m-228 10 h4 m26 0 h4 m0 0 h4 m40 0 h4 m20 0 h4 m34 0 h4 m0 0 h54 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v8 m116 0 v-8 m-116 8 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m28 0 h4 m0 0 h4 m52 0 h4 m40 -49 h182 m23 -98 h-3"/> + <polygon points="657 10 665 6 665 14"/> + <polygon points="657 10 649 6 649 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#module-authorization-clause" title="module_authorization_clause" shape="rect">module_authorization_clause</a></div> + <div>         ::= 'SCHEMA' <a href="#schema-name" title="schema_name" shape="rect">schema_name</a> ( 'AUTHORIZATION' <a href="#identifier" title="identifier" shape="rect">identifier</a> ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?</div> + <div>           | 'AUTHORIZATION' <a href="#identifier" title="identifier" shape="rect">identifier</a> ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-client-module-definition" title="sql-client-module-definition">sql-client-module-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + module_path_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-specification" xlink:title="path_specification" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">path_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#module-path-specification" title="module_path_specification" shape="rect">module_path_specification</a></div> + <div>         ::= <a href="#path-specification" title="path_specification" shape="rect">path_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-client-module-definition" title="sql-client-module-definition">sql-client-module-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + module_transform_group_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-group-specification" xlink:title="transform_group_specification" shape="rect"> + <rect x="23" y="1" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">transform_group_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m146 0 h4 m3 0 h-3"/> + <polygon points="183 10 191 6 191 14"/> + <polygon points="183 10 175 6 175 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#module-transform-group-specification" title="module_transform_group_specification" shape="rect">module_transform_group_specification</a></div> + <div>         ::= <a href="#transform-group-specification" title="transform_group_specification" shape="rect">transform_group_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-client-module-definition" title="sql-client-module-definition">sql-client-module-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + module_collations +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#module-collation-specification" xlink:title="module_collation_specification" shape="rect"> + <rect x="43" y="13" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">module_collation_specification</text></a><path class="line" d="m17 22 h2 m20 0 h4 m144 0 h4 m-172 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m152 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-152 0 h10 m0 0 h142 m23 21 h-3"/> + <polygon points="221 22 229 18 229 26"/> + <polygon points="221 22 213 18 213 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#module-collations" title="module_collations" shape="rect">module_collations</a></div> + <div>         ::= <a href="#module-collation-specification" title="module_collation_specification" shape="rect">module_collation_specification</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-client-module-definition" title="sql-client-module-definition">sql-client-module-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + module_collation_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="467" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">COLLATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="93" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="13">schema_qualified_name</text></a><rect x="243" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="34">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification-list" xlink:title="character_set_specification_list" shape="rect"> + <rect x="277" y="22" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="281" y="34">character_set_specification_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m122 0 h4 m20 0 h10 m0 0 h178 m-208 0 h20 m188 0 h20 m-228 0 q10 0 10 10 m208 0 q0 -10 10 -10 m-218 10 v1 m208 0 v-1 m-208 1 q0 10 10 10 m188 0 q10 0 10 -10 m-198 10 h4 m26 0 h4 m0 0 h4 m146 0 h4 m23 -21 h-3"/> + <polygon points="457 10 465 6 465 14"/> + <polygon points="457 10 449 6 449 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#module-collation-specification" title="module_collation_specification" shape="rect">module_collation_specification</a></div> + <div>         ::= 'COLLATION' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> ( 'FOR' <a href="#character-set-specification-list" title="character_set_specification_list" shape="rect">character_set_specification_list</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#module-collations" title="module-collations">module-collations</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_set_specification_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="43" y="29" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">character_set_specification</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m130 0 h4 m-158 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m138 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-138 0 h4 m8 0 h4 m0 0 h122 m23 28 h-3"/> + <polygon points="207 38 215 34 215 42"/> + <polygon points="207 38 199 34 199 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-set-specification-list" title="character_set_specification_list" shape="rect">character_set_specification_list</a></div> + <div>         ::= <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a> ( ',' <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#module-collation-specification" title="module-collation-specification">module-collation-specification</a></li><li><a href="#set-session-collation-statement" title="set-session-collation-statement">set-session-collation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + module_contents +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="233" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#declare-cursor" xlink:title="declare_cursor" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">declare_cursor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-declare-cursor" xlink:title="dynamic_declare_cursor" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">dynamic_declare_cursor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#externally-invoked-procedure" xlink:title="externally_invoked_procedure" shape="rect"> + <rect x="43" y="57" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">externally_invoked_procedure</text></a><path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h70 m-174 0 h20 m154 0 h20 m-194 0 q10 0 10 10 m174 0 q0 -10 10 -10 m-184 10 v8 m174 0 v-8 m-174 8 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m120 0 h4 m0 0 h26 m-164 -10 v20 m174 0 v-20 m-174 20 v8 m174 0 v-8 m-174 8 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m146 0 h4 m23 -56 h-3"/> + <polygon points="223 10 231 6 231 14"/> + <polygon points="223 10 215 6 215 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#module-contents" title="module_contents" shape="rect">module_contents</a></div> + <div>         ::= <a href="#declare-cursor" title="declare_cursor" shape="rect">declare_cursor</a></div> + <div>           | <a href="#dynamic-declare-cursor" title="dynamic_declare_cursor" shape="rect">dynamic_declare_cursor</a></div> + <div>           | <a href="#externally-invoked-procedure" title="externally_invoked_procedure" shape="rect">externally_invoked_procedure</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-client-module-definition" title="sql-client-module-definition">sql-client-module-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + module_name_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="407" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MODULE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="99" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="34">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#module-character-set-specification" xlink:title="module_character_set_specification" shape="rect"> + <rect x="193" y="22" width="170" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="34">module_character_set_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m20 0 h10 m0 0 h44 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v1 m74 0 v-1 m-74 1 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m46 0 h4 m40 -21 h10 m0 0 h168 m-198 0 h20 m178 0 h20 m-218 0 q10 0 10 10 m198 0 q0 -10 10 -10 m-208 10 v1 m198 0 v-1 m-198 1 q0 10 10 10 m178 0 q10 0 10 -10 m-188 10 h4 m170 0 h4 m23 -21 h-3"/> + <polygon points="397 10 405 6 405 14"/> + <polygon points="397 10 389 6 389 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#module-name-clause" title="module_name_clause" shape="rect">module_name_clause</a></div> + <div>         ::= 'MODULE' <a href="#identifier" title="identifier" shape="rect">identifier</a>? <a href="#module-character-set-specification" title="module_character_set_specification" shape="rect">module_character_set_specification</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-client-module-definition" title="sql-client-module-definition">sql-client-module-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + module_character_set_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="259" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NAMES</text> + <rect x="71" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">ARE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification" xlink:title="character_set_specification" shape="rect"> + <rect x="105" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">character_set_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="249 10 257 6 257 14"/> + <polygon points="249 10 241 6 241 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#module-character-set-specification" title="module_character_set_specification" shape="rect">module_character_set_specification</a></div> + <div>         ::= 'NAMES' 'ARE' <a href="#character-set-specification" title="character_set_specification" shape="rect">character_set_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#module-name-clause" title="module-name-clause">module-name-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + externally_invoked_procedure +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="507" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">PROCEDURE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="95" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#host-parameter-declaration-list" xlink:title="host_parameter_declaration_list" shape="rect"> + <rect x="149" y="1" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="153" y="13">host_parameter_declaration_list</text></a><rect x="313" y="1" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="13">;</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-procedure-statement" xlink:title="SQL_procedure_statement" shape="rect"> + <rect x="331" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="335" y="13">SQL_procedure_statement</text></a><rect x="473" y="1" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="477" y="13">;</text> + <path class="line" d="m17 10 h2 m0 0 h4 m64 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m156 0 h4 m0 0 h4 m10 0 h4 m0 0 h4 m134 0 h4 m0 0 h4 m10 0 h4 m3 0 h-3"/> + <polygon points="497 10 505 6 505 14"/> + <polygon points="497 10 489 6 489 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#externally-invoked-procedure" title="externally_invoked_procedure" shape="rect">externally_invoked_procedure</a></div> + <div>         ::= 'PROCEDURE' <a href="#identifier" title="identifier" shape="rect">identifier</a> <a href="#host-parameter-declaration-list" title="host_parameter_declaration_list" shape="rect">host_parameter_declaration_list</a> ';' <a href="#sql-procedure-statement" title="SQL_procedure_statement" shape="rect">SQL_procedure_statement</a> ';'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#module-contents" title="module-contents">module-contents</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + host_parameter_declaration_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="267" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#host-parameter-declaration" xlink:title="host_parameter_declaration" shape="rect"> + <rect x="63" y="29" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">host_parameter_declaration</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="231" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m140 0 h4 m-168 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m148 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-148 0 h4 m8 0 h4 m0 0 h132 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="257 38 265 34 265 42"/> + <polygon points="257 38 249 34 249 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#host-parameter-declaration-list" title="host_parameter_declaration_list" shape="rect">host_parameter_declaration_list</a></div> + <div>         ::= '(' <a href="#host-parameter-declaration" title="host_parameter_declaration" shape="rect">host_parameter_declaration</a> ( ',' <a href="#host-parameter-declaration" title="host_parameter_declaration" shape="rect">host_parameter_declaration</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#externally-invoked-procedure" title="externally-invoked-procedure">externally-invoked-procedure</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + host_parameter_declaration +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="351" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#host-parameter-name" xlink:title="host_parameter_name" shape="rect"> + <rect x="43" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">host_parameter_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#host-parameter-data-type" xlink:title="host_parameter_data_type" shape="rect"> + <rect x="169" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="13">host_parameter_data_type</text></a><rect x="43" y="29" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SQLSTATE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m118 0 h4 m0 0 h4 m138 0 h4 m-292 0 h20 m272 0 h20 m-312 0 q10 0 10 10 m292 0 q0 -10 10 -10 m-302 10 v8 m292 0 v-8 m-292 8 q0 10 10 10 m272 0 q10 0 10 -10 m-282 10 h4 m54 0 h4 m0 0 h210 m23 -28 h-3"/> + <polygon points="341 10 349 6 349 14"/> + <polygon points="341 10 333 6 333 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#host-parameter-declaration" title="host_parameter_declaration" shape="rect">host_parameter_declaration</a></div> + <div>         ::= <a href="#host-parameter-name" title="host_parameter_name" shape="rect">host_parameter_name</a> <a href="#host-parameter-data-type" title="host_parameter_data_type" shape="rect">host_parameter_data_type</a></div> + <div>           | 'SQLSTATE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#host-parameter-declaration-list" title="host-parameter-declaration-list">host-parameter-declaration-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + host_parameter_data_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="23" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">data_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#locator-indication" xlink:title="locator_indication" shape="rect"> + <rect x="107" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="34">locator_indication</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m23 -21 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#host-parameter-data-type" title="host_parameter_data_type" shape="rect">host_parameter_data_type</a></div> + <div>         ::= <a href="#data-type" title="data_type" shape="rect">data_type</a> <a href="#locator-indication" title="locator_indication" shape="rect">locator_indication</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#host-parameter-declaration" title="host-parameter-declaration">host-parameter-declaration</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_procedure_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-executable-statement" xlink:title="SQL_executable_statement" shape="rect"> + <rect x="23" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SQL_executable_statement</text></a><path class="line" d="m17 10 h2 m0 0 h4 m138 0 h4 m3 0 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-procedure-statement" title="SQL_procedure_statement" shape="rect">SQL_procedure_statement</a></div> + <div>         ::= <a href="#sql-executable-statement" title="SQL_executable_statement" shape="rect">SQL_executable_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-routine-body" title="sql-routine-body">sql-routine-body</a></li><li><a href="#externally-invoked-procedure" title="externally-invoked-procedure">externally-invoked-procedure</a></li><li><a href="#triggered-sql-statement" title="triggered-sql-statement">triggered-sql-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_executable_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="217"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-schema-statement" xlink:title="SQL_schema_statement" shape="rect"> + <rect x="43" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SQL_schema_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-data-statement" xlink:title="SQL_data_statement" shape="rect"> + <rect x="43" y="29" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">SQL_data_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-control-statement" xlink:title="SQL_control_statement" shape="rect"> + <rect x="43" y="57" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">SQL_control_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-transaction-statement" xlink:title="SQL_transaction_statement" shape="rect"> + <rect x="43" y="85" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">SQL_transaction_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-connection-statement" xlink:title="SQL_connection_statement" shape="rect"> + <rect x="43" y="113" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">SQL_connection_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-session-statement" xlink:title="SQL_session_statement" shape="rect"> + <rect x="43" y="141" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">SQL_session_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-diagnostics-statement" xlink:title="SQL_diagnostics_statement" shape="rect"> + <rect x="43" y="169" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">SQL_diagnostics_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-dynamic-statement" xlink:title="SQL_dynamic_statement" shape="rect"> + <rect x="43" y="197" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">SQL_dynamic_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m124 0 h4 m0 0 h14 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m108 0 h4 m0 0 h30 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m118 0 h4 m0 0 h20 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m138 0 h4 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m136 0 h4 m0 0 h2 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m122 0 h4 m0 0 h16 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m138 0 h4 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m126 0 h4 m0 0 h12 m23 -196 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-executable-statement" title="SQL_executable_statement" shape="rect">SQL_executable_statement</a></div> + <div>         ::= <a href="#sql-schema-statement" title="SQL_schema_statement" shape="rect">SQL_schema_statement</a></div> + <div>           | <a href="#sql-data-statement" title="SQL_data_statement" shape="rect">SQL_data_statement</a></div> + <div>           | <a href="#sql-control-statement" title="SQL_control_statement" shape="rect">SQL_control_statement</a></div> + <div>           | <a href="#sql-transaction-statement" title="SQL_transaction_statement" shape="rect">SQL_transaction_statement</a></div> + <div>           | <a href="#sql-connection-statement" title="SQL_connection_statement" shape="rect">SQL_connection_statement</a></div> + <div>           | <a href="#sql-session-statement" title="SQL_session_statement" shape="rect">SQL_session_statement</a></div> + <div>           | <a href="#sql-diagnostics-statement" title="SQL_diagnostics_statement" shape="rect">SQL_diagnostics_statement</a></div> + <div>           | <a href="#sql-dynamic-statement" title="SQL_dynamic_statement" shape="rect">SQL_dynamic_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-procedure-statement" title="sql-procedure-statement">sql-procedure-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_schema_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="275" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-schema-definition-statement" xlink:title="SQL_schema_definition_statement" shape="rect"> + <rect x="43" y="1" width="170" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SQL_schema_definition_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-schema-manipulation-statement" xlink:title="SQL_schema_manipulation_statement" shape="rect"> + <rect x="43" y="29" width="188" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">SQL_schema_manipulation_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m170 0 h4 m0 0 h18 m-216 0 h20 m196 0 h20 m-236 0 q10 0 10 10 m216 0 q0 -10 10 -10 m-226 10 v8 m216 0 v-8 m-216 8 q0 10 10 10 m196 0 q10 0 10 -10 m-206 10 h4 m188 0 h4 m23 -28 h-3"/> + <polygon points="265 10 273 6 273 14"/> + <polygon points="265 10 257 6 257 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-schema-statement" title="SQL_schema_statement" shape="rect">SQL_schema_statement</a></div> + <div>         ::= <a href="#sql-schema-definition-statement" title="SQL_schema_definition_statement" shape="rect">SQL_schema_definition_statement</a></div> + <div>           | <a href="#sql-schema-manipulation-statement" title="SQL_schema_manipulation_statement" shape="rect">SQL_schema_manipulation_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-executable-statement" title="sql-executable-statement">sql-executable-statement</a></li><li><a href="#directly-executable-statement" title="directly-executable-statement">directly-executable-statement</a></li><li><a href="#preparable-sql-schema-statement" title="preparable-sql-schema-statement">preparable-sql-schema-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_schema_definition_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="245" height="469"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-definition" xlink:title="schema_definition" shape="rect"> + <rect x="43" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">schema_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-definition" xlink:title="table_definition" shape="rect"> + <rect x="43" y="29" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">table_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#view-definition" xlink:title="view_definition" shape="rect"> + <rect x="43" y="57" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">view_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-invoked-routine" xlink:title="SQL_invoked_routine" shape="rect"> + <rect x="43" y="85" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">SQL_invoked_routine</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grant-statement" xlink:title="grant_statement" shape="rect"> + <rect x="43" y="113" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">grant_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#role-definition" xlink:title="role_definition" shape="rect"> + <rect x="43" y="141" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">role_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#domain-definition" xlink:title="domain_definition" shape="rect"> + <rect x="43" y="169" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">domain_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-definition" xlink:title="character_set_definition" shape="rect"> + <rect x="43" y="197" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">character_set_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collation-definition" xlink:title="collation_definition" shape="rect"> + <rect x="43" y="225" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">collation_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transliteration-definition" xlink:title="transliteration_definition" shape="rect"> + <rect x="43" y="253" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">transliteration_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#assertion-definition" xlink:title="assertion_definition" shape="rect"> + <rect x="43" y="281" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="293">assertion_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trigger-definition" xlink:title="trigger_definition" shape="rect"> + <rect x="43" y="309" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="321">trigger_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-type-definition" xlink:title="user_defined_type_definition" shape="rect"> + <rect x="43" y="337" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="349">user_defined_type_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-cast-definition" xlink:title="user_defined_cast_definition" shape="rect"> + <rect x="43" y="365" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="377">user_defined_cast_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#user-defined-ordering-definition" xlink:title="user_defined_ordering_definition" shape="rect"> + <rect x="43" y="393" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="405">user_defined_ordering_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-definition" xlink:title="transform_definition" shape="rect"> + <rect x="43" y="421" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="433">transform_definition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequence-generator-definition" xlink:title="sequence_generator_definition" shape="rect"> + <rect x="43" y="449" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="461">sequence_generator_definition</text></a><path class="line" d="m17 10 h2 m20 0 h4 m92 0 h4 m0 0 h66 m-186 0 h20 m166 0 h20 m-206 0 q10 0 10 10 m186 0 q0 -10 10 -10 m-196 10 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m76 0 h4 m0 0 h82 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m74 0 h4 m0 0 h84 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m106 0 h4 m0 0 h52 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m88 0 h4 m0 0 h70 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m72 0 h4 m0 0 h86 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m90 0 h4 m0 0 h68 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m116 0 h4 m0 0 h42 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m90 0 h4 m0 0 h68 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m114 0 h4 m0 0 h44 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m96 0 h4 m0 0 h62 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m84 0 h4 m0 0 h74 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m140 0 h4 m0 0 h18 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m138 0 h4 m0 0 h20 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m158 0 h4 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m98 0 h4 m0 0 h60 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m152 0 h4 m0 0 h6 m23 -448 h-3"/> + <polygon points="235 10 243 6 243 14"/> + <polygon points="235 10 227 6 227 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-schema-definition-statement" title="SQL_schema_definition_statement" shape="rect">SQL_schema_definition_statement</a></div> + <div>         ::= <a href="#schema-definition" title="schema_definition" shape="rect">schema_definition</a></div> + <div>           | <a href="#table-definition" title="table_definition" shape="rect">table_definition</a></div> + <div>           | <a href="#view-definition" title="view_definition" shape="rect">view_definition</a></div> + <div>           | <a href="#sql-invoked-routine" title="SQL_invoked_routine" shape="rect">SQL_invoked_routine</a></div> + <div>           | <a href="#grant-statement" title="grant_statement" shape="rect">grant_statement</a></div> + <div>           | <a href="#role-definition" title="role_definition" shape="rect">role_definition</a></div> + <div>           | <a href="#domain-definition" title="domain_definition" shape="rect">domain_definition</a></div> + <div>           | <a href="#character-set-definition" title="character_set_definition" shape="rect">character_set_definition</a></div> + <div>           | <a href="#collation-definition" title="collation_definition" shape="rect">collation_definition</a></div> + <div>           | <a href="#transliteration-definition" title="transliteration_definition" shape="rect">transliteration_definition</a></div> + <div>           | <a href="#assertion-definition" title="assertion_definition" shape="rect">assertion_definition</a></div> + <div>           | <a href="#trigger-definition" title="trigger_definition" shape="rect">trigger_definition</a></div> + <div>           | <a href="#user-defined-type-definition" title="user_defined_type_definition" shape="rect">user_defined_type_definition</a></div> + <div>           | <a href="#user-defined-cast-definition" title="user_defined_cast_definition" shape="rect">user_defined_cast_definition</a></div> + <div>           | <a href="#user-defined-ordering-definition" title="user_defined_ordering_definition" shape="rect">user_defined_ordering_definition</a></div> + <div>           | <a href="#transform-definition" title="transform_definition" shape="rect">transform_definition</a></div> + <div>           | <a href="#sequence-generator-definition" title="sequence_generator_definition" shape="rect">sequence_generator_definition</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-statement" title="sql-schema-statement">sql-schema-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_schema_manipulation_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="281" height="637"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-schema-statement" xlink:title="drop_schema_statement" shape="rect"> + <rect x="43" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">drop_schema_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-table-statement" xlink:title="alter_table_statement" shape="rect"> + <rect x="43" y="29" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">alter_table_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-table-statement" xlink:title="drop_table_statement" shape="rect"> + <rect x="43" y="57" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">drop_table_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-view-statement" xlink:title="drop_view_statement" shape="rect"> + <rect x="43" y="85" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">drop_view_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-routine-statement" xlink:title="alter_routine_statement" shape="rect"> + <rect x="43" y="113" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">alter_routine_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-routine-statement" xlink:title="drop_routine_statement" shape="rect"> + <rect x="43" y="141" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">drop_routine_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-user-defined-cast-statement" xlink:title="drop_user_defined_cast_statement" shape="rect"> + <rect x="43" y="169" width="174" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">drop_user_defined_cast_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#revoke-statement" xlink:title="revoke_statement" shape="rect"> + <rect x="43" y="197" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">revoke_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-role-statement" xlink:title="drop_role_statement" shape="rect"> + <rect x="43" y="225" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">drop_role_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-domain-statement" xlink:title="alter_domain_statement" shape="rect"> + <rect x="43" y="253" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">alter_domain_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-domain-statement" xlink:title="drop_domain_statement" shape="rect"> + <rect x="43" y="281" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="293">drop_domain_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-character-set-statement" xlink:title="drop_character_set_statement" shape="rect"> + <rect x="43" y="309" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="321">drop_character_set_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-collation-statement" xlink:title="drop_collation_statement" shape="rect"> + <rect x="43" y="337" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="349">drop_collation_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-transliteration-statement" xlink:title="drop_transliteration_statement" shape="rect"> + <rect x="43" y="365" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="377">drop_transliteration_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-assertion-statement" xlink:title="drop_assertion_statement" shape="rect"> + <rect x="43" y="393" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="405">drop_assertion_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-trigger-statement" xlink:title="drop_trigger_statement" shape="rect"> + <rect x="43" y="421" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="433">drop_trigger_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-type-statement" xlink:title="alter_type_statement" shape="rect"> + <rect x="43" y="449" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="461">alter_type_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-data-type-statement" xlink:title="drop_data_type_statement" shape="rect"> + <rect x="43" y="477" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="489">drop_data_type_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-user-defined-ordering-statement" xlink:title="drop_user_defined_ordering_statement" shape="rect"> + <rect x="43" y="505" width="194" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="517">drop_user_defined_ordering_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-transform-statement" xlink:title="alter_transform_statement" shape="rect"> + <rect x="43" y="533" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="545">alter_transform_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-transform-statement" xlink:title="drop_transform_statement" shape="rect"> + <rect x="43" y="561" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="573">drop_transform_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alter-sequence-generator-statement" xlink:title="alter_sequence_generator_statement" shape="rect"> + <rect x="43" y="589" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="601">alter_sequence_generator_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop-sequence-generator-statement" xlink:title="drop_sequence_generator_statement" shape="rect"> + <rect x="43" y="617" width="186" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="629">drop_sequence_generator_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m128 0 h4 m0 0 h66 m-222 0 h20 m202 0 h20 m-242 0 q10 0 10 10 m222 0 q0 -10 10 -10 m-232 10 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m110 0 h4 m0 0 h84 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m112 0 h4 m0 0 h82 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m110 0 h4 m0 0 h84 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m120 0 h4 m0 0 h74 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m122 0 h4 m0 0 h72 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m174 0 h4 m0 0 h20 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m94 0 h4 m0 0 h100 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m106 0 h4 m0 0 h88 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m124 0 h4 m0 0 h70 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m126 0 h4 m0 0 h68 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m152 0 h4 m0 0 h42 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m126 0 h4 m0 0 h68 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m150 0 h4 m0 0 h44 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m132 0 h4 m0 0 h62 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m118 0 h4 m0 0 h76 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m108 0 h4 m0 0 h86 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m138 0 h4 m0 0 h56 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m194 0 h4 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m132 0 h4 m0 0 h62 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m134 0 h4 m0 0 h60 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m184 0 h4 m0 0 h10 m-212 -10 v20 m222 0 v-20 m-222 20 v8 m222 0 v-8 m-222 8 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m186 0 h4 m0 0 h8 m23 -616 h-3"/> + <polygon points="271 10 279 6 279 14"/> + <polygon points="271 10 263 6 263 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-schema-manipulation-statement" title="SQL_schema_manipulation_statement" shape="rect">SQL_schema_manipulation_statement</a></div> + <div>         ::= <a href="#drop-schema-statement" title="drop_schema_statement" shape="rect">drop_schema_statement</a></div> + <div>           | <a href="#alter-table-statement" title="alter_table_statement" shape="rect">alter_table_statement</a></div> + <div>           | <a href="#drop-table-statement" title="drop_table_statement" shape="rect">drop_table_statement</a></div> + <div>           | <a href="#drop-view-statement" title="drop_view_statement" shape="rect">drop_view_statement</a></div> + <div>           | <a href="#alter-routine-statement" title="alter_routine_statement" shape="rect">alter_routine_statement</a></div> + <div>           | <a href="#drop-routine-statement" title="drop_routine_statement" shape="rect">drop_routine_statement</a></div> + <div>           | <a href="#drop-user-defined-cast-statement" title="drop_user_defined_cast_statement" shape="rect">drop_user_defined_cast_statement</a></div> + <div>           | <a href="#revoke-statement" title="revoke_statement" shape="rect">revoke_statement</a></div> + <div>           | <a href="#drop-role-statement" title="drop_role_statement" shape="rect">drop_role_statement</a></div> + <div>           | <a href="#alter-domain-statement" title="alter_domain_statement" shape="rect">alter_domain_statement</a></div> + <div>           | <a href="#drop-domain-statement" title="drop_domain_statement" shape="rect">drop_domain_statement</a></div> + <div>           | <a href="#drop-character-set-statement" title="drop_character_set_statement" shape="rect">drop_character_set_statement</a></div> + <div>           | <a href="#drop-collation-statement" title="drop_collation_statement" shape="rect">drop_collation_statement</a></div> + <div>           | <a href="#drop-transliteration-statement" title="drop_transliteration_statement" shape="rect">drop_transliteration_statement</a></div> + <div>           | <a href="#drop-assertion-statement" title="drop_assertion_statement" shape="rect">drop_assertion_statement</a></div> + <div>           | <a href="#drop-trigger-statement" title="drop_trigger_statement" shape="rect">drop_trigger_statement</a></div> + <div>           | <a href="#alter-type-statement" title="alter_type_statement" shape="rect">alter_type_statement</a></div> + <div>           | <a href="#drop-data-type-statement" title="drop_data_type_statement" shape="rect">drop_data_type_statement</a></div> + <div>           | <a href="#drop-user-defined-ordering-statement" title="drop_user_defined_ordering_statement" shape="rect">drop_user_defined_ordering_statement</a></div> + <div>           | <a href="#alter-transform-statement" title="alter_transform_statement" shape="rect">alter_transform_statement</a></div> + <div>           | <a href="#drop-transform-statement" title="drop_transform_statement" shape="rect">drop_transform_statement</a></div> + <div>           | <a href="#alter-sequence-generator-statement" title="alter_sequence_generator_statement" shape="rect">alter_sequence_generator_statement</a></div> + <div>           | <a href="#drop-sequence-generator-statement" title="drop_sequence_generator_statement" shape="rect">drop_sequence_generator_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-schema-statement" title="sql-schema-statement">sql-schema-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_data_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#open-statement" xlink:title="open_statement" shape="rect"> + <rect x="43" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">open_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fetch-statement" xlink:title="fetch_statement" shape="rect"> + <rect x="43" y="29" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">fetch_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#close-statement" xlink:title="close_statement" shape="rect"> + <rect x="43" y="57" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">close_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select-statement-single-row" xlink:title="select_statement_single_row" shape="rect"> + <rect x="43" y="85" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">select_statement_single_row</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-data-change-statement" xlink:title="SQL_data_change_statement" shape="rect"> + <rect x="43" y="113" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">SQL_data_change_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m88 0 h4 m0 0 h60 m-176 0 h20 m156 0 h20 m-196 0 q10 0 10 10 m176 0 q0 -10 10 -10 m-186 10 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m84 0 h4 m0 0 h64 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m86 0 h4 m0 0 h62 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m144 0 h4 m0 0 h4 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m148 0 h4 m23 -112 h-3"/> + <polygon points="225 10 233 6 233 14"/> + <polygon points="225 10 217 6 217 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-data-statement" title="SQL_data_statement" shape="rect">SQL_data_statement</a></div> + <div>         ::= <a href="#open-statement" title="open_statement" shape="rect">open_statement</a></div> + <div>           | <a href="#fetch-statement" title="fetch_statement" shape="rect">fetch_statement</a></div> + <div>           | <a href="#close-statement" title="close_statement" shape="rect">close_statement</a></div> + <div>           | <a href="#select-statement-single-row" title="select_statement_single_row" shape="rect">select_statement_single_row</a></div> + <div>           | <a href="#sql-data-change-statement" title="SQL_data_change_statement" shape="rect">SQL_data_change_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-executable-statement" title="sql-executable-statement">sql-executable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_data_change_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delete-statement-positioned" xlink:title="delete_statement_positioned" shape="rect"> + <rect x="43" y="1" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">delete_statement_positioned</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delete-statement-searched" xlink:title="delete_statement_searched" shape="rect"> + <rect x="43" y="29" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">delete_statement_searched</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert-statement" xlink:title="insert_statement" shape="rect"> + <rect x="43" y="57" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">insert_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-statement-positioned" xlink:title="update_statement_positioned" shape="rect"> + <rect x="43" y="85" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">update_statement_positioned</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-statement-searched" xlink:title="update_statement_searched" shape="rect"> + <rect x="43" y="113" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">update_statement_searched</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#truncate-table-statement" xlink:title="truncate_table_statement" shape="rect"> + <rect x="43" y="141" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">truncate_table_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-statement" xlink:title="merge_statement" shape="rect"> + <rect x="43" y="169" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">merge_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m144 0 h4 m0 0 h4 m-176 0 h20 m156 0 h20 m-196 0 q10 0 10 10 m176 0 q0 -10 10 -10 m-186 10 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m140 0 h4 m0 0 h8 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m88 0 h4 m0 0 h60 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m148 0 h4 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m144 0 h4 m0 0 h4 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m128 0 h4 m0 0 h20 m-166 -10 v20 m176 0 v-20 m-176 20 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m94 0 h4 m0 0 h54 m23 -168 h-3"/> + <polygon points="225 10 233 6 233 14"/> + <polygon points="225 10 217 6 217 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-data-change-statement" title="SQL_data_change_statement" shape="rect">SQL_data_change_statement</a></div> + <div>         ::= <a href="#delete-statement-positioned" title="delete_statement_positioned" shape="rect">delete_statement_positioned</a></div> + <div>           | <a href="#delete-statement-searched" title="delete_statement_searched" shape="rect">delete_statement_searched</a></div> + <div>           | <a href="#insert-statement" title="insert_statement" shape="rect">insert_statement</a></div> + <div>           | <a href="#update-statement-positioned" title="update_statement_positioned" shape="rect">update_statement_positioned</a></div> + <div>           | <a href="#update-statement-searched" title="update_statement_searched" shape="rect">update_statement_searched</a></div> + <div>           | <a href="#truncate-table-statement" title="truncate_table_statement" shape="rect">truncate_table_statement</a></div> + <div>           | <a href="#merge-statement" title="merge_statement" shape="rect">merge_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-statement" title="sql-data-statement">sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_control_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#call-statement" xlink:title="call_statement" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">call_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#return-statement" xlink:title="return_statement" shape="rect"> + <rect x="43" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">return_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h14 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m90 0 h4 m23 -28 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-control-statement" title="SQL_control_statement" shape="rect">SQL_control_statement</a></div> + <div>         ::= <a href="#call-statement" title="call_statement" shape="rect">call_statement</a></div> + <div>           | <a href="#return-statement" title="return_statement" shape="rect">return_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-executable-statement" title="sql-executable-statement">sql-executable-statement</a></li><li><a href="#preparable-sql-control-statement" title="preparable-sql-control-statement">preparable-sql-control-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_transaction_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#start-transaction-statement" xlink:title="start_transaction_statement" shape="rect"> + <rect x="43" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">start_transaction_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-transaction-statement" xlink:title="set_transaction_statement" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">set_transaction_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-constraints-mode-statement" xlink:title="set_constraints_mode_statement" shape="rect"> + <rect x="43" y="57" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">set_constraints_mode_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#savepoint-statement" xlink:title="savepoint_statement" shape="rect"> + <rect x="43" y="85" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">savepoint_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#release-savepoint-statement" xlink:title="release_savepoint_statement" shape="rect"> + <rect x="43" y="113" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">release_savepoint_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#commit-statement" xlink:title="commit_statement" shape="rect"> + <rect x="43" y="141" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">commit_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rollback-statement" xlink:title="rollback_statement" shape="rect"> + <rect x="43" y="169" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">rollback_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m138 0 h4 m0 0 h28 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m132 0 h4 m0 0 h34 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m166 0 h4 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m108 0 h4 m0 0 h58 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m146 0 h4 m0 0 h20 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m96 0 h4 m0 0 h70 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m96 0 h4 m0 0 h70 m23 -168 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-transaction-statement" title="SQL_transaction_statement" shape="rect">SQL_transaction_statement</a></div> + <div>         ::= <a href="#start-transaction-statement" title="start_transaction_statement" shape="rect">start_transaction_statement</a></div> + <div>           | <a href="#set-transaction-statement" title="set_transaction_statement" shape="rect">set_transaction_statement</a></div> + <div>           | <a href="#set-constraints-mode-statement" title="set_constraints_mode_statement" shape="rect">set_constraints_mode_statement</a></div> + <div>           | <a href="#savepoint-statement" title="savepoint_statement" shape="rect">savepoint_statement</a></div> + <div>           | <a href="#release-savepoint-statement" title="release_savepoint_statement" shape="rect">release_savepoint_statement</a></div> + <div>           | <a href="#commit-statement" title="commit_statement" shape="rect">commit_statement</a></div> + <div>           | <a href="#rollback-statement" title="rollback_statement" shape="rect">rollback_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-executable-statement" title="sql-executable-statement">sql-executable-statement</a></li><li><a href="#directly-executable-statement" title="directly-executable-statement">directly-executable-statement</a></li><li><a href="#preparable-sql-transaction-statement" title="preparable-sql-transaction-statement">preparable-sql-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_connection_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#connect-statement" xlink:title="connect_statement" shape="rect"> + <rect x="43" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">connect_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-connection-statement" xlink:title="set_connection_statement" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">set_connection_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#disconnect-statement" xlink:title="disconnect_statement" shape="rect"> + <rect x="43" y="57" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">disconnect_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m98 0 h4 m0 0 h34 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v8 m160 0 v-8 m-160 8 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m132 0 h4 m-150 -10 v20 m160 0 v-20 m-160 20 v8 m160 0 v-8 m-160 8 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m110 0 h4 m0 0 h22 m23 -56 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-connection-statement" title="SQL_connection_statement" shape="rect">SQL_connection_statement</a></div> + <div>         ::= <a href="#connect-statement" title="connect_statement" shape="rect">connect_statement</a></div> + <div>           | <a href="#set-connection-statement" title="set_connection_statement" shape="rect">set_connection_statement</a></div> + <div>           | <a href="#disconnect-statement" title="disconnect_statement" shape="rect">disconnect_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-executable-statement" title="sql-executable-statement">sql-executable-statement</a></li><li><a href="#directly-executable-statement" title="directly-executable-statement">directly-executable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_session_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="273" height="273"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-session-user-identifier-statement" xlink:title="set_session_user_identifier_statement" shape="rect"> + <rect x="43" y="1" width="186" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">set_session_user_identifier_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-role-statement" xlink:title="set_role_statement" shape="rect"> + <rect x="43" y="29" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">set_role_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-local-time-zone-statement" xlink:title="set_local_time_zone_statement" shape="rect"> + <rect x="43" y="57" width="156" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">set_local_time_zone_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-session-characteristics-statement" xlink:title="set_session_characteristics_statement" shape="rect"> + <rect x="43" y="85" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">set_session_characteristics_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-catalog-statement" xlink:title="set_catalog_statement" shape="rect"> + <rect x="43" y="113" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">set_catalog_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-schema-statement" xlink:title="set_schema_statement" shape="rect"> + <rect x="43" y="141" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">set_schema_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-names-statement" xlink:title="set_names_statement" shape="rect"> + <rect x="43" y="169" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">set_names_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-path-statement" xlink:title="set_path_statement" shape="rect"> + <rect x="43" y="197" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">set_path_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-transform-group-statement" xlink:title="set_transform_group_statement" shape="rect"> + <rect x="43" y="225" width="160" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">set_transform_group_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-session-collation-statement" xlink:title="set_session_collation_statement" shape="rect"> + <rect x="43" y="253" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">set_session_collation_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m186 0 h4 m-214 0 h20 m194 0 h20 m-234 0 q10 0 10 10 m214 0 q0 -10 10 -10 m-224 10 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m100 0 h4 m0 0 h86 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m156 0 h4 m0 0 h30 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m184 0 h4 m0 0 h2 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m116 0 h4 m0 0 h70 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m120 0 h4 m0 0 h66 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m116 0 h4 m0 0 h70 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m104 0 h4 m0 0 h82 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m160 0 h4 m0 0 h26 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m158 0 h4 m0 0 h28 m23 -252 h-3"/> + <polygon points="263 10 271 6 271 14"/> + <polygon points="263 10 255 6 255 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-session-statement" title="SQL_session_statement" shape="rect">SQL_session_statement</a></div> + <div>         ::= <a href="#set-session-user-identifier-statement" title="set_session_user_identifier_statement" shape="rect">set_session_user_identifier_statement</a></div> + <div>           | <a href="#set-role-statement" title="set_role_statement" shape="rect">set_role_statement</a></div> + <div>           | <a href="#set-local-time-zone-statement" title="set_local_time_zone_statement" shape="rect">set_local_time_zone_statement</a></div> + <div>           | <a href="#set-session-characteristics-statement" title="set_session_characteristics_statement" shape="rect">set_session_characteristics_statement</a></div> + <div>           | <a href="#set-catalog-statement" title="set_catalog_statement" shape="rect">set_catalog_statement</a></div> + <div>           | <a href="#set-schema-statement" title="set_schema_statement" shape="rect">set_schema_statement</a></div> + <div>           | <a href="#set-names-statement" title="set_names_statement" shape="rect">set_names_statement</a></div> + <div>           | <a href="#set-path-statement" title="set_path_statement" shape="rect">set_path_statement</a></div> + <div>           | <a href="#set-transform-group-statement" title="set_transform_group_statement" shape="rect">set_transform_group_statement</a></div> + <div>           | <a href="#set-session-collation-statement" title="set_session_collation_statement" shape="rect">set_session_collation_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-executable-statement" title="sql-executable-statement">sql-executable-statement</a></li><li><a href="#directly-executable-statement" title="directly-executable-statement">directly-executable-statement</a></li><li><a href="#preparable-sql-session-statement" title="preparable-sql-session-statement">preparable-sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_diagnostics_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#get-diagnostics-statement" xlink:title="get_diagnostics_statement" shape="rect"> + <rect x="23" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">get_diagnostics_statement</text></a><path class="line" d="m17 10 h2 m0 0 h4 m134 0 h4 m3 0 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-diagnostics-statement" title="SQL_diagnostics_statement" shape="rect">SQL_diagnostics_statement</a></div> + <div>         ::= <a href="#get-diagnostics-statement" title="get_diagnostics_statement" shape="rect">get_diagnostics_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-executable-statement" title="sql-executable-statement">sql-executable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_dynamic_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="245" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-descriptor-statement" xlink:title="SQL_descriptor_statement" shape="rect"> + <rect x="43" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SQL_descriptor_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#prepare-statement" xlink:title="prepare_statement" shape="rect"> + <rect x="43" y="29" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">prepare_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#deallocate-prepared-statement" xlink:title="deallocate_prepared_statement" shape="rect"> + <rect x="43" y="57" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">deallocate_prepared_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#describe-statement" xlink:title="describe_statement" shape="rect"> + <rect x="43" y="85" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">describe_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#execute-statement" xlink:title="execute_statement" shape="rect"> + <rect x="43" y="113" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">execute_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#execute-immediate-statement" xlink:title="execute_immediate_statement" shape="rect"> + <rect x="43" y="141" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">execute_immediate_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-dynamic-data-statement" xlink:title="SQL_dynamic_data_statement" shape="rect"> + <rect x="43" y="169" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">SQL_dynamic_data_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m132 0 h4 m0 0 h26 m-186 0 h20 m166 0 h20 m-206 0 q10 0 10 10 m186 0 q0 -10 10 -10 m-196 10 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m100 0 h4 m0 0 h58 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m158 0 h4 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m100 0 h4 m0 0 h58 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m100 0 h4 m0 0 h58 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m154 0 h4 m0 0 h4 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m152 0 h4 m0 0 h6 m23 -168 h-3"/> + <polygon points="235 10 243 6 243 14"/> + <polygon points="235 10 227 6 227 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-dynamic-statement" title="SQL_dynamic_statement" shape="rect">SQL_dynamic_statement</a></div> + <div>         ::= <a href="#sql-descriptor-statement" title="SQL_descriptor_statement" shape="rect">SQL_descriptor_statement</a></div> + <div>           | <a href="#prepare-statement" title="prepare_statement" shape="rect">prepare_statement</a></div> + <div>           | <a href="#deallocate-prepared-statement" title="deallocate_prepared_statement" shape="rect">deallocate_prepared_statement</a></div> + <div>           | <a href="#describe-statement" title="describe_statement" shape="rect">describe_statement</a></div> + <div>           | <a href="#execute-statement" title="execute_statement" shape="rect">execute_statement</a></div> + <div>           | <a href="#execute-immediate-statement" title="execute_immediate_statement" shape="rect">execute_immediate_statement</a></div> + <div>           | <a href="#sql-dynamic-data-statement" title="SQL_dynamic_data_statement" shape="rect">SQL_dynamic_data_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-executable-statement" title="sql-executable-statement">sql-executable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_dynamic_data_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="279" height="161"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#allocate-cursor-statement" xlink:title="allocate_cursor_statement" shape="rect"> + <rect x="43" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">allocate_cursor_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-open-statement" xlink:title="dynamic_open_statement" shape="rect"> + <rect x="43" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">dynamic_open_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-fetch-statement" xlink:title="dynamic_fetch_statement" shape="rect"> + <rect x="43" y="57" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">dynamic_fetch_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-close-statement" xlink:title="dynamic_close_statement" shape="rect"> + <rect x="43" y="85" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">dynamic_close_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-delete-statement-positioned" xlink:title="dynamic_delete_statement_positioned" shape="rect"> + <rect x="43" y="113" width="188" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">dynamic_delete_statement_positioned</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-update-statement-positioned" xlink:title="dynamic_update_statement_positioned" shape="rect"> + <rect x="43" y="141" width="192" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">dynamic_update_statement_positioned</text></a><path class="line" d="m17 10 h2 m20 0 h4 m130 0 h4 m0 0 h62 m-220 0 h20 m200 0 h20 m-240 0 q10 0 10 10 m220 0 q0 -10 10 -10 m-230 10 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m132 0 h4 m0 0 h60 m-210 -10 v20 m220 0 v-20 m-220 20 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m128 0 h4 m0 0 h64 m-210 -10 v20 m220 0 v-20 m-220 20 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m130 0 h4 m0 0 h62 m-210 -10 v20 m220 0 v-20 m-220 20 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m188 0 h4 m0 0 h4 m-210 -10 v20 m220 0 v-20 m-220 20 v8 m220 0 v-8 m-220 8 q0 10 10 10 m200 0 q10 0 10 -10 m-210 10 h4 m192 0 h4 m23 -140 h-3"/> + <polygon points="269 10 277 6 277 14"/> + <polygon points="269 10 261 6 261 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-dynamic-data-statement" title="SQL_dynamic_data_statement" shape="rect">SQL_dynamic_data_statement</a></div> + <div>         ::= <a href="#allocate-cursor-statement" title="allocate_cursor_statement" shape="rect">allocate_cursor_statement</a></div> + <div>           | <a href="#dynamic-open-statement" title="dynamic_open_statement" shape="rect">dynamic_open_statement</a></div> + <div>           | <a href="#dynamic-fetch-statement" title="dynamic_fetch_statement" shape="rect">dynamic_fetch_statement</a></div> + <div>           | <a href="#dynamic-close-statement" title="dynamic_close_statement" shape="rect">dynamic_close_statement</a></div> + <div>           | <a href="#dynamic-delete-statement-positioned" title="dynamic_delete_statement_positioned" shape="rect">dynamic_delete_statement_positioned</a></div> + <div>           | <a href="#dynamic-update-statement-positioned" title="dynamic_update_statement_positioned" shape="rect">dynamic_update_statement_positioned</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-statement" title="sql-dynamic-statement">sql-dynamic-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_descriptor_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="245" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#allocate-descriptor-statement" xlink:title="allocate_descriptor_statement" shape="rect"> + <rect x="43" y="1" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">allocate_descriptor_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#deallocate-descriptor-statement" xlink:title="deallocate_descriptor_statement" shape="rect"> + <rect x="43" y="29" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">deallocate_descriptor_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-descriptor-statement" xlink:title="set_descriptor_statement" shape="rect"> + <rect x="43" y="57" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">set_descriptor_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#get-descriptor-statement" xlink:title="get_descriptor_statement" shape="rect"> + <rect x="43" y="85" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">get_descriptor_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m146 0 h4 m0 0 h12 m-186 0 h20 m166 0 h20 m-206 0 q10 0 10 10 m186 0 q0 -10 10 -10 m-196 10 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m158 0 h4 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m126 0 h4 m0 0 h32 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m128 0 h4 m0 0 h30 m23 -84 h-3"/> + <polygon points="235 10 243 6 243 14"/> + <polygon points="235 10 227 6 227 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-descriptor-statement" title="SQL_descriptor_statement" shape="rect">SQL_descriptor_statement</a></div> + <div>         ::= <a href="#allocate-descriptor-statement" title="allocate_descriptor_statement" shape="rect">allocate_descriptor_statement</a></div> + <div>           | <a href="#deallocate-descriptor-statement" title="deallocate_descriptor_statement" shape="rect">deallocate_descriptor_statement</a></div> + <div>           | <a href="#set-descriptor-statement" title="set_descriptor_statement" shape="rect">set_descriptor_statement</a></div> + <div>           | <a href="#get-descriptor-statement" title="get_descriptor_statement" shape="rect">get_descriptor_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-statement" title="sql-dynamic-statement">sql-dynamic-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + declare_cursor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="407" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DECLARE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="79" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="83" y="13">cursor_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-properties" xlink:title="cursor_properties" shape="rect"> + <rect x="157" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="13">cursor_properties</text></a><rect x="253" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-specification" xlink:title="cursor_specification" shape="rect"> + <rect x="287" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="291" y="13">cursor_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m70 0 h4 m0 0 h4 m88 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="397 10 405 6 405 14"/> + <polygon points="397 10 389 6 389 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#declare-cursor" title="declare_cursor" shape="rect">declare_cursor</a></div> + <div>         ::= 'DECLARE' <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a> <a href="#cursor-properties" title="cursor_properties" shape="rect">cursor_properties</a> 'FOR' <a href="#cursor-specification" title="cursor_specification" shape="rect">cursor_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#module-contents" title="module-contents">module-contents</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_properties +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="641" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-sensitivity" xlink:title="cursor_sensitivity" shape="rect"> + <rect x="43" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">cursor_sensitivity</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-scrollability" xlink:title="cursor_scrollability" shape="rect"> + <rect x="177" y="22" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="34">cursor_scrollability</text></a><rect x="293" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="297" y="13">CURSOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-holdability" xlink:title="cursor_holdability" shape="rect"> + <rect x="369" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="373" y="34">cursor_holdability</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-returnability" xlink:title="cursor_returnability" shape="rect"> + <rect x="503" y="22" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="507" y="34">cursor_returnability</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m40 -21 h10 m0 0 h86 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v1 m116 0 v-1 m-116 1 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m88 0 h4 m20 -21 h4 m48 0 h4 m20 0 h10 m0 0 h84 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v1 m114 0 v-1 m-114 1 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m40 -21 h10 m0 0 h92 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v1 m122 0 v-1 m-122 1 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m94 0 h4 m23 -21 h-3"/> + <polygon points="631 10 639 6 639 14"/> + <polygon points="631 10 623 6 623 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-properties" title="cursor_properties" shape="rect">cursor_properties</a></div> + <div>         ::= <a href="#cursor-sensitivity" title="cursor_sensitivity" shape="rect">cursor_sensitivity</a>? <a href="#cursor-scrollability" title="cursor_scrollability" shape="rect">cursor_scrollability</a>? 'CURSOR' <a href="#cursor-holdability" title="cursor_holdability" shape="rect">cursor_holdability</a>? <a href="#cursor-returnability" title="cursor_returnability" shape="rect">cursor_returnability</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#declare-cursor" title="declare-cursor">declare-cursor</a></li><li><a href="#dynamic-declare-cursor" title="dynamic-declare-cursor">dynamic-declare-cursor</a></li><li><a href="#statement-cursor" title="statement-cursor">statement-cursor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_sensitivity +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="153" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">SENSITIVE</text> + <rect x="43" y="29" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">INSENSITIVE</text> + <rect x="43" y="57" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">ASENSITIVE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m56 0 h4 m0 0 h10 m-94 0 h20 m74 0 h20 m-114 0 q10 0 10 10 m94 0 q0 -10 10 -10 m-104 10 v8 m94 0 v-8 m-94 8 q0 10 10 10 m74 0 q10 0 10 -10 m-84 10 h4 m66 0 h4 m-84 -10 v20 m94 0 v-20 m-94 20 v8 m94 0 v-8 m-94 8 q0 10 10 10 m74 0 q10 0 10 -10 m-84 10 h4 m62 0 h4 m0 0 h4 m23 -56 h-3"/> + <polygon points="143 10 151 6 151 14"/> + <polygon points="143 10 135 6 135 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-sensitivity" title="cursor_sensitivity" shape="rect">cursor_sensitivity</a></div> + <div>         ::= 'SENSITIVE'</div> + <div>           | 'INSENSITIVE'</div> + <div>           | 'ASENSITIVE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cursor-attribute" title="cursor-attribute">cursor-attribute</a></li><li><a href="#cursor-properties" title="cursor-properties">cursor-properties</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_scrollability +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="161" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">NO</text> + <rect x="93" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">SCROLL</text> + <path class="line" d="m17 10 h2 m20 0 h10 m0 0 h20 m-50 0 h20 m30 0 h20 m-70 0 q10 0 10 10 m50 0 q0 -10 10 -10 m-60 10 v1 m50 0 v-1 m-50 1 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m22 0 h4 m20 -21 h4 m44 0 h4 m3 0 h-3"/> + <polygon points="151 10 159 6 159 14"/> + <polygon points="151 10 143 6 143 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-scrollability" title="cursor_scrollability" shape="rect">cursor_scrollability</a></div> + <div>         ::= 'NO'? 'SCROLL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cursor-attribute" title="cursor-attribute">cursor-attribute</a></li><li><a href="#cursor-properties" title="cursor-properties">cursor-properties</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_holdability +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">WITH</text> + <rect x="43" y="29" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">WITHOUT</text> + <rect x="125" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">HOLD</text> + <path class="line" d="m17 10 h2 m20 0 h4 m34 0 h4 m0 0 h20 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v8 m82 0 v-8 m-82 8 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m54 0 h4 m20 -28 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="173 10 181 6 181 14"/> + <polygon points="173 10 165 6 165 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-holdability" title="cursor_holdability" shape="rect">cursor_holdability</a></div> + <div>         ::= ( 'WITH' | 'WITHOUT' ) 'HOLD'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cursor-attribute" title="cursor-attribute">cursor-attribute</a></li><li><a href="#cursor-properties" title="cursor-properties">cursor-properties</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_returnability +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">WITH</text> + <rect x="43" y="29" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">WITHOUT</text> + <rect x="125" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">RETURN</text> + <path class="line" d="m17 10 h2 m20 0 h4 m34 0 h4 m0 0 h20 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v8 m82 0 v-8 m-82 8 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m54 0 h4 m20 -28 h4 m44 0 h4 m3 0 h-3"/> + <polygon points="183 10 191 6 191 14"/> + <polygon points="183 10 175 6 175 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-returnability" title="cursor_returnability" shape="rect">cursor_returnability</a></div> + <div>         ::= ( 'WITH' | 'WITHOUT' ) 'RETURN'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cursor-attribute" title="cursor-attribute">cursor-attribute</a></li><li><a href="#cursor-properties" title="cursor-properties">cursor-properties</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="283" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-expression" xlink:title="query_expression" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">query_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#updatability-clause" xlink:title="updatability_clause" shape="rect"> + <rect x="143" y="22" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="34">updatability_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m20 0 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m96 0 h4 m23 -21 h-3"/> + <polygon points="273 10 281 6 281 14"/> + <polygon points="273 10 265 6 265 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-specification" title="cursor_specification" shape="rect">cursor_specification</a></div> + <div>         ::= <a href="#query-expression" title="query_expression" shape="rect">query_expression</a> <a href="#updatability-clause" title="updatability_clause" shape="rect">updatability_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#declare-cursor" title="declare-cursor">declare-cursor</a></li><li><a href="#direct-select-statement-multiple-rows" title="direct-select-statement-multiple-rows">direct-select-statement-multiple-rows</a></li><li><a href="#dynamic-select-statement" title="dynamic-select-statement">dynamic-select-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + updatability_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="333" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FOR</text> + <rect x="77" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">READ</text> + <rect x="117" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="13">ONLY</text> + <rect x="77" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="41">UPDATE</text> + <rect x="149" y="50" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="62">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="177" y="50" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="62">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m26 0 h4 m20 0 h4 m32 0 h4 m0 0 h4 m34 0 h4 m0 0 h138 m-240 0 h20 m220 0 h20 m-260 0 q10 0 10 10 m240 0 q0 -10 10 -10 m-250 10 v8 m240 0 v-8 m-240 8 q0 10 10 10 m220 0 q10 0 10 -10 m-230 10 h4 m44 0 h4 m20 0 h10 m0 0 h118 m-148 0 h20 m128 0 h20 m-168 0 q10 0 10 10 m148 0 q0 -10 10 -10 m-158 10 v1 m148 0 v-1 m-148 1 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m20 0 h4 m0 0 h4 m92 0 h4 m43 -49 h-3"/> + <polygon points="323 10 331 6 331 14"/> + <polygon points="323 10 315 6 315 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#updatability-clause" title="updatability_clause" shape="rect">updatability_clause</a></div> + <div>         ::= 'FOR' ( 'READ' 'ONLY' | 'UPDATE' ( 'OF' <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a> )? )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cursor-specification" title="cursor-specification">cursor-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + open_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="159" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OPEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="65" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="149 10 157 6 157 14"/> + <polygon points="149 10 141 6 141 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#open-statement" title="open_statement" shape="rect">open_statement</a></div> + <div>         ::= 'OPEN' <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-statement" title="sql-data-statement">sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + fetch_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="505" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FETCH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fetch-orientation" xlink:title="fetch_orientation" shape="rect"> + <rect x="107" y="43" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="55">fetch_orientation</text></a><rect x="219" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="34">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="283" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="287" y="13">cursor_name</text></a><rect x="361" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" y="13">INTO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fetch-target-list" xlink:title="fetch_target_list" shape="rect"> + <rect x="401" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="405" y="13">fetch_target_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m20 0 h10 m0 0 h166 m-196 0 h20 m176 0 h20 m-216 0 q10 0 10 10 m196 0 q0 -10 10 -10 m-206 10 v1 m196 0 v-1 m-196 1 q0 10 10 10 m176 0 q10 0 10 -10 m-166 10 h10 m0 0 h82 m-112 0 h20 m92 0 h20 m-132 0 q10 0 10 10 m112 0 q0 -10 10 -10 m-122 10 v1 m112 0 v-1 m-112 1 q0 10 10 10 m92 0 q10 0 10 -10 m-102 10 h4 m84 0 h4 m20 -21 h4 m36 0 h4 m20 -21 h4 m70 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m80 0 h4 m3 0 h-3"/> + <polygon points="495 10 503 6 503 14"/> + <polygon points="495 10 487 6 487 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#fetch-statement" title="fetch_statement" shape="rect">fetch_statement</a></div> + <div>         ::= 'FETCH' ( <a href="#fetch-orientation" title="fetch_orientation" shape="rect">fetch_orientation</a>? 'FROM' )? <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a> 'INTO' <a href="#fetch-target-list" title="fetch_target_list" shape="rect">fetch_target_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-statement" title="sql-data-statement">sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + fetch_orientation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="319" height="161"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NEXT</text> + <rect x="43" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">PRIOR</text> + <rect x="43" y="57" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">FIRST</text> + <rect x="43" y="85" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">LAST</text> + <rect x="63" y="113" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="125">ABSOLUTE</text> + <rect x="63" y="141" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="153">RELATIVE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="147" y="113" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="125">simple_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h200 m-260 0 h20 m240 0 h20 m-280 0 q10 0 10 10 m260 0 q0 -10 10 -10 m-270 10 v8 m260 0 v-8 m-260 8 q0 10 10 10 m240 0 q10 0 10 -10 m-250 10 h4 m38 0 h4 m0 0 h194 m-250 -10 v20 m260 0 v-20 m-260 20 v8 m260 0 v-8 m-260 8 q0 10 10 10 m240 0 q10 0 10 -10 m-250 10 h4 m34 0 h4 m0 0 h198 m-250 -10 v20 m260 0 v-20 m-260 20 v8 m260 0 v-8 m-260 8 q0 10 10 10 m240 0 q10 0 10 -10 m-250 10 h4 m30 0 h4 m0 0 h202 m-250 -10 v20 m260 0 v-20 m-260 20 v8 m260 0 v-8 m-260 8 q0 10 10 10 m240 0 q10 0 10 -10 m-230 10 h4 m56 0 h4 m-84 0 h20 m64 0 h20 m-104 0 q10 0 10 10 m84 0 q0 -10 10 -10 m-94 10 v8 m84 0 v-8 m-84 8 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m50 0 h4 m0 0 h6 m20 -28 h4 m128 0 h4 m23 -112 h-3"/> + <polygon points="309 10 317 6 317 14"/> + <polygon points="309 10 301 6 301 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#fetch-orientation" title="fetch_orientation" shape="rect">fetch_orientation</a></div> + <div>         ::= 'NEXT'</div> + <div>           | 'PRIOR'</div> + <div>           | 'FIRST'</div> + <div>           | 'LAST'</div> + <div>           | ( 'ABSOLUTE' | 'RELATIVE' ) <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#dynamic-fetch-statement" title="dynamic-fetch-statement">dynamic-fetch-statement</a></li><li><a href="#fetch-statement" title="fetch-statement">fetch-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + fetch_target_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-specification" xlink:title="target_specification" shape="rect"> + <rect x="43" y="29" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">target_specification</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m96 0 h4 m-124 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m104 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-104 0 h4 m8 0 h4 m0 0 h88 m23 28 h-3"/> + <polygon points="173 38 181 34 181 42"/> + <polygon points="173 38 165 34 165 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#fetch-target-list" title="fetch_target_list" shape="rect">fetch_target_list</a></div> + <div>         ::= <a href="#target-specification" title="target_specification" shape="rect">target_specification</a> ( ',' <a href="#target-specification" title="target_specification" shape="rect">target_specification</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fetch-statement" title="fetch-statement">fetch-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + close_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="163" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CLOSE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="69" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="73" y="13">cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="153 10 161 6 161 14"/> + <polygon points="153 10 145 6 145 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#close-statement" title="close_statement" shape="rect">close_statement</a></div> + <div>         ::= 'CLOSE' <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-statement" title="sql-data-statement">sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + select_statement_single_row +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="573" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SELECT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-quantifier" xlink:title="set_quantifier" shape="rect"> + <rect x="91" y="22" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="34">set_quantifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select-list" xlink:title="select_list" shape="rect"> + <rect x="189" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="193" y="13">select_list</text></a><rect x="269" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="34">INTO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select-target-list" xlink:title="select_target_list" shape="rect"> + <rect x="309" y="22" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="313" y="34">select_target_list</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-expression" xlink:title="table_expression" shape="rect"> + <rect x="441" y="22" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="445" y="34">table_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m20 0 h10 m0 0 h68 m-98 0 h20 m78 0 h20 m-118 0 q10 0 10 10 m98 0 q0 -10 10 -10 m-108 10 v1 m98 0 v-1 m-98 1 q0 10 10 10 m78 0 q10 0 10 -10 m-88 10 h4 m70 0 h4 m20 -21 h4 m52 0 h4 m20 0 h10 m0 0 h122 m-152 0 h20 m132 0 h20 m-172 0 q10 0 10 10 m152 0 q0 -10 10 -10 m-162 10 v1 m152 0 v-1 m-152 1 q0 10 10 10 m132 0 q10 0 10 -10 m-142 10 h4 m32 0 h4 m0 0 h4 m84 0 h4 m40 -21 h10 m0 0 h86 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v1 m116 0 v-1 m-116 1 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m88 0 h4 m23 -21 h-3"/> + <polygon points="563 10 571 6 571 14"/> + <polygon points="563 10 555 6 555 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#select-statement-single-row" title="select_statement_single_row" shape="rect">select_statement_single_row</a></div> + <div>         ::= 'SELECT' <a href="#set-quantifier" title="set_quantifier" shape="rect">set_quantifier</a>? <a href="#select-list" title="select_list" shape="rect">select_list</a> ( 'INTO' <a href="#select-target-list" title="select_target_list" shape="rect">select_target_list</a> )? <a href="#table-expression" title="table_expression" shape="rect">table_expression</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-statement" title="sql-data-statement">sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + select_target_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-specification" xlink:title="target_specification" shape="rect"> + <rect x="43" y="29" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">target_specification</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m96 0 h4 m-124 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m104 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-104 0 h4 m8 0 h4 m0 0 h88 m23 28 h-3"/> + <polygon points="173 38 181 34 181 42"/> + <polygon points="173 38 165 34 165 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#select-target-list" title="select_target_list" shape="rect">select_target_list</a></div> + <div>         ::= <a href="#target-specification" title="target_specification" shape="rect">target_specification</a> ( ',' <a href="#target-specification" title="target_specification" shape="rect">target_specification</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#select-statement-single-row" title="select-statement-single-row">select-statement-single-row</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + delete_statement_positioned +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="579" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DELETE</text> + <rect x="71" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="115" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="13">target_table</text></a><rect x="227" y="43" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="55">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="275" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="279" y="34">identifier</text></a><rect x="349" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="353" y="13">WHERE</text> + <rect x="399" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="403" y="13">CURRENT</text> + <rect x="457" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="461" y="13">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="485" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="489" y="13">cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m64 0 h4 m20 0 h10 m0 0 h112 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v1 m142 0 v-1 m-142 1 q0 10 10 10 m122 0 q10 0 10 -10 m-112 10 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m46 0 h4 m20 -21 h4 m42 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="569 10 577 6 577 14"/> + <polygon points="569 10 561 6 561 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#delete-statement-positioned" title="delete_statement_positioned" shape="rect">delete_statement_positioned</a></div> + <div>         ::= 'DELETE' 'FROM' <a href="#target-table" title="target_table" shape="rect">target_table</a> ( 'AS'? <a href="#identifier" title="identifier" shape="rect">identifier</a> )? 'WHERE' 'CURRENT' 'OF' <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-change-statement" title="sql-data-change-statement">sql-data-change-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + target_table +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="43" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">table_name</text></a><rect x="43" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">ONLY</text> + <rect x="85" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="105" y="29" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="41">table_name</text></a><rect x="179" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="41">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m66 0 h4 m0 0 h82 m-176 0 h20 m156 0 h20 m-196 0 q10 0 10 10 m176 0 q0 -10 10 -10 m-186 10 v8 m176 0 v-8 m-176 8 q0 10 10 10 m156 0 q10 0 10 -10 m-166 10 h4 m34 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m12 0 h4 m23 -28 h-3"/> + <polygon points="225 10 233 6 233 14"/> + <polygon points="225 10 217 6 217 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#target-table" title="target_table" shape="rect">target_table</a></div> + <div>         ::= <a href="#table-name" title="table_name" shape="rect">table_name</a></div> + <div>           | 'ONLY' '(' <a href="#table-name" title="table_name" shape="rect">table_name</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#delete-statement-positioned" title="delete-statement-positioned">delete-statement-positioned</a></li><li><a href="#delete-statement-searched" title="delete-statement-searched">delete-statement-searched</a></li><li><a href="#dynamic-delete-statement-positioned" title="dynamic-delete-statement-positioned">dynamic-delete-statement-positioned</a></li><li><a href="#dynamic-update-statement-positioned" title="dynamic-update-statement-positioned">dynamic-update-statement-positioned</a></li><li><a href="#merge-statement" title="merge-statement">merge-statement</a></li><li><a href="#preparable-dynamic-delete-statement-positioned" title="preparable-dynamic-delete-statement-positioned">preparable-dynamic-delete-statement-positioned</a></li><li><a href="#preparable-dynamic-update-statement-positioned" title="preparable-dynamic-update-statement-positioned">preparable-dynamic-update-statement-positioned</a></li><li><a href="#truncate-table-statement" title="truncate-table-statement">truncate-table-statement</a></li><li><a href="#update-statement-positioned" title="update-statement-positioned">update-statement-positioned</a></li><li><a href="#update-statement-searched" title="update-statement-searched">update-statement-searched</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + delete_statement_searched +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="549" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DELETE</text> + <rect x="71" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="115" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="13">target_table</text></a><rect x="227" y="43" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="55">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="275" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="279" y="34">identifier</text></a><rect x="369" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="373" y="34">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="419" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="423" y="34">search_condition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m64 0 h4 m20 0 h10 m0 0 h112 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v1 m142 0 v-1 m-142 1 q0 10 10 10 m122 0 q10 0 10 -10 m-112 10 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m46 0 h4 m40 -21 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m42 0 h4 m0 0 h4 m86 0 h4 m23 -21 h-3"/> + <polygon points="539 10 547 6 547 14"/> + <polygon points="539 10 531 6 531 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#delete-statement-searched" title="delete_statement_searched" shape="rect">delete_statement_searched</a></div> + <div>         ::= 'DELETE' 'FROM' <a href="#target-table" title="target_table" shape="rect">target_table</a> ( 'AS'? <a href="#identifier" title="identifier" shape="rect">identifier</a> )? ( 'WHERE' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-change-statement" title="sql-data-change-statement">sql-data-change-statement</a></li><li><a href="#data-change-statement" title="data-change-statement">data-change-statement</a></li><li><a href="#direct-sql-data-statement" title="direct-sql-data-statement">direct-sql-data-statement</a></li><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + truncate_table_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="417" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRUNCATE</text> + <rect x="87" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="13">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="131" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="13">target_table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identity-column-restart-option" xlink:title="identity_column_restart_option" shape="rect"> + <rect x="223" y="22" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="227" y="34">identity_column_restart_option</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m64 0 h4 m20 0 h10 m0 0 h148 m-178 0 h20 m158 0 h20 m-198 0 q10 0 10 10 m178 0 q0 -10 10 -10 m-188 10 v1 m178 0 v-1 m-178 1 q0 10 10 10 m158 0 q10 0 10 -10 m-168 10 h4 m150 0 h4 m23 -21 h-3"/> + <polygon points="407 10 415 6 415 14"/> + <polygon points="407 10 399 6 399 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#truncate-table-statement" title="truncate_table_statement" shape="rect">truncate_table_statement</a></div> + <div>         ::= 'TRUNCATE' 'TABLE' <a href="#target-table" title="target_table" shape="rect">target_table</a> <a href="#identity-column-restart-option" title="identity_column_restart_option" shape="rect">identity_column_restart_option</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-change-statement" title="sql-data-change-statement">sql-data-change-statement</a></li><li><a href="#direct-sql-data-statement" title="direct-sql-data-statement">direct-sql-data-statement</a></li><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identity_column_restart_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="201" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CONTINUE</text> + <rect x="43" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">RESTART</text> + <rect x="127" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="131" y="13">IDENTITY</text> + <path class="line" d="m17 10 h2 m20 0 h4 m56 0 h4 m-84 0 h20 m64 0 h20 m-104 0 q10 0 10 10 m84 0 q0 -10 10 -10 m-94 10 v8 m84 0 v-8 m-84 8 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m48 0 h4 m0 0 h8 m20 -28 h4 m50 0 h4 m3 0 h-3"/> + <polygon points="191 10 199 6 199 14"/> + <polygon points="191 10 183 6 183 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identity-column-restart-option" title="identity_column_restart_option" shape="rect">identity_column_restart_option</a></div> + <div>         ::= ( 'CONTINUE' | 'RESTART' ) 'IDENTITY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#truncate-table-statement" title="truncate-table-statement">truncate-table-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + insert_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="361" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">INSERT</text> + <rect x="71" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">INTO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insertion-target" xlink:title="insertion_target" shape="rect"> + <rect x="111" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">insertion_target</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert-columns-and-source" xlink:title="insert_columns_and_source" shape="rect"> + <rect x="199" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="203" y="13">insert_columns_and_source</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m80 0 h4 m0 0 h4 m138 0 h4 m3 0 h-3"/> + <polygon points="351 10 359 6 359 14"/> + <polygon points="351 10 343 6 343 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#insert-statement" title="insert_statement" shape="rect">insert_statement</a></div> + <div>         ::= 'INSERT' 'INTO' <a href="#insertion-target" title="insertion_target" shape="rect">insertion_target</a> <a href="#insert-columns-and-source" title="insert_columns_and_source" shape="rect">insert_columns_and_source</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-change-statement" title="sql-data-change-statement">sql-data-change-statement</a></li><li><a href="#data-change-statement" title="data-change-statement">data-change-statement</a></li><li><a href="#direct-sql-data-statement" title="direct-sql-data-statement">direct-sql-data-statement</a></li><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + insertion_target +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="113" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="23" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">table_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m66 0 h4 m3 0 h-3"/> + <polygon points="103 10 111 6 111 14"/> + <polygon points="103 10 95 6 95 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#insertion-target" title="insertion_target" shape="rect">insertion_target</a></div> + <div>         ::= <a href="#table-name" title="table_name" shape="rect">table_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#insert-statement" title="insert-statement">insert-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + insert_columns_and_source +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="173" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#from-subquery" xlink:title="from_subquery" shape="rect"> + <rect x="43" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">from_subquery</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#from-constructor" xlink:title="from_constructor" shape="rect"> + <rect x="43" y="29" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">from_constructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#from-default" xlink:title="from_default" shape="rect"> + <rect x="43" y="57" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">from_default</text></a><path class="line" d="m17 10 h2 m20 0 h4 m80 0 h4 m0 0 h6 m-114 0 h20 m94 0 h20 m-134 0 q10 0 10 10 m114 0 q0 -10 10 -10 m-124 10 v8 m114 0 v-8 m-114 8 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m86 0 h4 m-104 -10 v20 m114 0 v-20 m-114 20 v8 m114 0 v-8 m-114 8 q0 10 10 10 m94 0 q10 0 10 -10 m-104 10 h4 m66 0 h4 m0 0 h20 m23 -56 h-3"/> + <polygon points="163 10 171 6 171 14"/> + <polygon points="163 10 155 6 155 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#insert-columns-and-source" title="insert_columns_and_source" shape="rect">insert_columns_and_source</a></div> + <div>         ::= <a href="#from-subquery" title="from_subquery" shape="rect">from_subquery</a></div> + <div>           | <a href="#from-constructor" title="from_constructor" shape="rect">from_constructor</a></div> + <div>           | <a href="#from-default" title="from_default" shape="rect">from_default</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#insert-statement" title="insert-statement">insert-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + from_subquery +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="445" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert-column-list" xlink:title="insert_column_list" shape="rect"> + <rect x="63" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">insert_column_list</text></a><rect x="161" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="34">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#override-clause" xlink:title="override_clause" shape="rect"> + <rect x="221" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="34">override_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-expression" xlink:title="query_expression" shape="rect"> + <rect x="329" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="333" y="13">query_expression</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m40 -21 h10 m0 0 h78 m-108 0 h20 m88 0 h20 m-128 0 q10 0 10 10 m108 0 q0 -10 10 -10 m-118 10 v1 m108 0 v-1 m-108 1 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m80 0 h4 m20 -21 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="435 10 443 6 443 14"/> + <polygon points="435 10 427 6 427 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#from-subquery" title="from_subquery" shape="rect">from_subquery</a></div> + <div>         ::= ( '(' <a href="#insert-column-list" title="insert_column_list" shape="rect">insert_column_list</a> ')' )? <a href="#override-clause" title="override_clause" shape="rect">override_clause</a>? <a href="#query-expression" title="query_expression" shape="rect">query_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#insert-columns-and-source" title="insert-columns-and-source">insert-columns-and-source</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + from_constructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="561" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert-column-list" xlink:title="insert_column_list" shape="rect"> + <rect x="63" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">insert_column_list</text></a><rect x="161" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="34">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#override-clause" xlink:title="override_clause" shape="rect"> + <rect x="221" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="34">override_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-table-value-constructor" xlink:title="contextually_typed_table_value_constructor" shape="rect"> + <rect x="329" y="1" width="208" height="18" class="nonterminal"/> + <text class="nonterminal" x="333" y="13">contextually_typed_table_value_constructor</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m40 -21 h10 m0 0 h78 m-108 0 h20 m88 0 h20 m-128 0 q10 0 10 10 m108 0 q0 -10 10 -10 m-118 10 v1 m108 0 v-1 m-108 1 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m80 0 h4 m20 -21 h4 m208 0 h4 m3 0 h-3"/> + <polygon points="551 10 559 6 559 14"/> + <polygon points="551 10 543 6 543 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#from-constructor" title="from_constructor" shape="rect">from_constructor</a></div> + <div>         ::= ( '(' <a href="#insert-column-list" title="insert_column_list" shape="rect">insert_column_list</a> ')' )? <a href="#override-clause" title="override_clause" shape="rect">override_clause</a>? <a href="#contextually-typed-table-value-constructor" title="contextually_typed_table_value_constructor" shape="rect">contextually_typed_table_value_constructor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#insert-columns-and-source" title="insert-columns-and-source">insert-columns-and-source</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + override_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OVERRIDING</text> + <rect x="119" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">USER</text> + <rect x="119" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="41">SYSTEM</text> + <rect x="191" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="13">VALUE</text> + <path class="line" d="m17 10 h2 m0 0 h4 m68 0 h4 m20 0 h4 m32 0 h4 m0 0 h12 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v8 m72 0 v-8 m-72 8 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m44 0 h4 m20 -28 h4 m36 0 h4 m3 0 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#override-clause" title="override_clause" shape="rect">override_clause</a></div> + <div>         ::= 'OVERRIDING' ( 'USER' | 'SYSTEM' ) 'VALUE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#from-constructor" title="from-constructor">from-constructor</a></li><li><a href="#from-subquery" title="from-subquery">from-subquery</a></li><li><a href="#merge-insert-specification" title="merge-insert-specification">merge-insert-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + from_default +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="145" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DEFAULT</text> + <rect x="79" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13">VALUES</text> + <path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m42 0 h4 m3 0 h-3"/> + <polygon points="135 10 143 6 143 14"/> + <polygon points="135 10 127 6 127 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#from-default" title="from_default" shape="rect">from_default</a></div> + <div>         ::= 'DEFAULT' 'VALUES'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#insert-columns-and-source" title="insert-columns-and-source">insert-columns-and-source</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + insert_column_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column-name-list" xlink:title="column_name_list" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">column_name_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#insert-column-list" title="insert_column_list" shape="rect">insert_column_list</a></div> + <div>         ::= <a href="#column-name-list" title="column_name_list" shape="rect">column_name_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#from-constructor" title="from-constructor">from-constructor</a></li><li><a href="#from-subquery" title="from-subquery">from-subquery</a></li><li><a href="#merge-insert-specification" title="merge-insert-specification">merge-insert-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="775" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MERGE</text> + <rect x="71" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">INTO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="111" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">target_table</text></a><rect x="223" y="43" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="227" y="55">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="271" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="275" y="34">identifier</text></a><rect x="345" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="349" y="13">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-reference" xlink:title="table_reference" shape="rect"> + <rect x="391" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="395" y="13">table_reference</text></a><rect x="479" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="483" y="13">ON</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="509" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="513" y="13">search_condition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-operation-specification" xlink:title="merge_operation_specification" shape="rect"> + <rect x="603" y="1" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="607" y="13">merge_operation_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m64 0 h4 m20 0 h10 m0 0 h112 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v1 m142 0 v-1 m-142 1 q0 10 10 10 m122 0 q10 0 10 -10 m-112 10 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m46 0 h4 m20 -21 h4 m38 0 h4 m0 0 h4 m80 0 h4 m0 0 h4 m22 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m148 0 h4 m3 0 h-3"/> + <polygon points="765 10 773 6 773 14"/> + <polygon points="765 10 757 6 757 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-statement" title="merge_statement" shape="rect">merge_statement</a></div> + <div>         ::= 'MERGE' 'INTO' <a href="#target-table" title="target_table" shape="rect">target_table</a> ( 'AS'? <a href="#identifier" title="identifier" shape="rect">identifier</a> )? 'USING' <a href="#table-reference" title="table_reference" shape="rect">table_reference</a> 'ON' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> <a href="#merge-operation-specification" title="merge_operation_specification" shape="rect">merge_operation_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-change-statement" title="sql-data-change-statement">sql-data-change-statement</a></li><li><a href="#data-change-statement" title="data-change-statement">data-change-statement</a></li><li><a href="#direct-sql-data-statement" title="direct-sql-data-statement">direct-sql-data-statement</a></li><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_operation_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-when-clause" xlink:title="merge_when_clause" shape="rect"> + <rect x="43" y="13" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">merge_when_clause</text></a><path class="line" d="m17 22 h2 m20 0 h4 m106 0 h4 m-134 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m114 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-114 0 h10 m0 0 h104 m23 21 h-3"/> + <polygon points="183 22 191 18 191 26"/> + <polygon points="183 22 175 18 175 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-operation-specification" title="merge_operation_specification" shape="rect">merge_operation_specification</a></div> + <div>         ::= <a href="#merge-when-clause" title="merge_when_clause" shape="rect">merge_when_clause</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-statement" title="merge-statement">merge-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_when_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-when-matched-clause" xlink:title="merge_when_matched_clause" shape="rect"> + <rect x="43" y="1" width="154" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">merge_when_matched_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-when-not-matched-clause" xlink:title="merge_when_not_matched_clause" shape="rect"> + <rect x="43" y="29" width="174" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">merge_when_not_matched_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m154 0 h4 m0 0 h20 m-202 0 h20 m182 0 h20 m-222 0 q10 0 10 10 m202 0 q0 -10 10 -10 m-212 10 v8 m202 0 v-8 m-202 8 q0 10 10 10 m182 0 q10 0 10 -10 m-192 10 h4 m174 0 h4 m23 -28 h-3"/> + <polygon points="251 10 259 6 259 14"/> + <polygon points="251 10 243 6 243 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-when-clause" title="merge_when_clause" shape="rect">merge_when_clause</a></div> + <div>         ::= <a href="#merge-when-matched-clause" title="merge_when_matched_clause" shape="rect">merge_when_matched_clause</a></div> + <div>           | <a href="#merge-when-not-matched-clause" title="merge_when_not_matched_clause" shape="rect">merge_when_not_matched_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-operation-specification" title="merge-operation-specification">merge-operation-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_when_matched_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="551" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WHEN</text> + <rect x="69" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="13">MATCHED</text> + <rect x="149" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="34">AND</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="185" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="189" y="34">search_condition</text></a><rect x="299" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="303" y="13">THEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-update-or-delete-specification" xlink:title="merge_update_or_delete_specification" shape="rect"> + <rect x="339" y="1" width="188" height="18" class="nonterminal"/> + <text class="nonterminal" x="343" y="13">merge_update_or_delete_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m52 0 h4 m20 0 h10 m0 0 h120 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v1 m150 0 v-1 m-150 1 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m28 0 h4 m0 0 h4 m86 0 h4 m20 -21 h4 m32 0 h4 m0 0 h4 m188 0 h4 m3 0 h-3"/> + <polygon points="541 10 549 6 549 14"/> + <polygon points="541 10 533 6 533 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-when-matched-clause" title="merge_when_matched_clause" shape="rect">merge_when_matched_clause</a></div> + <div>         ::= 'WHEN' 'MATCHED' ( 'AND' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> )? 'THEN' <a href="#merge-update-or-delete-specification" title="merge_update_or_delete_specification" shape="rect">merge_update_or_delete_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-when-clause" title="merge-when-clause">merge-when-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_update_or_delete_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-update-specification" xlink:title="merge_update_specification" shape="rect"> + <rect x="43" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">merge_update_specification</text></a><rect x="43" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">DELETE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m138 0 h4 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m40 0 h4 m0 0 h98 m23 -28 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-update-or-delete-specification" title="merge_update_or_delete_specification" shape="rect">merge_update_or_delete_specification</a></div> + <div>         ::= <a href="#merge-update-specification" title="merge_update_specification" shape="rect">merge_update_specification</a></div> + <div>           | 'DELETE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-when-matched-clause" title="merge-when-matched-clause">merge-when-matched-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_when_not_matched_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="529" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WHEN</text> + <rect x="69" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="13">NOT</text> + <rect x="105" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="13">MATCHED</text> + <rect x="185" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="34">AND</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="221" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="34">search_condition</text></a><rect x="335" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="13">THEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-insert-specification" xlink:title="merge_insert_specification" shape="rect"> + <rect x="375" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="379" y="13">merge_insert_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m52 0 h4 m20 0 h10 m0 0 h120 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v1 m150 0 v-1 m-150 1 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m28 0 h4 m0 0 h4 m86 0 h4 m20 -21 h4 m32 0 h4 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="519 10 527 6 527 14"/> + <polygon points="519 10 511 6 511 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-when-not-matched-clause" title="merge_when_not_matched_clause" shape="rect">merge_when_not_matched_clause</a></div> + <div>         ::= 'WHEN' 'NOT' 'MATCHED' ( 'AND' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> )? 'THEN' <a href="#merge-insert-specification" title="merge_insert_specification" shape="rect">merge_insert_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-when-clause" title="merge-when-clause">merge-when-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_update_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UPDATE</text> + <rect x="75" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-clause-list" xlink:title="set_clause_list" shape="rect"> + <rect x="107" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="13">set_clause_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="195 10 203 6 203 14"/> + <polygon points="195 10 187 6 187 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-update-specification" title="merge_update_specification" shape="rect">merge_update_specification</a></div> + <div>         ::= 'UPDATE' 'SET' <a href="#set-clause-list" title="set_clause_list" shape="rect">set_clause_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-update-or-delete-specification" title="merge-update-or-delete-specification">merge-update-or-delete-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_insert_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="569" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">INSERT</text> + <rect x="91" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert-column-list" xlink:title="insert_column_list" shape="rect"> + <rect x="111" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="34">insert_column_list</text></a><rect x="209" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="213" y="34">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#override-clause" xlink:title="override_clause" shape="rect"> + <rect x="269" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="273" y="34">override_clause</text></a><rect x="377" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="381" y="13">VALUES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-insert-value-list" xlink:title="merge_insert_value_list" shape="rect"> + <rect x="427" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="431" y="13">merge_insert_value_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m20 0 h10 m0 0 h128 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v1 m158 0 v-1 m-158 1 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m40 -21 h10 m0 0 h78 m-108 0 h20 m88 0 h20 m-128 0 q10 0 10 10 m108 0 q0 -10 10 -10 m-118 10 v1 m108 0 v-1 m-108 1 q0 10 10 10 m88 0 q10 0 10 -10 m-98 10 h4 m80 0 h4 m20 -21 h4 m42 0 h4 m0 0 h4 m118 0 h4 m3 0 h-3"/> + <polygon points="559 10 567 6 567 14"/> + <polygon points="559 10 551 6 551 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-insert-specification" title="merge_insert_specification" shape="rect">merge_insert_specification</a></div> + <div>         ::= 'INSERT' ( '(' <a href="#insert-column-list" title="insert_column_list" shape="rect">insert_column_list</a> ')' )? <a href="#override-clause" title="override_clause" shape="rect">override_clause</a>? 'VALUES' <a href="#merge-insert-value-list" title="merge_insert_value_list" shape="rect">merge_insert_value_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-when-not-matched-clause" title="merge-when-not-matched-clause">merge-when-not-matched-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_insert_value_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="271" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-insert-value-element" xlink:title="merge_insert_value_element" shape="rect"> + <rect x="63" y="29" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">merge_insert_value_element</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="235" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m144 0 h4 m-172 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m152 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-152 0 h4 m8 0 h4 m0 0 h136 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="261 38 269 34 269 42"/> + <polygon points="261 38 253 34 253 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-insert-value-list" title="merge_insert_value_list" shape="rect">merge_insert_value_list</a></div> + <div>         ::= '(' <a href="#merge-insert-value-element" title="merge_insert_value_element" shape="rect">merge_insert_value_element</a> ( ',' <a href="#merge-insert-value-element" title="merge_insert_value_element" shape="rect">merge_insert_value_element</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-insert-specification" title="merge-insert-specification">merge-insert-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + merge_insert_value_element +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="271" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="43" y="29" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">contextually_typed_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h94 m-212 0 h20 m192 0 h20 m-232 0 q10 0 10 10 m212 0 q0 -10 10 -10 m-222 10 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m184 0 h4 m23 -28 h-3"/> + <polygon points="261 10 269 6 269 14"/> + <polygon points="261 10 253 6 253 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#merge-insert-value-element" title="merge_insert_value_element" shape="rect">merge_insert_value_element</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>           | <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#merge-insert-value-list" title="merge-insert-value-list">merge-insert-value-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + update_statement_positioned +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="653" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="75" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">target_table</text></a><rect x="187" y="43" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="55">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="235" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="239" y="34">identifier</text></a><rect x="309" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="313" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-clause-list" xlink:title="set_clause_list" shape="rect"> + <rect x="341" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="345" y="13">set_clause_list</text></a><rect x="423" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="13">WHERE</text> + <rect x="473" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="477" y="13">CURRENT</text> + <rect x="531" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="535" y="13">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="559" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="563" y="13">cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m64 0 h4 m20 0 h10 m0 0 h112 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v1 m142 0 v-1 m-142 1 q0 10 10 10 m122 0 q10 0 10 -10 m-112 10 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m46 0 h4 m20 -21 h4 m24 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="643 10 651 6 651 14"/> + <polygon points="643 10 635 6 635 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#update-statement-positioned" title="update_statement_positioned" shape="rect">update_statement_positioned</a></div> + <div>         ::= 'UPDATE' <a href="#target-table" title="target_table" shape="rect">target_table</a> ( 'AS'? <a href="#identifier" title="identifier" shape="rect">identifier</a> )? 'SET' <a href="#set-clause-list" title="set_clause_list" shape="rect">set_clause_list</a> 'WHERE' 'CURRENT' 'OF' <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-change-statement" title="sql-data-change-statement">sql-data-change-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + update_statement_searched +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="623" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="75" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">target_table</text></a><rect x="187" y="43" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="55">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="235" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="239" y="34">identifier</text></a><rect x="309" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="313" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-clause-list" xlink:title="set_clause_list" shape="rect"> + <rect x="341" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="345" y="13">set_clause_list</text></a><rect x="443" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="447" y="34">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#search-condition" xlink:title="search_condition" shape="rect"> + <rect x="493" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="497" y="34">search_condition</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m64 0 h4 m20 0 h10 m0 0 h112 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v1 m142 0 v-1 m-142 1 q0 10 10 10 m122 0 q10 0 10 -10 m-112 10 h10 m0 0 h18 m-48 0 h20 m28 0 h20 m-68 0 q10 0 10 10 m48 0 q0 -10 10 -10 m-58 10 v1 m48 0 v-1 m-48 1 q0 10 10 10 m28 0 q10 0 10 -10 m-38 10 h4 m20 0 h4 m20 -21 h4 m46 0 h4 m20 -21 h4 m24 0 h4 m0 0 h4 m74 0 h4 m20 0 h10 m0 0 h134 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v1 m164 0 v-1 m-164 1 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m42 0 h4 m0 0 h4 m86 0 h4 m23 -21 h-3"/> + <polygon points="613 10 621 6 621 14"/> + <polygon points="613 10 605 6 605 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#update-statement-searched" title="update_statement_searched" shape="rect">update_statement_searched</a></div> + <div>         ::= 'UPDATE' <a href="#target-table" title="target_table" shape="rect">target_table</a> ( 'AS'? <a href="#identifier" title="identifier" shape="rect">identifier</a> )? 'SET' <a href="#set-clause-list" title="set_clause_list" shape="rect">set_clause_list</a> ( 'WHERE' <a href="#search-condition" title="search_condition" shape="rect">search_condition</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-data-change-statement" title="sql-data-change-statement">sql-data-change-statement</a></li><li><a href="#data-change-statement" title="data-change-statement">data-change-statement</a></li><li><a href="#direct-sql-data-statement" title="direct-sql-data-statement">direct-sql-data-statement</a></li><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_clause_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="145" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-clause" xlink:title="set_clause" shape="rect"> + <rect x="43" y="29" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">set_clause</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m58 0 h4 m-86 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m66 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-66 0 h4 m8 0 h4 m0 0 h50 m23 28 h-3"/> + <polygon points="135 38 143 34 143 42"/> + <polygon points="135 38 127 34 127 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-clause-list" title="set_clause_list" shape="rect">set_clause_list</a></div> + <div>         ::= <a href="#set-clause" title="set_clause" shape="rect">set_clause</a> ( ',' <a href="#set-clause" title="set_clause" shape="rect">set_clause</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#dynamic-update-statement-positioned" title="dynamic-update-statement-positioned">dynamic-update-statement-positioned</a></li><li><a href="#merge-update-specification" title="merge-update-specification">merge-update-specification</a></li><li><a href="#preparable-dynamic-update-statement-positioned" title="preparable-dynamic-update-statement-positioned">preparable-dynamic-update-statement-positioned</a></li><li><a href="#update-statement-positioned" title="update-statement-positioned">update-statement-positioned</a></li><li><a href="#update-statement-searched" title="update-statement-searched">update-statement-searched</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiple-column-assignment" xlink:title="multiple_column_assignment" shape="rect"> + <rect x="43" y="1" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">multiple_column_assignment</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-target" xlink:title="set_target" shape="rect"> + <rect x="43" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">set_target</text></a><rect x="107" y="29" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="41">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-source" xlink:title="update_source" shape="rect"> + <rect x="129" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="133" y="41">update_source</text></a><path class="line" d="m17 10 h2 m20 0 h4 m144 0 h4 m0 0 h20 m-192 0 h20 m172 0 h20 m-212 0 q10 0 10 10 m192 0 q0 -10 10 -10 m-202 10 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m56 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m78 0 h4 m23 -28 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-clause" title="set_clause" shape="rect">set_clause</a></div> + <div>         ::= <a href="#multiple-column-assignment" title="multiple_column_assignment" shape="rect">multiple_column_assignment</a></div> + <div>           | <a href="#set-target" title="set_target" shape="rect">set_target</a> '=' <a href="#update-source" title="update_source" shape="rect">update_source</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-clause-list" title="set-clause-list">set-clause-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_target +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-target" xlink:title="update_target" shape="rect"> + <rect x="43" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">update_target</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mutated-set-clause" xlink:title="mutated_set_clause" shape="rect"> + <rect x="43" y="29" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">mutated_set_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m76 0 h4 m0 0 h28 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v8 m132 0 v-8 m-132 8 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m104 0 h4 m23 -28 h-3"/> + <polygon points="181 10 189 6 189 14"/> + <polygon points="181 10 173 6 173 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-target" title="set_target" shape="rect">set_target</a></div> + <div>         ::= <a href="#update-target" title="update_target" shape="rect">update_target</a></div> + <div>           | <a href="#mutated-set-clause" title="mutated_set_clause" shape="rect">mutated_set_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-clause" title="set-clause">set-clause</a></li><li><a href="#set-target-list" title="set-target-list">set-target-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiple_column_assignment +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-target-list" xlink:title="set_target_list" shape="rect"> + <rect x="23" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">set_target_list</text></a><rect x="105" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="13">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#assigned-row" xlink:title="assigned_row" shape="rect"> + <rect x="127" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="131" y="13">assigned_row</text></a><path class="line" d="m17 10 h2 m0 0 h4 m74 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiple-column-assignment" title="multiple_column_assignment" shape="rect">multiple_column_assignment</a></div> + <div>         ::= <a href="#set-target-list" title="set_target_list" shape="rect">set_target_list</a> '=' <a href="#assigned-row" title="assigned_row" shape="rect">assigned_row</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-clause" title="set-clause">set-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_target_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="183" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-target" xlink:title="set_target" shape="rect"> + <rect x="63" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">set_target</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="147" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m56 0 h4 m-84 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m64 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-64 0 h4 m8 0 h4 m0 0 h48 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="173 38 181 34 181 42"/> + <polygon points="173 38 165 34 165 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-target-list" title="set_target_list" shape="rect">set_target_list</a></div> + <div>         ::= '(' <a href="#set-target" title="set_target" shape="rect">set_target</a> ( ',' <a href="#set-target" title="set_target" shape="rect">set_target</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiple-column-assignment" title="multiple-column-assignment">multiple-column-assignment</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + assigned_row +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-row-value-expression" xlink:title="contextually_typed_row_value_expression" shape="rect"> + <rect x="23" y="1" width="204" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">contextually_typed_row_value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m204 0 h4 m3 0 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#assigned-row" title="assigned_row" shape="rect">assigned_row</a></div> + <div>         ::= <a href="#contextually-typed-row-value-expression" title="contextually_typed_row_value_expression" shape="rect">contextually_typed_row_value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiple-column-assignment" title="multiple-column-assignment">multiple-column-assignment</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + update_target +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="527" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#left-bracket-or-trigraph" xlink:title="left_bracket_or_trigraph" shape="rect"> + <rect x="97" y="22" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="34">left_bracket_or_trigraph</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="223" y="22" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="227" y="34">simple_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#right-bracket-or-trigraph" xlink:title="right_bracket_or_trigraph" shape="rect"> + <rect x="359" y="22" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="363" y="34">right_bracket_or_trigraph</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m20 0 h10 m0 0 h384 m-414 0 h20 m394 0 h20 m-434 0 q10 0 10 10 m414 0 q0 -10 10 -10 m-424 10 v1 m414 0 v-1 m-414 1 q0 10 10 10 m394 0 q10 0 10 -10 m-404 10 h4 m118 0 h4 m0 0 h4 m128 0 h4 m0 0 h4 m124 0 h4 m23 -21 h-3"/> + <polygon points="517 10 525 6 525 14"/> + <polygon points="517 10 509 6 509 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#update-target" title="update_target" shape="rect">update_target</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> ( <a href="#left-bracket-or-trigraph" title="left_bracket_or_trigraph" shape="rect">left_bracket_or_trigraph</a> <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> <a href="#right-bracket-or-trigraph" title="right_bracket_or_trigraph" shape="rect">right_bracket_or_trigraph</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-target" title="set-target">set-target</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + mutated_set_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="13" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="25">identifier</text></a><rect x="97" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="25">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="113" y="13" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="25">identifier</text></a><path class="line" d="m17 22 h2 m0 0 h4 m46 0 h4 m20 0 h4 m8 0 h4 m0 0 h4 m46 0 h4 m-90 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m70 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-70 0 h10 m0 0 h60 m23 21 h-3"/> + <polygon points="193 22 201 18 201 26"/> + <polygon points="193 22 185 18 185 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#mutated-set-clause" title="mutated_set_clause" shape="rect">mutated_set_clause</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a> ( '.' <a href="#identifier" title="identifier" shape="rect">identifier</a> )+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#mutated-target" title="mutated-target">mutated-target</a></li><li><a href="#set-target" title="set-target">set-target</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + mutated_target +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="43" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mutated-set-clause" xlink:title="mutated_set_clause" shape="rect"> + <rect x="43" y="29" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">mutated_set_clause</text></a><path class="line" d="m17 10 h2 m20 0 h4 m46 0 h4 m0 0 h58 m-132 0 h20 m112 0 h20 m-152 0 q10 0 10 10 m132 0 q0 -10 10 -10 m-142 10 v8 m132 0 v-8 m-132 8 q0 10 10 10 m112 0 q10 0 10 -10 m-122 10 h4 m104 0 h4 m23 -28 h-3"/> + <polygon points="181 10 189 6 189 14"/> + <polygon points="181 10 173 6 173 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#mutated-target" title="mutated_target" shape="rect">mutated_target</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div> + <div>           | <a href="#mutated-set-clause" title="mutated_set_clause" shape="rect">mutated_set_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + update_source +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="271" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#contextually-typed-value-specification" xlink:title="contextually_typed_value_specification" shape="rect"> + <rect x="43" y="29" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">contextually_typed_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h94 m-212 0 h20 m192 0 h20 m-232 0 q10 0 10 10 m212 0 q0 -10 10 -10 m-222 10 v8 m212 0 v-8 m-212 8 q0 10 10 10 m192 0 q10 0 10 -10 m-202 10 h4 m184 0 h4 m23 -28 h-3"/> + <polygon points="261 10 269 6 269 14"/> + <polygon points="261 10 253 6 253 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#update-source" title="update_source" shape="rect">update_source</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>           | <a href="#contextually-typed-value-specification" title="contextually_typed_value_specification" shape="rect">contextually_typed_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-clause" title="set-clause">set-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + temporary_table_declaration +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="717" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DECLARE</text> + <rect x="79" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13">LOCAL</text> + <rect x="125" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">TEMPORARY</text> + <rect x="199" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="13">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-name" xlink:title="table_name" shape="rect"> + <rect x="243" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="247" y="13">table_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-element-list" xlink:title="table_element_list" shape="rect"> + <rect x="317" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="321" y="13">table_element_list</text></a><rect x="437" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="441" y="34">ON</text> + <rect x="467" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="471" y="34">COMMIT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table-commit-action" xlink:title="table_commit_action" shape="rect"> + <rect x="523" y="22" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="527" y="34">table_commit_action</text></a><rect x="635" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="639" y="34">ROWS</text> + <path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m38 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m92 0 h4 m20 0 h10 m0 0 h234 m-264 0 h20 m244 0 h20 m-284 0 q10 0 10 10 m264 0 q0 -10 10 -10 m-274 10 v1 m264 0 v-1 m-264 1 q0 10 10 10 m244 0 q10 0 10 -10 m-254 10 h4 m22 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m104 0 h4 m0 0 h4 m38 0 h4 m23 -21 h-3"/> + <polygon points="707 10 715 6 715 14"/> + <polygon points="707 10 699 6 699 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#temporary-table-declaration" title="temporary_table_declaration" shape="rect">temporary_table_declaration</a></div> + <div>         ::= 'DECLARE' 'LOCAL' 'TEMPORARY' 'TABLE' <a href="#table-name" title="table_name" shape="rect">table_name</a> <a href="#table-element-list" title="table_element_list" shape="rect">table_element_list</a> ( 'ON' 'COMMIT' <a href="#table-commit-action" title="table_commit_action" shape="rect">table_commit_action</a> 'ROWS' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-client-module-definition" title="sql-client-module-definition">sql-client-module-definition</a></li><li><a href="#direct-sql-data-statement" title="direct-sql-data-statement">direct-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + call_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CALL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#routine-invocation" xlink:title="routine_invocation" shape="rect"> + <rect x="61" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="65" y="13">routine_invocation</text></a><path class="line" d="m17 10 h2 m0 0 h4 m30 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#call-statement" title="call_statement" shape="rect">call_statement</a></div> + <div>         ::= 'CALL' <a href="#routine-invocation" title="routine_invocation" shape="rect">routine_invocation</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-control-statement" title="sql-control-statement">sql-control-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + return_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">RETURN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#return-value" xlink:title="return_value" shape="rect"> + <rect x="75" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">return_value</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m68 0 h4 m3 0 h-3"/> + <polygon points="157 10 165 6 165 14"/> + <polygon points="157 10 149 6 149 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#return-statement" title="return_statement" shape="rect">return_statement</a></div> + <div>         ::= 'RETURN' <a href="#return-value" title="return_value" shape="rect">return_value</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-control-statement" title="sql-control-statement">sql-control-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + return_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_expression</text></a><rect x="43" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NULL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m32 0 h4 m0 0 h58 m23 -28 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#return-value" title="return_value" shape="rect">return_value</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div> + <div>           | 'NULL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#return-statement" title="return-statement">return-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + start_transaction_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="339" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">START</text> + <rect x="67" y="1" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">TRANSACTION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transaction-characteristics" xlink:title="transaction_characteristics" shape="rect"> + <rect x="169" y="22" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="34">transaction_characteristics</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m74 0 h4 m20 0 h10 m0 0 h124 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v1 m154 0 v-1 m-154 1 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m126 0 h4 m23 -21 h-3"/> + <polygon points="329 10 337 6 337 14"/> + <polygon points="329 10 321 6 321 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#start-transaction-statement" title="start_transaction_statement" shape="rect">start_transaction_statement</a></div> + <div>         ::= 'START' 'TRANSACTION' <a href="#transaction-characteristics" title="transaction_characteristics" shape="rect">transaction_characteristics</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-transaction-statement" title="sql-transaction-statement">sql-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_transaction_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="413" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="75" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="34">LOCAL</text> + <rect x="141" y="1" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="13">TRANSACTION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transaction-characteristics" xlink:title="transaction_characteristics" shape="rect"> + <rect x="243" y="22" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="247" y="34">transaction_characteristics</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m20 0 h10 m0 0 h36 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v1 m66 0 v-1 m-66 1 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h4 m38 0 h4 m20 -21 h4 m74 0 h4 m20 0 h10 m0 0 h124 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v1 m154 0 v-1 m-154 1 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m126 0 h4 m23 -21 h-3"/> + <polygon points="403 10 411 6 411 14"/> + <polygon points="403 10 395 6 395 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-transaction-statement" title="set_transaction_statement" shape="rect">set_transaction_statement</a></div> + <div>         ::= 'SET' 'LOCAL'? 'TRANSACTION' <a href="#transaction-characteristics" title="transaction_characteristics" shape="rect">transaction_characteristics</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-transaction-statement" title="sql-transaction-statement">sql-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transaction_characteristics +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transaction-mode" xlink:title="transaction_mode" shape="rect"> + <rect x="43" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">transaction_mode</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m92 0 h4 m-120 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m100 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-100 0 h4 m8 0 h4 m0 0 h84 m23 28 h-3"/> + <polygon points="169 38 177 34 177 42"/> + <polygon points="169 38 161 34 161 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transaction-characteristics" title="transaction_characteristics" shape="rect">transaction_characteristics</a></div> + <div>         ::= <a href="#transaction-mode" title="transaction_mode" shape="rect">transaction_mode</a> ( ',' <a href="#transaction-mode" title="transaction_mode" shape="rect">transaction_mode</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-transaction-statement" title="set-transaction-statement">set-transaction-statement</a></li><li><a href="#start-transaction-statement" title="start-transaction-statement">start-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transaction_mode +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#isolation-level" xlink:title="isolation_level" shape="rect"> + <rect x="43" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">isolation_level</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transaction-access-mode" xlink:title="transaction_access_mode" shape="rect"> + <rect x="43" y="29" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">transaction_access_mode</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#diagnostics-size" xlink:title="diagnostics_size" shape="rect"> + <rect x="43" y="57" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">diagnostics_size</text></a><path class="line" d="m17 10 h2 m20 0 h4 m72 0 h4 m0 0 h58 m-158 0 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m130 0 h4 m-148 -10 v20 m158 0 v-20 m-158 20 v8 m158 0 v-8 m-158 8 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m82 0 h4 m0 0 h48 m23 -56 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transaction-mode" title="transaction_mode" shape="rect">transaction_mode</a></div> + <div>         ::= <a href="#isolation-level" title="isolation_level" shape="rect">isolation_level</a></div> + <div>           | <a href="#transaction-access-mode" title="transaction_access_mode" shape="rect">transaction_access_mode</a></div> + <div>           | <a href="#diagnostics-size" title="diagnostics_size" shape="rect">diagnostics_size</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#session-transaction-characteristics" title="session-transaction-characteristics">session-transaction-characteristics</a></li><li><a href="#transaction-characteristics" title="transaction-characteristics">transaction-characteristics</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transaction_access_mode +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="165" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">READ</text> + <rect x="83" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">ONLY</text> + <rect x="83" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="41">WRITE</text> + <path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m20 0 h4 m34 0 h4 m0 0 h4 m-66 0 h20 m46 0 h20 m-86 0 q10 0 10 10 m66 0 q0 -10 10 -10 m-76 10 v8 m66 0 v-8 m-66 8 q0 10 10 10 m46 0 q10 0 10 -10 m-56 10 h4 m38 0 h4 m23 -28 h-3"/> + <polygon points="155 10 163 6 163 14"/> + <polygon points="155 10 147 6 147 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transaction-access-mode" title="transaction_access_mode" shape="rect">transaction_access_mode</a></div> + <div>         ::= 'READ' ( 'ONLY' | 'WRITE' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transaction-mode" title="transaction-mode">transaction-mode</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + isolation_level +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ISOLATION</text> + <rect x="91" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="13">LEVEL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#level-of-isolation" xlink:title="level_of_isolation" shape="rect"> + <rect x="133" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">level_of_isolation</text></a><path class="line" d="m17 10 h2 m0 0 h4 m60 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="233 10 241 6 241 14"/> + <polygon points="233 10 225 6 225 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#isolation-level" title="isolation_level" shape="rect">isolation_level</a></div> + <div>         ::= 'ISOLATION' 'LEVEL' <a href="#level-of-isolation" title="level_of_isolation" shape="rect">level_of_isolation</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transaction-mode" title="transaction-mode">transaction-mode</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + level_of_isolation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="245" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">READ</text> + <rect x="103" y="1" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="13">UNCOMMITTED</text> + <rect x="103" y="29" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="41">COMMITTED</text> + <rect x="43" y="57" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">REPEATABLE</text> + <rect x="115" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="119" y="69">READ</text> + <rect x="43" y="85" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">SERIALIZABLE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m20 0 h4 m78 0 h4 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v8 m106 0 v-8 m-106 8 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m64 0 h4 m0 0 h14 m-166 -28 h20 m166 0 h20 m-206 0 q10 0 10 10 m186 0 q0 -10 10 -10 m-196 10 v36 m186 0 v-36 m-186 36 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m64 0 h4 m0 0 h4 m32 0 h4 m0 0 h54 m-176 -10 v20 m186 0 v-20 m-186 20 v8 m186 0 v-8 m-186 8 q0 10 10 10 m166 0 q10 0 10 -10 m-176 10 h4 m72 0 h4 m0 0 h86 m23 -84 h-3"/> + <polygon points="235 10 243 6 243 14"/> + <polygon points="235 10 227 6 227 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#level-of-isolation" title="level_of_isolation" shape="rect">level_of_isolation</a></div> + <div>         ::= 'READ' ( 'UNCOMMITTED' | 'COMMITTED' )</div> + <div>           | 'REPEATABLE' 'READ'</div> + <div>           | 'SERIALIZABLE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#isolation-level" title="isolation-level">isolation-level</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + diagnostics_size +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="291" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DIAGNOSTICS</text> + <rect x="103" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="13">SIZE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="139" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="143" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m72 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="281 10 289 6 289 14"/> + <polygon points="281 10 273 6 273 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#diagnostics-size" title="diagnostics_size" shape="rect">diagnostics_size</a></div> + <div>         ::= 'DIAGNOSTICS' 'SIZE' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#transaction-mode" title="transaction-mode">transaction-mode</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_constraints_mode_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="373" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">CONSTRAINTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#constraint-name-list" xlink:title="constraint_name_list" shape="rect"> + <rect x="137" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="13">constraint_name_list</text></a><rect x="269" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="13">DEFERRED</text> + <rect x="269" y="29" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="41">IMMEDIATE</text> + <path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m104 0 h4 m20 0 h4 m54 0 h4 m0 0 h6 m-88 0 h20 m68 0 h20 m-108 0 q10 0 10 10 m88 0 q0 -10 10 -10 m-98 10 v8 m88 0 v-8 m-88 8 q0 10 10 10 m68 0 q10 0 10 -10 m-78 10 h4 m60 0 h4 m23 -28 h-3"/> + <polygon points="363 10 371 6 371 14"/> + <polygon points="363 10 355 6 355 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-constraints-mode-statement" title="set_constraints_mode_statement" shape="rect">set_constraints_mode_statement</a></div> + <div>         ::= 'SET' 'CONSTRAINTS' <a href="#constraint-name-list" title="constraint_name_list" shape="rect">constraint_name_list</a> ( 'DEFERRED' | 'IMMEDIATE' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-transaction-statement" title="sql-transaction-statement">sql-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + constraint_name_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ALL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-qualified-name" xlink:title="schema_qualified_name" shape="rect"> + <rect x="63" y="57" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="69">schema_qualified_name</text></a><rect x="63" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">,</text> + <path class="line" d="m17 10 h2 m20 0 h4 m24 0 h4 m0 0 h138 m-190 0 h20 m170 0 h20 m-210 0 q10 0 10 10 m190 0 q0 -10 10 -10 m-200 10 v36 m190 0 v-36 m-190 36 q0 10 10 10 m170 0 q10 0 10 -10 m-160 10 h4 m122 0 h4 m-150 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m130 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-130 0 h4 m8 0 h4 m0 0 h114 m43 -28 h-3"/> + <polygon points="239 10 247 6 247 14"/> + <polygon points="239 10 231 6 231 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#constraint-name-list" title="constraint_name_list" shape="rect">constraint_name_list</a></div> + <div>         ::= 'ALL'</div> + <div>           | <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> ( ',' <a href="#schema-qualified-name" title="schema_qualified_name" shape="rect">schema_qualified_name</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-constraints-mode-statement" title="set-constraints-mode-statement">set-constraints-mode-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + savepoint_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="211" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SAVEPOINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#savepoint-specifier" xlink:title="savepoint_specifier" shape="rect"> + <rect x="91" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="13">savepoint_specifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m60 0 h4 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="201 10 209 6 209 14"/> + <polygon points="201 10 193 6 193 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#savepoint-statement" title="savepoint_statement" shape="rect">savepoint_statement</a></div> + <div>         ::= 'SAVEPOINT' <a href="#savepoint-specifier" title="savepoint_specifier" shape="rect">savepoint_specifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-transaction-statement" title="sql-transaction-statement">sql-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + savepoint_specifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="93" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="23" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="83 10 91 6 91 14"/> + <polygon points="83 10 75 6 75 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#savepoint-specifier" title="savepoint_specifier" shape="rect">savepoint_specifier</a></div> + <div>         ::= <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#release-savepoint-statement" title="release-savepoint-statement">release-savepoint-statement</a></li><li><a href="#savepoint-clause" title="savepoint-clause">savepoint-clause</a></li><li><a href="#savepoint-statement" title="savepoint-statement">savepoint-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + release_savepoint_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">RELEASE</text> + <rect x="77" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="13">SAVEPOINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#savepoint-specifier" xlink:title="savepoint_specifier" shape="rect"> + <rect x="145" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="13">savepoint_specifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="255 10 263 6 263 14"/> + <polygon points="255 10 247 6 247 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#release-savepoint-statement" title="release_savepoint_statement" shape="rect">release_savepoint_statement</a></div> + <div>         ::= 'RELEASE' 'SAVEPOINT' <a href="#savepoint-specifier" title="savepoint_specifier" shape="rect">savepoint_specifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-transaction-statement" title="sql-transaction-statement">sql-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + commit_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="375" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">COMMIT</text> + <rect x="99" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="34">WORK</text> + <rect x="187" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="34">AND</text> + <rect x="243" y="43" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="55">NO</text> + <rect x="293" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="297" y="34">CHAIN</text> + <path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m20 0 h10 m0 0 h38 m-68 0 h20 m48 0 h20 m-88 0 q10 0 10 10 m68 0 q0 -10 10 -10 m-78 10 v1 m68 0 v-1 m-68 1 q0 10 10 10 m48 0 q10 0 10 -10 m-58 10 h4 m40 0 h4 m40 -21 h10 m0 0 h142 m-172 0 h20 m152 0 h20 m-192 0 q10 0 10 10 m172 0 q0 -10 10 -10 m-182 10 v1 m172 0 v-1 m-172 1 q0 10 10 10 m152 0 q10 0 10 -10 m-162 10 h4 m28 0 h4 m20 0 h10 m0 0 h20 m-50 0 h20 m30 0 h20 m-70 0 q10 0 10 10 m50 0 q0 -10 10 -10 m-60 10 v1 m50 0 v-1 m-50 1 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m22 0 h4 m20 -21 h4 m38 0 h4 m23 -21 h-3"/> + <polygon points="365 10 373 6 373 14"/> + <polygon points="365 10 357 6 357 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#commit-statement" title="commit_statement" shape="rect">commit_statement</a></div> + <div>         ::= 'COMMIT' 'WORK'? ( 'AND' 'NO'? 'CHAIN' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-transaction-statement" title="sql-transaction-statement">sql-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + rollback_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="519" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ROLLBACK</text> + <rect x="107" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="34">WORK</text> + <rect x="195" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="34">AND</text> + <rect x="251" y="43" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="255" y="55">NO</text> + <rect x="301" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="305" y="34">CHAIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#savepoint-clause" xlink:title="savepoint_clause" shape="rect"> + <rect x="387" y="22" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="391" y="34">savepoint_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m20 0 h10 m0 0 h38 m-68 0 h20 m48 0 h20 m-88 0 q10 0 10 10 m68 0 q0 -10 10 -10 m-78 10 v1 m68 0 v-1 m-68 1 q0 10 10 10 m48 0 q10 0 10 -10 m-58 10 h4 m40 0 h4 m40 -21 h10 m0 0 h142 m-172 0 h20 m152 0 h20 m-192 0 q10 0 10 10 m172 0 q0 -10 10 -10 m-182 10 v1 m172 0 v-1 m-172 1 q0 10 10 10 m152 0 q10 0 10 -10 m-162 10 h4 m28 0 h4 m20 0 h10 m0 0 h20 m-50 0 h20 m30 0 h20 m-70 0 q10 0 10 10 m50 0 q0 -10 10 -10 m-60 10 v1 m50 0 v-1 m-50 1 q0 10 10 10 m30 0 q10 0 10 -10 m-40 10 h4 m22 0 h4 m20 -21 h4 m38 0 h4 m40 -21 h10 m0 0 h86 m-116 0 h20 m96 0 h20 m-136 0 q10 0 10 10 m116 0 q0 -10 10 -10 m-126 10 v1 m116 0 v-1 m-116 1 q0 10 10 10 m96 0 q10 0 10 -10 m-106 10 h4 m88 0 h4 m23 -21 h-3"/> + <polygon points="509 10 517 6 517 14"/> + <polygon points="509 10 501 6 501 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#rollback-statement" title="rollback_statement" shape="rect">rollback_statement</a></div> + <div>         ::= 'ROLLBACK' 'WORK'? ( 'AND' 'NO'? 'CHAIN' )? <a href="#savepoint-clause" title="savepoint_clause" shape="rect">savepoint_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-transaction-statement" title="sql-transaction-statement">sql-transaction-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + savepoint_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="239" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TO</text> + <rect x="51" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="55" y="13">SAVEPOINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#savepoint-specifier" xlink:title="savepoint_specifier" shape="rect"> + <rect x="119" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="13">savepoint_specifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m20 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="229 10 237 6 237 14"/> + <polygon points="229 10 221 6 221 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#savepoint-clause" title="savepoint_clause" shape="rect">savepoint_clause</a></div> + <div>         ::= 'TO' 'SAVEPOINT' <a href="#savepoint-specifier" title="savepoint_specifier" shape="rect">savepoint_specifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#rollback-statement" title="rollback-statement">rollback-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + connect_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="227" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CONNECT</text> + <rect x="83" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#connection-target" xlink:title="connection_target" shape="rect"> + <rect x="111" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">connection_target</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="217 10 225 6 225 14"/> + <polygon points="217 10 209 6 209 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#connect-statement" title="connect_statement" shape="rect">connect_statement</a></div> + <div>         ::= 'CONNECT' 'TO' <a href="#connection-target" title="connection_target" shape="rect">connection_target</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-connection-statement" title="sql-connection-statement">sql-connection-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + connection_target +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="635" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="43" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">simple_value_specification</text></a><rect x="199" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="34">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="227" y="22" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="231" y="34">simple_value_specification</text></a><rect x="403" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="407" y="34">USER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="443" y="22" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="447" y="34">simple_value_specification</text></a><rect x="43" y="50" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">DEFAULT</text> + <path class="line" d="m17 10 h2 m20 0 h4 m128 0 h4 m20 0 h10 m0 0 h154 m-184 0 h20 m164 0 h20 m-204 0 q10 0 10 10 m184 0 q0 -10 10 -10 m-194 10 v1 m184 0 v-1 m-184 1 q0 10 10 10 m164 0 q10 0 10 -10 m-174 10 h4 m20 0 h4 m0 0 h4 m128 0 h4 m40 -21 h10 m0 0 h166 m-196 0 h20 m176 0 h20 m-216 0 q10 0 10 10 m196 0 q0 -10 10 -10 m-206 10 v1 m196 0 v-1 m-196 1 q0 10 10 10 m176 0 q10 0 10 -10 m-186 10 h4 m32 0 h4 m0 0 h4 m128 0 h4 m-556 -21 h20 m556 0 h20 m-596 0 q10 0 10 10 m576 0 q0 -10 10 -10 m-586 10 v29 m576 0 v-29 m-576 29 q0 10 10 10 m556 0 q10 0 10 -10 m-566 10 h4 m48 0 h4 m0 0 h500 m23 -49 h-3"/> + <polygon points="625 10 633 6 633 14"/> + <polygon points="625 10 617 6 617 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#connection-target" title="connection_target" shape="rect">connection_target</a></div> + <div>         ::= <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> ( 'AS' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> )? ( 'USER' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> )?</div> + <div>           | 'DEFAULT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#connect-statement" title="connect-statement">connect-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_connection_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">CONNECTION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#connection-object" xlink:title="connection_object" shape="rect"> + <rect x="133" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">connection_object</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m70 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="239 10 247 6 247 14"/> + <polygon points="239 10 231 6 231 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-connection-statement" title="set_connection_statement" shape="rect">set_connection_statement</a></div> + <div>         ::= 'SET' 'CONNECTION' <a href="#connection-object" title="connection_object" shape="rect">connection_object</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-connection-statement" title="sql-connection-statement">sql-connection-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + connection_object +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">DEFAULT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="43" y="29" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">simple_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m48 0 h4 m0 0 h80 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m128 0 h4 m23 -28 h-3"/> + <polygon points="205 10 213 6 213 14"/> + <polygon points="205 10 197 6 197 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#connection-object" title="connection_object" shape="rect">connection_object</a></div> + <div>         ::= 'DEFAULT'</div> + <div>           | <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#disconnect-object" title="disconnect-object">disconnect-object</a></li><li><a href="#set-connection-statement" title="set-connection-statement">set-connection-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + disconnect_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DISCONNECT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#disconnect-object" xlink:title="disconnect_object" shape="rect"> + <rect x="99" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">disconnect_object</text></a><path class="line" d="m17 10 h2 m0 0 h4 m68 0 h4 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#disconnect-statement" title="disconnect_statement" shape="rect">disconnect_statement</a></div> + <div>         ::= 'DISCONNECT' <a href="#disconnect-object" title="disconnect_object" shape="rect">disconnect_object</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-connection-statement" title="sql-connection-statement">sql-connection-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + disconnect_object +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#connection-object" xlink:title="connection_object" shape="rect"> + <rect x="43" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">connection_object</text></a><rect x="43" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">ALL</text> + <rect x="43" y="57" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">CURRENT</text> + <path class="line" d="m17 10 h2 m20 0 h4 m92 0 h4 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m24 0 h4 m0 0 h68 m-110 -10 v20 m120 0 v-20 m-120 20 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m50 0 h4 m0 0 h42 m23 -56 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#disconnect-object" title="disconnect_object" shape="rect">disconnect_object</a></div> + <div>         ::= <a href="#connection-object" title="connection_object" shape="rect">connection_object</a></div> + <div>           | 'ALL'</div> + <div>           | 'CURRENT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#disconnect-statement" title="disconnect-statement">disconnect-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_session_characteristics_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="387" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">SESSION</text> + <rect x="113" y="1" width="92" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="13">CHARACTERISTICS</text> + <rect x="213" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#session-characteristic-list" xlink:title="session_characteristic_list" shape="rect"> + <rect x="241" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="13">session_characteristic_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m92 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="377 10 385 6 385 14"/> + <polygon points="377 10 369 6 369 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-session-characteristics-statement" title="set_session_characteristics_statement" shape="rect">set_session_characteristics_statement</a></div> + <div>         ::= 'SET' 'SESSION' 'CHARACTERISTICS' 'AS' <a href="#session-characteristic-list" title="session_characteristic_list" shape="rect">session_characteristic_list</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + session_characteristic_list +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#session-characteristic" xlink:title="session_characteristic" shape="rect"> + <rect x="43" y="29" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">session_characteristic</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m106 0 h4 m-134 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m114 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-114 0 h4 m8 0 h4 m0 0 h98 m23 28 h-3"/> + <polygon points="183 38 191 34 191 42"/> + <polygon points="183 38 175 34 175 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#session-characteristic-list" title="session_characteristic_list" shape="rect">session_characteristic_list</a></div> + <div>         ::= <a href="#session-characteristic" title="session_characteristic" shape="rect">session_characteristic</a> ( ',' <a href="#session-characteristic" title="session_characteristic" shape="rect">session_characteristic</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-session-characteristics-statement" title="set-session-characteristics-statement">set-session-characteristics-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + session_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#session-transaction-characteristics" xlink:title="session_transaction_characteristics" shape="rect"> + <rect x="23" y="1" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">session_transaction_characteristics</text></a><path class="line" d="m17 10 h2 m0 0 h4 m166 0 h4 m3 0 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#session-characteristic" title="session_characteristic" shape="rect">session_characteristic</a></div> + <div>         ::= <a href="#session-transaction-characteristics" title="session_transaction_characteristics" shape="rect">session_transaction_characteristics</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#session-characteristic-list" title="session-characteristic-list">session-characteristic-list</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + session_transaction_characteristics +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">TRANSACTION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transaction-mode" xlink:title="transaction_mode" shape="rect"> + <rect x="125" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="41">transaction_mode</text></a><rect x="125" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m74 0 h4 m20 0 h4 m92 0 h4 m-120 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m100 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-100 0 h4 m8 0 h4 m0 0 h84 m23 28 h-3"/> + <polygon points="251 38 259 34 259 42"/> + <polygon points="251 38 243 34 243 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#session-transaction-characteristics" title="session_transaction_characteristics" shape="rect">session_transaction_characteristics</a></div> + <div>         ::= 'TRANSACTION' <a href="#transaction-mode" title="transaction_mode" shape="rect">transaction_mode</a> ( ',' <a href="#transaction-mode" title="transaction_mode" shape="rect">transaction_mode</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#session-characteristic" title="session-characteristic">session-characteristic</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_session_user_identifier_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="323" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">SESSION</text> + <rect x="113" y="1" width="86" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="13">AUTHORIZATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-specification" xlink:title="value_specification" shape="rect"> + <rect x="207" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="13">value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="313 10 321 6 321 14"/> + <polygon points="313 10 305 6 305 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-session-user-identifier-statement" title="set_session_user_identifier_statement" shape="rect">set_session_user_identifier_statement</a></div> + <div>         ::= 'SET' 'SESSION' 'AUTHORIZATION' <a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_role_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">ROLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#role-specification" xlink:title="role_specification" shape="rect"> + <rect x="95" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="13">role_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m84 0 h4 m3 0 h-3"/> + <polygon points="193 10 201 6 201 14"/> + <polygon points="193 10 185 6 185 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-role-statement" title="set_role_statement" shape="rect">set_role_statement</a></div> + <div>         ::= 'SET' 'ROLE' <a href="#role-specification" title="role_specification" shape="rect">role_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + role_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-specification" xlink:title="value_specification" shape="rect"> + <rect x="43" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">value_specification</text></a><rect x="43" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NONE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m92 0 h4 m-120 0 h20 m100 0 h20 m-140 0 q10 0 10 10 m120 0 q0 -10 10 -10 m-130 10 v8 m120 0 v-8 m-120 8 q0 10 10 10 m100 0 q10 0 10 -10 m-110 10 h4 m34 0 h4 m0 0 h58 m23 -28 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#role-specification" title="role_specification" shape="rect">role_specification</a></div> + <div>         ::= <a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div> + <div>           | 'NONE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-role-statement" title="set-role-statement">set-role-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_local_time_zone_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="267" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="55" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">TIME</text> + <rect x="93" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">ZONE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-time-zone-value" xlink:title="set_time_zone_value" shape="rect"> + <rect x="135" y="1" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">set_time_zone_value</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m108 0 h4 m3 0 h-3"/> + <polygon points="257 10 265 6 265 14"/> + <polygon points="257 10 249 6 249 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-local-time-zone-statement" title="set_local_time_zone_statement" shape="rect">set_local_time_zone_statement</a></div> + <div>         ::= 'SET' 'TIME' 'ZONE' <a href="#set-time-zone-value" title="set_time_zone_value" shape="rect">set_time_zone_value</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_time_zone_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#interval-value-expression" xlink:title="interval_value_expression" shape="rect"> + <rect x="43" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">interval_value_expression</text></a><rect x="43" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LOCAL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m128 0 h4 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v8 m156 0 v-8 m-156 8 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m38 0 h4 m0 0 h90 m23 -28 h-3"/> + <polygon points="205 10 213 6 213 14"/> + <polygon points="205 10 197 6 197 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-time-zone-value" title="set_time_zone_value" shape="rect">set_time_zone_value</a></div> + <div>         ::= <a href="#interval-value-expression" title="interval_value_expression" shape="rect">interval_value_expression</a></div> + <div>           | 'LOCAL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-local-time-zone-statement" title="set-local-time-zone-statement">set-local-time-zone-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_catalog_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#catalog-name-characteristic" xlink:title="catalog_name_characteristic" shape="rect"> + <rect x="55" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="59" y="13">catalog_name_characteristic</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m138 0 h4 m3 0 h-3"/> + <polygon points="207 10 215 6 215 14"/> + <polygon points="207 10 199 6 199 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-catalog-statement" title="set_catalog_statement" shape="rect">set_catalog_statement</a></div> + <div>         ::= 'SET' <a href="#catalog-name-characteristic" title="catalog_name_characteristic" shape="rect">catalog_name_characteristic</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + catalog_name_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CATALOG</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-specification" xlink:title="value_specification" shape="rect"> + <rect x="83" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="189 10 197 6 197 14"/> + <polygon points="189 10 181 6 181 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#catalog-name-characteristic" title="catalog_name_characteristic" shape="rect">catalog_name_characteristic</a></div> + <div>         ::= 'CATALOG' <a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-catalog-statement" title="set-catalog-statement">set-catalog-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_schema_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#schema-name-characteristic" xlink:title="schema_name_characteristic" shape="rect"> + <rect x="55" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="59" y="13">schema_name_characteristic</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m142 0 h4 m3 0 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-schema-statement" title="set_schema_statement" shape="rect">set_schema_statement</a></div> + <div>         ::= 'SET' <a href="#schema-name-characteristic" title="schema_name_characteristic" shape="rect">schema_name_characteristic</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + schema_name_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SCHEMA</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-specification" xlink:title="value_specification" shape="rect"> + <rect x="77" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="183 10 191 6 191 14"/> + <polygon points="183 10 175 6 175 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#schema-name-characteristic" title="schema_name_characteristic" shape="rect">schema_name_characteristic</a></div> + <div>         ::= 'SCHEMA' <a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-schema-statement" title="set-schema-statement">set-schema-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_names_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-name-characteristic" xlink:title="character_set_name_characteristic" shape="rect"> + <rect x="55" y="1" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="59" y="13">character_set_name_characteristic</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m168 0 h4 m3 0 h-3"/> + <polygon points="237 10 245 6 245 14"/> + <polygon points="237 10 229 6 229 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-names-statement" title="set_names_statement" shape="rect">set_names_statement</a></div> + <div>         ::= 'SET' <a href="#character-set-name-characteristic" title="character_set_name_characteristic" shape="rect">character_set_name_characteristic</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_set_name_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="187" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">NAMES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-specification" xlink:title="value_specification" shape="rect"> + <rect x="71" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="13">value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="177 10 185 6 185 14"/> + <polygon points="177 10 169 6 169 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-set-name-characteristic" title="character_set_name_characteristic" shape="rect">character_set_name_characteristic</a></div> + <div>         ::= 'NAMES' <a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-names-statement" title="set-names-statement">set-names-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_path_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="197" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-path-characteristic" xlink:title="SQL_path_characteristic" shape="rect"> + <rect x="55" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="59" y="13">SQL_path_characteristic</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m118 0 h4 m3 0 h-3"/> + <polygon points="187 10 195 6 195 14"/> + <polygon points="187 10 179 6 179 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-path-statement" title="set_path_statement" shape="rect">set_path_statement</a></div> + <div>         ::= 'SET' <a href="#sql-path-characteristic" title="SQL_path_characteristic" shape="rect">SQL_path_characteristic</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_path_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">PATH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-specification" xlink:title="value_specification" shape="rect"> + <rect x="63" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-path-characteristic" title="SQL_path_characteristic" shape="rect">SQL_path_characteristic</a></div> + <div>         ::= 'PATH' <a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-path-statement" title="set-path-statement">set-path-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_transform_group_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="229" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#transform-group-characteristic" xlink:title="transform_group_characteristic" shape="rect"> + <rect x="55" y="1" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="59" y="13">transform_group_characteristic</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m150 0 h4 m3 0 h-3"/> + <polygon points="219 10 227 6 227 14"/> + <polygon points="219 10 211 6 211 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-transform-group-statement" title="set_transform_group_statement" shape="rect">set_transform_group_statement</a></div> + <div>         ::= 'SET' <a href="#transform-group-characteristic" title="transform_group_characteristic" shape="rect">transform_group_characteristic</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + transform_group_characteristic +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="583" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">DEFAULT</text> + <rect x="99" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="13">TRANSFORM</text> + <rect x="173" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="13">GROUP</text> + <rect x="43" y="29" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">TRANSFORM</text> + <rect x="117" y="29" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="41">GROUP</text> + <rect x="167" y="29" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="171" y="41">FOR</text> + <rect x="201" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="41">TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#path-resolved-user-defined-type-name" xlink:title="path_resolved_user_defined_type_name" shape="rect"> + <rect x="239" y="29" width="200" height="18" class="nonterminal"/> + <text class="nonterminal" x="243" y="41">path_resolved_user_defined_type_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-specification" xlink:title="value_specification" shape="rect"> + <rect x="467" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="471" y="13">value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m48 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m42 0 h4 m0 0 h224 m-424 0 h20 m404 0 h20 m-444 0 q10 0 10 10 m424 0 q0 -10 10 -10 m-434 10 v8 m424 0 v-8 m-424 8 q0 10 10 10 m404 0 q10 0 10 -10 m-414 10 h4 m66 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m200 0 h4 m20 -28 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="573 10 581 6 581 14"/> + <polygon points="573 10 565 6 565 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#transform-group-characteristic" title="transform_group_characteristic" shape="rect">transform_group_characteristic</a></div> + <div>         ::= ( 'DEFAULT' 'TRANSFORM' 'GROUP' | 'TRANSFORM' 'GROUP' 'FOR' 'TYPE' <a href="#path-resolved-user-defined-type-name" title="path_resolved_user_defined_type_name" shape="rect">path_resolved_user_defined_type_name</a> ) <a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-transform-group-statement" title="set-transform-group-statement">set-transform-group-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_session_collation_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="521" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="75" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="13">COLLATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#collation-specification" xlink:title="collation_specification" shape="rect"> + <rect x="145" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="149" y="13">collation_specification</text></a><rect x="75" y="29" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="41">NO</text> + <rect x="105" y="29" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="41">COLLATION</text> + <rect x="297" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="301" y="34">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-set-specification-list" xlink:title="character_set_specification_list" shape="rect"> + <rect x="331" y="22" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="335" y="34">character_set_specification_list</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m20 0 h4 m62 0 h4 m0 0 h4 m104 0 h4 m-202 0 h20 m182 0 h20 m-222 0 q10 0 10 10 m202 0 q0 -10 10 -10 m-212 10 v8 m202 0 v-8 m-202 8 q0 10 10 10 m182 0 q10 0 10 -10 m-192 10 h4 m22 0 h4 m0 0 h4 m62 0 h4 m0 0 h82 m40 -28 h10 m0 0 h178 m-208 0 h20 m188 0 h20 m-228 0 q10 0 10 10 m208 0 q0 -10 10 -10 m-218 10 v1 m208 0 v-1 m-208 1 q0 10 10 10 m188 0 q10 0 10 -10 m-198 10 h4 m26 0 h4 m0 0 h4 m146 0 h4 m23 -21 h-3"/> + <polygon points="511 10 519 6 519 14"/> + <polygon points="511 10 503 6 503 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-session-collation-statement" title="set_session_collation_statement" shape="rect">set_session_collation_statement</a></div> + <div>         ::= 'SET' ( 'COLLATION' <a href="#collation-specification" title="collation_specification" shape="rect">collation_specification</a> | 'NO' 'COLLATION' ) ( 'FOR' <a href="#character-set-specification-list" title="character_set_specification_list" shape="rect">character_set_specification_list</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-session-statement" title="sql-session-statement">sql-session-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + collation_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-specification" xlink:title="value_specification" shape="rect"> + <rect x="23" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m92 0 h4 m3 0 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#collation-specification" title="collation_specification" shape="rect">collation_specification</a></div> + <div>         ::= <a href="#value-specification" title="value_specification" shape="rect">value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-session-collation-statement" title="set-session-collation-statement">set-session-collation-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + allocate_descriptor_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="599" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALLOCATE</text> + <rect x="105" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="34">SQL</text> + <rect x="159" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="163" y="13">DESCRIPTOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#descriptor-name" xlink:title="descriptor_name" shape="rect"> + <rect x="235" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="239" y="13">descriptor_name</text></a><rect x="349" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="353" y="34">WITH</text> + <rect x="391" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="395" y="34">MAX</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="427" y="22" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="431" y="34">simple_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m20 0 h10 m0 0 h24 m-54 0 h20 m34 0 h20 m-74 0 q10 0 10 10 m54 0 q0 -10 10 -10 m-64 10 v1 m54 0 v-1 m-54 1 q0 10 10 10 m34 0 q10 0 10 -10 m-44 10 h4 m26 0 h4 m20 -21 h4 m68 0 h4 m0 0 h4 m86 0 h4 m20 0 h10 m0 0 h204 m-234 0 h20 m214 0 h20 m-254 0 q10 0 10 10 m234 0 q0 -10 10 -10 m-244 10 v1 m234 0 v-1 m-234 1 q0 10 10 10 m214 0 q10 0 10 -10 m-224 10 h4 m34 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m128 0 h4 m23 -21 h-3"/> + <polygon points="589 10 597 6 597 14"/> + <polygon points="589 10 581 6 581 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#allocate-descriptor-statement" title="allocate_descriptor_statement" shape="rect">allocate_descriptor_statement</a></div> + <div>         ::= 'ALLOCATE' 'SQL'? 'DESCRIPTOR' <a href="#descriptor-name" title="descriptor_name" shape="rect">descriptor_name</a> ( 'WITH' 'MAX' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-descriptor-statement" title="sql-descriptor-statement">sql-descriptor-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + deallocate_descriptor_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="357" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DEALLOCATE</text> + <rect x="117" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="34">SQL</text> + <rect x="171" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="175" y="13">DESCRIPTOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#descriptor-name" xlink:title="descriptor_name" shape="rect"> + <rect x="247" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="251" y="13">descriptor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m66 0 h4 m20 0 h10 m0 0 h24 m-54 0 h20 m34 0 h20 m-74 0 q10 0 10 10 m54 0 q0 -10 10 -10 m-64 10 v1 m54 0 v-1 m-54 1 q0 10 10 10 m34 0 q10 0 10 -10 m-44 10 h4 m26 0 h4 m20 -21 h4 m68 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="347 10 355 6 355 14"/> + <polygon points="347 10 339 6 339 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#deallocate-descriptor-statement" title="deallocate_descriptor_statement" shape="rect">deallocate_descriptor_statement</a></div> + <div>         ::= 'DEALLOCATE' 'SQL'? 'DESCRIPTOR' <a href="#descriptor-name" title="descriptor_name" shape="rect">descriptor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-descriptor-statement" title="sql-descriptor-statement">sql-descriptor-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + get_descriptor_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="453" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GET</text> + <rect x="75" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="34">SQL</text> + <rect x="129" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="13">DESCRIPTOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#descriptor-name" xlink:title="descriptor_name" shape="rect"> + <rect x="205" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="209" y="13">descriptor_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#get-descriptor-information" xlink:title="get_descriptor_information" shape="rect"> + <rect x="299" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="303" y="13">get_descriptor_information</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m20 0 h10 m0 0 h24 m-54 0 h20 m34 0 h20 m-74 0 q10 0 10 10 m54 0 q0 -10 10 -10 m-64 10 v1 m54 0 v-1 m-54 1 q0 10 10 10 m34 0 q10 0 10 -10 m-44 10 h4 m26 0 h4 m20 -21 h4 m68 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="443 10 451 6 451 14"/> + <polygon points="443 10 435 6 435 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#get-descriptor-statement" title="get_descriptor_statement" shape="rect">get_descriptor_statement</a></div> + <div>         ::= 'GET' 'SQL'? 'DESCRIPTOR' <a href="#descriptor-name" title="descriptor_name" shape="rect">descriptor_name</a> <a href="#get-descriptor-information" title="get_descriptor_information" shape="rect">get_descriptor_information</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-descriptor-statement" title="sql-descriptor-statement">sql-descriptor-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + get_descriptor_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="413" height="105"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#get-header-information" xlink:title="get_header_information" shape="rect"> + <rect x="63" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">get_header_information</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="43" y="85" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">VALUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="87" y="85" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="97">simple_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#get-item-information" xlink:title="get_item_information" shape="rect"> + <rect x="243" y="85" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="247" y="97">get_item_information</text></a><rect x="243" y="57" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="69">,</text> + <path class="line" d="m17 38 h2 m40 0 h4 m120 0 h4 m-148 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m128 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-128 0 h4 m8 0 h4 m0 0 h112 m20 28 h166 m-354 0 h20 m334 0 h20 m-374 0 q10 0 10 10 m354 0 q0 -10 10 -10 m-364 10 v36 m354 0 v-36 m-354 36 q0 10 10 10 m334 0 q10 0 10 -10 m-344 10 h4 m36 0 h4 m0 0 h4 m128 0 h4 m20 0 h4 m106 0 h4 m-134 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m114 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-114 0 h4 m8 0 h4 m0 0 h98 m43 -28 h-3"/> + <polygon points="403 38 411 34 411 42"/> + <polygon points="403 38 395 34 395 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#get-descriptor-information" title="get_descriptor_information" shape="rect">get_descriptor_information</a></div> + <div>         ::= <a href="#get-header-information" title="get_header_information" shape="rect">get_header_information</a> ( ',' <a href="#get-header-information" title="get_header_information" shape="rect">get_header_information</a> )*</div> + <div>           | 'VALUE' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> <a href="#get-item-information" title="get_item_information" shape="rect">get_item_information</a> ( ',' <a href="#get-item-information" title="get_item_information" shape="rect">get_item_information</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#get-descriptor-statement" title="get-descriptor-statement">get-descriptor-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + get_header_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="321" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-target-specification-1" xlink:title="simple_target_specification_1" shape="rect"> + <rect x="23" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_target_specification_1</text></a><rect x="173" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="13">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#header-item-name" xlink:title="header_item_name" shape="rect"> + <rect x="195" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="199" y="13">header_item_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m142 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m102 0 h4 m3 0 h-3"/> + <polygon points="311 10 319 6 319 14"/> + <polygon points="311 10 303 6 303 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#get-header-information" title="get_header_information" shape="rect">get_header_information</a></div> + <div>         ::= <a href="#simple-target-specification-1" title="simple_target_specification_1" shape="rect">simple_target_specification_1</a> '=' <a href="#header-item-name" title="header_item_name" shape="rect">header_item_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#get-descriptor-information" title="get-descriptor-information">get-descriptor-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + header_item_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="225" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">COUNT</text> + <rect x="43" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">KEY_TYPE</text> + <rect x="43" y="57" width="106" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">DYNAMIC_FUNCTION</text> + <rect x="43" y="85" width="138" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">DYNAMIC_FUNCTION_CODE</text> + <rect x="43" y="113" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">TOP_LEVEL_COUNT</text> + <path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h98 m-166 0 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m52 0 h4 m0 0 h86 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m106 0 h4 m0 0 h32 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m138 0 h4 m-156 -10 v20 m166 0 v-20 m-166 20 v8 m166 0 v-8 m-166 8 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m98 0 h4 m0 0 h40 m23 -112 h-3"/> + <polygon points="215 10 223 6 223 14"/> + <polygon points="215 10 207 6 207 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#header-item-name" title="header_item_name" shape="rect">header_item_name</a></div> + <div>         ::= 'COUNT'</div> + <div>           | 'KEY_TYPE'</div> + <div>           | 'DYNAMIC_FUNCTION'</div> + <div>           | 'DYNAMIC_FUNCTION_CODE'</div> + <div>           | 'TOP_LEVEL_COUNT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#get-header-information" title="get-header-information">get-header-information</a></li><li><a href="#set-header-information" title="set-header-information">set-header-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + get_item_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="331" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-target-specification-2" xlink:title="simple_target_specification_2" shape="rect"> + <rect x="23" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_target_specification_2</text></a><rect x="173" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="13">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#descriptor-item-name" xlink:title="descriptor_item_name" shape="rect"> + <rect x="195" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="199" y="13">descriptor_item_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m142 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m112 0 h4 m3 0 h-3"/> + <polygon points="321 10 329 6 329 14"/> + <polygon points="321 10 313 6 313 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#get-item-information" title="get_item_information" shape="rect">get_item_information</a></div> + <div>         ::= <a href="#simple-target-specification-2" title="simple_target_specification_2" shape="rect">simple_target_specification_2</a> '=' <a href="#descriptor-item-name" title="descriptor_item_name" shape="rect">descriptor_item_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#get-descriptor-information" title="get-descriptor-information">get-descriptor-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + simple_target_specification_1 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-target-specification" xlink:title="simple_target_specification" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_target_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-target-specification-1" title="simple_target_specification_1" shape="rect">simple_target_specification_1</a></div> + <div>         ::= <a href="#simple-target-specification" title="simple_target_specification" shape="rect">simple_target_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#get-header-information" title="get-header-information">get-header-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + simple_target_specification_2 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-target-specification" xlink:title="simple_target_specification" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_target_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-target-specification-2" title="simple_target_specification_2" shape="rect">simple_target_specification_2</a></div> + <div>         ::= <a href="#simple-target-specification" title="simple_target_specification" shape="rect">simple_target_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#get-item-information" title="get-item-information">get-item-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + descriptor_item_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="1029"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CARDINALITY</text> + <rect x="43" y="29" width="134" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CHARACTER_SET_CATALOG</text> + <rect x="43" y="57" width="118" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">CHARACTER_SET_NAME</text> + <rect x="43" y="85" width="130" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">CHARACTER_SET_SCHEMA</text> + <rect x="43" y="113" width="112" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">COLLATION_CATALOG</text> + <rect x="43" y="141" width="94" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">COLLATION_NAME</text> + <rect x="43" y="169" width="106" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">COLLATION_SCHEMA</text> + <rect x="43" y="197" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">DATA</text> + <rect x="43" y="225" width="136" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">DATETIME_INTERVAL_CODE</text> + <rect x="43" y="253" width="162" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">DATETIME_INTERVAL_PRECISION</text> + <rect x="43" y="281" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">DEGREE</text> + <rect x="43" y="309" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">INDICATOR</text> + <rect x="43" y="337" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="349">KEY_MEMBER</text> + <rect x="43" y="365" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="377">LENGTH</text> + <rect x="43" y="393" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="405">LEVEL</text> + <rect x="43" y="421" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="433">NAME</text> + <rect x="43" y="449" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="461">NULLABLE</text> + <rect x="43" y="477" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="489">OCTET_LENGTH</text> + <rect x="43" y="505" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="517">PARAMETER_MODE</text> + <rect x="43" y="533" width="166" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="545">PARAMETER_ORDINAL_POSITION</text> + <rect x="43" y="561" width="160" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="573">PARAMETER_SPECIFIC_CATALOG</text> + <rect x="43" y="589" width="144" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="601">PARAMETER_SPECIFIC_NAME</text> + <rect x="43" y="617" width="156" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="629">PARAMETER_SPECIFIC_SCHEMA</text> + <rect x="43" y="645" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="657">PRECISION</text> + <rect x="43" y="673" width="124" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="685">RETURNED_CARDINALITY</text> + <rect x="43" y="701" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="713">RETURNED_LENGTH</text> + <rect x="43" y="729" width="134" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="741">RETURNED_OCTET_LENGTH</text> + <rect x="43" y="757" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="769">SCALE</text> + <rect x="43" y="785" width="88" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="797">SCOPE_CATALOG</text> + <rect x="43" y="813" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="825">SCOPE_NAME</text> + <rect x="43" y="841" width="84" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="853">SCOPE_SCHEMA</text> + <rect x="43" y="869" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="881">TYPE</text> + <rect x="43" y="897" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="909">UNNAMED</text> + <rect x="43" y="925" width="156" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="937">USER_DEFINED_TYPE_CATALOG</text> + <rect x="43" y="953" width="138" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="965">USER_DEFINED_TYPE_NAME</text> + <rect x="43" y="981" width="150" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="993">USER_DEFINED_TYPE_SCHEMA</text> + <rect x="43" y="1009" width="138" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1021">USER_DEFINED_TYPE_CODE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m70 0 h4 m0 0 h96 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m134 0 h4 m0 0 h32 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m118 0 h4 m0 0 h48 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m130 0 h4 m0 0 h36 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m112 0 h4 m0 0 h54 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m94 0 h4 m0 0 h72 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m106 0 h4 m0 0 h60 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m32 0 h4 m0 0 h134 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m136 0 h4 m0 0 h30 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m162 0 h4 m0 0 h4 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m44 0 h4 m0 0 h122 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m60 0 h4 m0 0 h106 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m70 0 h4 m0 0 h96 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m44 0 h4 m0 0 h122 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m34 0 h4 m0 0 h132 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m34 0 h4 m0 0 h132 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m54 0 h4 m0 0 h112 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m80 0 h4 m0 0 h86 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m98 0 h4 m0 0 h68 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m166 0 h4 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m160 0 h4 m0 0 h6 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m144 0 h4 m0 0 h22 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m156 0 h4 m0 0 h10 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m60 0 h4 m0 0 h106 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m124 0 h4 m0 0 h42 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m98 0 h4 m0 0 h68 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m134 0 h4 m0 0 h32 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m36 0 h4 m0 0 h130 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m88 0 h4 m0 0 h78 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m72 0 h4 m0 0 h94 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m84 0 h4 m0 0 h82 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m30 0 h4 m0 0 h136 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m56 0 h4 m0 0 h110 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m156 0 h4 m0 0 h10 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m138 0 h4 m0 0 h28 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m150 0 h4 m0 0 h16 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m138 0 h4 m0 0 h28 m23 -1008 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#descriptor-item-name" title="descriptor_item_name" shape="rect">descriptor_item_name</a></div> + <div>         ::= 'CARDINALITY'</div> + <div>           | 'CHARACTER_SET_CATALOG'</div> + <div>           | 'CHARACTER_SET_NAME'</div> + <div>           | 'CHARACTER_SET_SCHEMA'</div> + <div>           | 'COLLATION_CATALOG'</div> + <div>           | 'COLLATION_NAME'</div> + <div>           | 'COLLATION_SCHEMA'</div> + <div>           | 'DATA'</div> + <div>           | 'DATETIME_INTERVAL_CODE'</div> + <div>           | 'DATETIME_INTERVAL_PRECISION'</div> + <div>           | 'DEGREE'</div> + <div>           | 'INDICATOR'</div> + <div>           | 'KEY_MEMBER'</div> + <div>           | 'LENGTH'</div> + <div>           | 'LEVEL'</div> + <div>           | 'NAME'</div> + <div>           | 'NULLABLE'</div> + <div>           | 'OCTET_LENGTH'</div> + <div>           | 'PARAMETER_MODE'</div> + <div>           | 'PARAMETER_ORDINAL_POSITION'</div> + <div>           | 'PARAMETER_SPECIFIC_CATALOG'</div> + <div>           | 'PARAMETER_SPECIFIC_NAME'</div> + <div>           | 'PARAMETER_SPECIFIC_SCHEMA'</div> + <div>           | 'PRECISION'</div> + <div>           | 'RETURNED_CARDINALITY'</div> + <div>           | 'RETURNED_LENGTH'</div> + <div>           | 'RETURNED_OCTET_LENGTH'</div> + <div>           | 'SCALE'</div> + <div>           | 'SCOPE_CATALOG'</div> + <div>           | 'SCOPE_NAME'</div> + <div>           | 'SCOPE_SCHEMA'</div> + <div>           | 'TYPE'</div> + <div>           | 'UNNAMED'</div> + <div>           | 'USER_DEFINED_TYPE_CATALOG'</div> + <div>           | 'USER_DEFINED_TYPE_NAME'</div> + <div>           | 'USER_DEFINED_TYPE_SCHEMA'</div> + <div>           | 'USER_DEFINED_TYPE_CODE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#get-item-information" title="get-item-information">get-item-information</a></li><li><a href="#set-item-information" title="set-item-information">set-item-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_descriptor_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="453" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SET</text> + <rect x="75" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="34">SQL</text> + <rect x="129" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="13">DESCRIPTOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#descriptor-name" xlink:title="descriptor_name" shape="rect"> + <rect x="205" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="209" y="13">descriptor_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-descriptor-information" xlink:title="set_descriptor_information" shape="rect"> + <rect x="299" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="303" y="13">set_descriptor_information</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m20 0 h10 m0 0 h24 m-54 0 h20 m34 0 h20 m-74 0 q10 0 10 10 m54 0 q0 -10 10 -10 m-64 10 v1 m54 0 v-1 m-54 1 q0 10 10 10 m34 0 q10 0 10 -10 m-44 10 h4 m26 0 h4 m20 -21 h4 m68 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="443 10 451 6 451 14"/> + <polygon points="443 10 435 6 435 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-descriptor-statement" title="set_descriptor_statement" shape="rect">set_descriptor_statement</a></div> + <div>         ::= 'SET' 'SQL'? 'DESCRIPTOR' <a href="#descriptor-name" title="descriptor_name" shape="rect">descriptor_name</a> <a href="#set-descriptor-information" title="set_descriptor_information" shape="rect">set_descriptor_information</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-descriptor-statement" title="sql-descriptor-statement">sql-descriptor-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_descriptor_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="413" height="105"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-header-information" xlink:title="set_header_information" shape="rect"> + <rect x="63" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">set_header_information</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="43" y="85" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">VALUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="87" y="85" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="97">simple_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-item-information" xlink:title="set_item_information" shape="rect"> + <rect x="243" y="85" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="247" y="97">set_item_information</text></a><rect x="243" y="57" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="69">,</text> + <path class="line" d="m17 38 h2 m40 0 h4 m120 0 h4 m-148 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m128 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-128 0 h4 m8 0 h4 m0 0 h112 m20 28 h166 m-354 0 h20 m334 0 h20 m-374 0 q10 0 10 10 m354 0 q0 -10 10 -10 m-364 10 v36 m354 0 v-36 m-354 36 q0 10 10 10 m334 0 q10 0 10 -10 m-344 10 h4 m36 0 h4 m0 0 h4 m128 0 h4 m20 0 h4 m106 0 h4 m-134 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m114 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-114 0 h4 m8 0 h4 m0 0 h98 m43 -28 h-3"/> + <polygon points="403 38 411 34 411 42"/> + <polygon points="403 38 395 34 395 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-descriptor-information" title="set_descriptor_information" shape="rect">set_descriptor_information</a></div> + <div>         ::= <a href="#set-header-information" title="set_header_information" shape="rect">set_header_information</a> ( ',' <a href="#set-header-information" title="set_header_information" shape="rect">set_header_information</a> )*</div> + <div>           | 'VALUE' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> <a href="#set-item-information" title="set_item_information" shape="rect">set_item_information</a> ( ',' <a href="#set-item-information" title="set_item_information" shape="rect">set_item_information</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-descriptor-statement" title="set-descriptor-statement">set-descriptor-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_header_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="307" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#header-item-name" xlink:title="header_item_name" shape="rect"> + <rect x="23" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">header_item_name</text></a><rect x="133" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="13">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="155" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m102 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="297 10 305 6 305 14"/> + <polygon points="297 10 289 6 289 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-header-information" title="set_header_information" shape="rect">set_header_information</a></div> + <div>         ::= <a href="#header-item-name" title="header_item_name" shape="rect">header_item_name</a> '=' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-descriptor-information" title="set-descriptor-information">set-descriptor-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + set_item_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#descriptor-item-name" xlink:title="descriptor_item_name" shape="rect"> + <rect x="23" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">descriptor_item_name</text></a><rect x="143" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="13">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="165" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="169" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m112 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="307 10 315 6 315 14"/> + <polygon points="307 10 299 6 299 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#set-item-information" title="set_item_information" shape="rect">set_item_information</a></div> + <div>         ::= <a href="#descriptor-item-name" title="descriptor_item_name" shape="rect">descriptor_item_name</a> '=' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#set-descriptor-information" title="set-descriptor-information">set-descriptor-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + prepare_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="513" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">PREPARE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-identifier" xlink:title="SQL_identifier" shape="rect"> + <rect x="81" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="13">SQL_identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#attributes-specification" xlink:title="attributes_specification" shape="rect"> + <rect x="179" y="22" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="34">attributes_specification</text></a><rect x="317" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="321" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="361" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="365" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m0 0 h4 m70 0 h4 m20 0 h10 m0 0 h108 m-138 0 h20 m118 0 h20 m-158 0 q10 0 10 10 m138 0 q0 -10 10 -10 m-148 10 v1 m138 0 v-1 m-138 1 q0 10 10 10 m118 0 q10 0 10 -10 m-128 10 h4 m110 0 h4 m20 -21 h4 m36 0 h4 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="503 10 511 6 511 14"/> + <polygon points="503 10 495 6 495 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#prepare-statement" title="prepare_statement" shape="rect">prepare_statement</a></div> + <div>         ::= 'PREPARE' <a href="#sql-identifier" title="SQL_identifier" shape="rect">SQL_identifier</a> <a href="#attributes-specification" title="attributes_specification" shape="rect">attributes_specification</a>? 'FROM' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-statement" title="sql-dynamic-statement">sql-dynamic-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + attributes_specification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ATTRIBUTES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="95" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m64 0 h4 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="237 10 245 6 245 14"/> + <polygon points="237 10 229 6 229 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#attributes-specification" title="attributes_specification" shape="rect">attributes_specification</a></div> + <div>         ::= 'ATTRIBUTES' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#prepare-statement" title="prepare-statement">prepare-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="161"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-sql-data-statement" xlink:title="preparable_SQL_data_statement" shape="rect"> + <rect x="43" y="1" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">preparable_SQL_data_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-sql-schema-statement" xlink:title="preparable_SQL_schema_statement" shape="rect"> + <rect x="43" y="29" width="180" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">preparable_SQL_schema_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-sql-transaction-statement" xlink:title="preparable_SQL_transaction_statement" shape="rect"> + <rect x="43" y="57" width="192" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">preparable_SQL_transaction_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-sql-control-statement" xlink:title="preparable_SQL_control_statement" shape="rect"> + <rect x="43" y="85" width="172" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">preparable_SQL_control_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-sql-session-statement" xlink:title="preparable_SQL_session_statement" shape="rect"> + <rect x="43" y="113" width="178" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">preparable_SQL_session_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-implementation-defined-statement" xlink:title="preparable_implementation_defined_statement" shape="rect"> + <rect x="43" y="141" width="230" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">preparable_implementation_defined_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m164 0 h4 m0 0 h66 m-258 0 h20 m238 0 h20 m-278 0 q10 0 10 10 m258 0 q0 -10 10 -10 m-268 10 v8 m258 0 v-8 m-258 8 q0 10 10 10 m238 0 q10 0 10 -10 m-248 10 h4 m180 0 h4 m0 0 h50 m-248 -10 v20 m258 0 v-20 m-258 20 v8 m258 0 v-8 m-258 8 q0 10 10 10 m238 0 q10 0 10 -10 m-248 10 h4 m192 0 h4 m0 0 h38 m-248 -10 v20 m258 0 v-20 m-258 20 v8 m258 0 v-8 m-258 8 q0 10 10 10 m238 0 q10 0 10 -10 m-248 10 h4 m172 0 h4 m0 0 h58 m-248 -10 v20 m258 0 v-20 m-258 20 v8 m258 0 v-8 m-258 8 q0 10 10 10 m238 0 q10 0 10 -10 m-248 10 h4 m178 0 h4 m0 0 h52 m-248 -10 v20 m258 0 v-20 m-258 20 v8 m258 0 v-8 m-258 8 q0 10 10 10 m238 0 q10 0 10 -10 m-248 10 h4 m230 0 h4 m23 -140 h-3"/> + <polygon points="307 10 315 6 315 14"/> + <polygon points="307 10 299 6 299 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-statement" title="preparable_statement" shape="rect">preparable_statement</a></div> + <div>         ::= <a href="#preparable-sql-data-statement" title="preparable_SQL_data_statement" shape="rect">preparable_SQL_data_statement</a></div> + <div>           | <a href="#preparable-sql-schema-statement" title="preparable_SQL_schema_statement" shape="rect">preparable_SQL_schema_statement</a></div> + <div>           | <a href="#preparable-sql-transaction-statement" title="preparable_SQL_transaction_statement" shape="rect">preparable_SQL_transaction_statement</a></div> + <div>           | <a href="#preparable-sql-control-statement" title="preparable_SQL_control_statement" shape="rect">preparable_SQL_control_statement</a></div> + <div>           | <a href="#preparable-sql-session-statement" title="preparable_SQL_session_statement" shape="rect">preparable_SQL_session_statement</a></div> + <div>           | <a href="#preparable-implementation-defined-statement" title="preparable_implementation_defined_statement" shape="rect">preparable_implementation_defined_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_SQL_data_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="335" height="245"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delete-statement-searched" xlink:title="delete_statement_searched" shape="rect"> + <rect x="43" y="1" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">delete_statement_searched</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-single-row-select-statement" xlink:title="dynamic_single_row_select_statement" shape="rect"> + <rect x="43" y="29" width="188" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">dynamic_single_row_select_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert-statement" xlink:title="insert_statement" shape="rect"> + <rect x="43" y="57" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">insert_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-select-statement" xlink:title="dynamic_select_statement" shape="rect"> + <rect x="43" y="85" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">dynamic_select_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-statement-searched" xlink:title="update_statement_searched" shape="rect"> + <rect x="43" y="113" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">update_statement_searched</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#truncate-table-statement" xlink:title="truncate_table_statement" shape="rect"> + <rect x="43" y="141" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">truncate_table_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-statement" xlink:title="merge_statement" shape="rect"> + <rect x="43" y="169" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">merge_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-dynamic-delete-statement-positioned" xlink:title="preparable_dynamic_delete_statement_positioned" shape="rect"> + <rect x="43" y="197" width="244" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">preparable_dynamic_delete_statement_positioned</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-dynamic-update-statement-positioned" xlink:title="preparable_dynamic_update_statement_positioned" shape="rect"> + <rect x="43" y="225" width="248" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">preparable_dynamic_update_statement_positioned</text></a><path class="line" d="m17 10 h2 m20 0 h4 m140 0 h4 m0 0 h108 m-276 0 h20 m256 0 h20 m-296 0 q10 0 10 10 m276 0 q0 -10 10 -10 m-286 10 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m188 0 h4 m0 0 h60 m-266 -10 v20 m276 0 v-20 m-276 20 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m88 0 h4 m0 0 h160 m-266 -10 v20 m276 0 v-20 m-276 20 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m132 0 h4 m0 0 h116 m-266 -10 v20 m276 0 v-20 m-276 20 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m144 0 h4 m0 0 h104 m-266 -10 v20 m276 0 v-20 m-276 20 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m128 0 h4 m0 0 h120 m-266 -10 v20 m276 0 v-20 m-276 20 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m94 0 h4 m0 0 h154 m-266 -10 v20 m276 0 v-20 m-276 20 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m244 0 h4 m0 0 h4 m-266 -10 v20 m276 0 v-20 m-276 20 v8 m276 0 v-8 m-276 8 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m248 0 h4 m23 -224 h-3"/> + <polygon points="325 10 333 6 333 14"/> + <polygon points="325 10 317 6 317 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-sql-data-statement" title="preparable_SQL_data_statement" shape="rect">preparable_SQL_data_statement</a></div> + <div>         ::= <a href="#delete-statement-searched" title="delete_statement_searched" shape="rect">delete_statement_searched</a></div> + <div>           | <a href="#dynamic-single-row-select-statement" title="dynamic_single_row_select_statement" shape="rect">dynamic_single_row_select_statement</a></div> + <div>           | <a href="#insert-statement" title="insert_statement" shape="rect">insert_statement</a></div> + <div>           | <a href="#dynamic-select-statement" title="dynamic_select_statement" shape="rect">dynamic_select_statement</a></div> + <div>           | <a href="#update-statement-searched" title="update_statement_searched" shape="rect">update_statement_searched</a></div> + <div>           | <a href="#truncate-table-statement" title="truncate_table_statement" shape="rect">truncate_table_statement</a></div> + <div>           | <a href="#merge-statement" title="merge_statement" shape="rect">merge_statement</a></div> + <div>           | <a href="#preparable-dynamic-delete-statement-positioned" title="preparable_dynamic_delete_statement_positioned" shape="rect">preparable_dynamic_delete_statement_positioned</a></div> + <div>           | <a href="#preparable-dynamic-update-statement-positioned" title="preparable_dynamic_update_statement_positioned" shape="rect">preparable_dynamic_update_statement_positioned</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-statement" title="preparable-statement">preparable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_SQL_schema_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="171" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-schema-statement" xlink:title="SQL_schema_statement" shape="rect"> + <rect x="23" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SQL_schema_statement</text></a><path class="line" d="m17 10 h2 m0 0 h4 m124 0 h4 m3 0 h-3"/> + <polygon points="161 10 169 6 169 14"/> + <polygon points="161 10 153 6 153 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-sql-schema-statement" title="preparable_SQL_schema_statement" shape="rect">preparable_SQL_schema_statement</a></div> + <div>         ::= <a href="#sql-schema-statement" title="SQL_schema_statement" shape="rect">SQL_schema_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-statement" title="preparable-statement">preparable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_SQL_transaction_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-transaction-statement" xlink:title="SQL_transaction_statement" shape="rect"> + <rect x="23" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SQL_transaction_statement</text></a><path class="line" d="m17 10 h2 m0 0 h4 m138 0 h4 m3 0 h-3"/> + <polygon points="175 10 183 6 183 14"/> + <polygon points="175 10 167 6 167 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-sql-transaction-statement" title="preparable_SQL_transaction_statement" shape="rect">preparable_SQL_transaction_statement</a></div> + <div>         ::= <a href="#sql-transaction-statement" title="SQL_transaction_statement" shape="rect">SQL_transaction_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-statement" title="preparable-statement">preparable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_SQL_control_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="165" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-control-statement" xlink:title="SQL_control_statement" shape="rect"> + <rect x="23" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SQL_control_statement</text></a><path class="line" d="m17 10 h2 m0 0 h4 m118 0 h4 m3 0 h-3"/> + <polygon points="155 10 163 6 163 14"/> + <polygon points="155 10 147 6 147 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-sql-control-statement" title="preparable_SQL_control_statement" shape="rect">preparable_SQL_control_statement</a></div> + <div>         ::= <a href="#sql-control-statement" title="SQL_control_statement" shape="rect">SQL_control_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-statement" title="preparable-statement">preparable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_SQL_session_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="169" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-session-statement" xlink:title="SQL_session_statement" shape="rect"> + <rect x="23" y="1" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SQL_session_statement</text></a><path class="line" d="m17 10 h2 m0 0 h4 m122 0 h4 m3 0 h-3"/> + <polygon points="159 10 167 6 167 14"/> + <polygon points="159 10 151 6 151 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-sql-session-statement" title="preparable_SQL_session_statement" shape="rect">preparable_SQL_session_statement</a></div> + <div>         ::= <a href="#sql-session-statement" title="SQL_session_statement" shape="rect">SQL_session_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-statement" title="preparable-statement">preparable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_select_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-specification" xlink:title="cursor_specification" shape="rect"> + <rect x="23" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">cursor_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="133 10 141 6 141 14"/> + <polygon points="133 10 125 6 125 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-select-statement" title="dynamic_select_statement" shape="rect">dynamic_select_statement</a></div> + <div>         ::= <a href="#cursor-specification" title="cursor_specification" shape="rect">cursor_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_implementation_defined_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="23" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_string_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-implementation-defined-statement" title="preparable_implementation_defined_statement" shape="rect">preparable_implementation_defined_statement</a></div> + <div>         ::= <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-statement" title="preparable-statement">preparable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_attributes +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-attribute" xlink:title="cursor_attribute" shape="rect"> + <rect x="43" y="13" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">cursor_attribute</text></a><path class="line" d="m17 22 h2 m20 0 h4 m80 0 h4 m-108 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m88 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-88 0 h10 m0 0 h78 m23 21 h-3"/> + <polygon points="157 22 165 18 165 26"/> + <polygon points="157 22 149 18 149 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-attributes" title="cursor_attributes" shape="rect">cursor_attributes</a></div> + <div>         ::= <a href="#cursor-attribute" title="cursor_attribute" shape="rect">cursor_attribute</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_attribute +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-sensitivity" xlink:title="cursor_sensitivity" shape="rect"> + <rect x="43" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">cursor_sensitivity</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-scrollability" xlink:title="cursor_scrollability" shape="rect"> + <rect x="43" y="29" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">cursor_scrollability</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-holdability" xlink:title="cursor_holdability" shape="rect"> + <rect x="43" y="57" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">cursor_holdability</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-returnability" xlink:title="cursor_returnability" shape="rect"> + <rect x="43" y="85" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">cursor_returnability</text></a><path class="line" d="m17 10 h2 m20 0 h4 m86 0 h4 m0 0 h8 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v8 m122 0 v-8 m-122 8 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m88 0 h4 m0 0 h6 m-112 -10 v20 m122 0 v-20 m-122 20 v8 m122 0 v-8 m-122 8 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m86 0 h4 m0 0 h8 m-112 -10 v20 m122 0 v-20 m-122 20 v8 m122 0 v-8 m-122 8 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m94 0 h4 m23 -84 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-attribute" title="cursor_attribute" shape="rect">cursor_attribute</a></div> + <div>         ::= <a href="#cursor-sensitivity" title="cursor_sensitivity" shape="rect">cursor_sensitivity</a></div> + <div>           | <a href="#cursor-scrollability" title="cursor_scrollability" shape="rect">cursor_scrollability</a></div> + <div>           | <a href="#cursor-holdability" title="cursor_holdability" shape="rect">cursor_holdability</a></div> + <div>           | <a href="#cursor-returnability" title="cursor_returnability" shape="rect">cursor_returnability</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cursor-attributes" title="cursor-attributes">cursor-attributes</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + deallocate_prepared_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DEALLOCATE</text> + <rect x="97" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="13">PREPARE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-identifier" xlink:title="SQL_identifier" shape="rect"> + <rect x="155" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="13">SQL_identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m66 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="239 10 247 6 247 14"/> + <polygon points="239 10 231 6 231 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#deallocate-prepared-statement" title="deallocate_prepared_statement" shape="rect">deallocate_prepared_statement</a></div> + <div>         ::= 'DEALLOCATE' 'PREPARE' <a href="#sql-identifier" title="SQL_identifier" shape="rect">SQL_identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-statement" title="sql-dynamic-statement">sql-dynamic-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + describe_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="223" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#describe-input-statement" xlink:title="describe_input_statement" shape="rect"> + <rect x="43" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">describe_input_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#describe-output-statement" xlink:title="describe_output_statement" shape="rect"> + <rect x="43" y="29" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">describe_output_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m130 0 h4 m0 0 h6 m-164 0 h20 m144 0 h20 m-184 0 q10 0 10 10 m164 0 q0 -10 10 -10 m-174 10 v8 m164 0 v-8 m-164 8 q0 10 10 10 m144 0 q10 0 10 -10 m-154 10 h4 m136 0 h4 m23 -28 h-3"/> + <polygon points="213 10 221 6 221 14"/> + <polygon points="213 10 205 6 205 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#describe-statement" title="describe_statement" shape="rect">describe_statement</a></div> + <div>         ::= <a href="#describe-input-statement" title="describe_input_statement" shape="rect">describe_input_statement</a></div> + <div>           | <a href="#describe-output-statement" title="describe_output_statement" shape="rect">describe_output_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-statement" title="sql-dynamic-statement">sql-dynamic-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + describe_input_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="439" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DESCRIBE</text> + <rect x="83" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">INPUT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-identifier" xlink:title="SQL_identifier" shape="rect"> + <rect x="127" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="131" y="13">SQL_identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#using-descriptor" xlink:title="using_descriptor" shape="rect"> + <rect x="205" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="209" y="13">using_descriptor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nesting-option" xlink:title="nesting_option" shape="rect"> + <rect x="317" y="22" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="321" y="34">nesting_option</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m70 0 h4 m0 0 h4 m84 0 h4 m20 0 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m23 -21 h-3"/> + <polygon points="429 10 437 6 437 14"/> + <polygon points="429 10 421 6 421 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#describe-input-statement" title="describe_input_statement" shape="rect">describe_input_statement</a></div> + <div>         ::= 'DESCRIBE' 'INPUT' <a href="#sql-identifier" title="SQL_identifier" shape="rect">SQL_identifier</a> <a href="#using-descriptor" title="using_descriptor" shape="rect">using_descriptor</a> <a href="#nesting-option" title="nesting_option" shape="rect">nesting_option</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#describe-statement" title="describe-statement">describe-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + describe_output_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="505" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DESCRIBE</text> + <rect x="103" y="22" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="34">OUTPUT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#described-object" xlink:title="described_object" shape="rect"> + <rect x="177" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="13">described_object</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#using-descriptor" xlink:title="using_descriptor" shape="rect"> + <rect x="271" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="275" y="13">using_descriptor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nesting-option" xlink:title="nesting_option" shape="rect"> + <rect x="383" y="22" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="387" y="34">nesting_option</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m20 0 h10 m0 0 h44 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v1 m74 0 v-1 m-74 1 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m46 0 h4 m20 -21 h4 m86 0 h4 m0 0 h4 m84 0 h4 m20 0 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m23 -21 h-3"/> + <polygon points="495 10 503 6 503 14"/> + <polygon points="495 10 487 6 487 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#describe-output-statement" title="describe_output_statement" shape="rect">describe_output_statement</a></div> + <div>         ::= 'DESCRIBE' 'OUTPUT'? <a href="#described-object" title="described_object" shape="rect">described_object</a> <a href="#using-descriptor" title="using_descriptor" shape="rect">using_descriptor</a> <a href="#nesting-option" title="nesting_option" shape="rect">nesting_option</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#describe-statement" title="describe-statement">describe-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + nesting_option +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="197" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">WITH</text> + <rect x="43" y="29" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">WITHOUT</text> + <rect x="125" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">NESTING</text> + <path class="line" d="m17 10 h2 m20 0 h4 m34 0 h4 m0 0 h20 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v8 m82 0 v-8 m-82 8 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m54 0 h4 m20 -28 h4 m48 0 h4 m3 0 h-3"/> + <polygon points="187 10 195 6 195 14"/> + <polygon points="187 10 179 6 179 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#nesting-option" title="nesting_option" shape="rect">nesting_option</a></div> + <div>         ::= ( 'WITH' | 'WITHOUT' ) 'NESTING'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#describe-input-statement" title="describe-input-statement">describe-input-statement</a></li><li><a href="#describe-output-statement" title="describe-output-statement">describe-output-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + using_descriptor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="329" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">USING</text> + <rect x="89" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="34">SQL</text> + <rect x="143" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="13">DESCRIPTOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#descriptor-name" xlink:title="descriptor_name" shape="rect"> + <rect x="219" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="223" y="13">descriptor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m20 0 h10 m0 0 h24 m-54 0 h20 m34 0 h20 m-74 0 q10 0 10 10 m54 0 q0 -10 10 -10 m-64 10 v1 m54 0 v-1 m-54 1 q0 10 10 10 m34 0 q10 0 10 -10 m-44 10 h4 m26 0 h4 m20 -21 h4 m68 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="319 10 327 6 327 14"/> + <polygon points="319 10 311 6 311 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#using-descriptor" title="using_descriptor" shape="rect">using_descriptor</a></div> + <div>         ::= 'USING' 'SQL'? 'DESCRIPTOR' <a href="#descriptor-name" title="descriptor_name" shape="rect">descriptor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#describe-input-statement" title="describe-input-statement">describe-input-statement</a></li><li><a href="#describe-output-statement" title="describe-output-statement">describe-output-statement</a></li><li><a href="#using-input-descriptor" title="using-input-descriptor">using-input-descriptor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + described_object +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="333" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-identifier" xlink:title="SQL_identifier" shape="rect"> + <rect x="43" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SQL_identifier</text></a><rect x="43" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CURSOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extended-cursor-name" xlink:title="extended_cursor_name" shape="rect"> + <rect x="99" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="41">extended_cursor_name</text></a><rect x="227" y="29" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="41">STRUCTURE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m70 0 h4 m0 0 h176 m-274 0 h20 m254 0 h20 m-294 0 q10 0 10 10 m274 0 q0 -10 10 -10 m-284 10 v8 m274 0 v-8 m-274 8 q0 10 10 10 m254 0 q10 0 10 -10 m-264 10 h4 m48 0 h4 m0 0 h4 m120 0 h4 m0 0 h4 m62 0 h4 m23 -28 h-3"/> + <polygon points="323 10 331 6 331 14"/> + <polygon points="323 10 315 6 315 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#described-object" title="described_object" shape="rect">described_object</a></div> + <div>         ::= <a href="#sql-identifier" title="SQL_identifier" shape="rect">SQL_identifier</a></div> + <div>           | 'CURSOR' <a href="#extended-cursor-name" title="extended_cursor_name" shape="rect">extended_cursor_name</a> 'STRUCTURE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#describe-output-statement" title="describe-output-statement">describe-output-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + input_using_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#using-arguments" xlink:title="using_arguments" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">using_arguments</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#using-input-descriptor" xlink:title="using_input_descriptor" shape="rect"> + <rect x="43" y="29" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">using_input_descriptor</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h22 m-140 0 h20 m120 0 h20 m-160 0 q10 0 10 10 m140 0 q0 -10 10 -10 m-150 10 v8 m140 0 v-8 m-140 8 q0 10 10 10 m120 0 q10 0 10 -10 m-130 10 h4 m112 0 h4 m23 -28 h-3"/> + <polygon points="189 10 197 6 197 14"/> + <polygon points="189 10 181 6 181 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#input-using-clause" title="input_using_clause" shape="rect">input_using_clause</a></div> + <div>         ::= <a href="#using-arguments" title="using_arguments" shape="rect">using_arguments</a></div> + <div>           | <a href="#using-input-descriptor" title="using_input_descriptor" shape="rect">using_input_descriptor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#dynamic-open-statement" title="dynamic-open-statement">dynamic-open-statement</a></li><li><a href="#parameter-using-clause" title="parameter-using-clause">parameter-using-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + using_arguments +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#using-argument" xlink:title="using_argument" shape="rect"> + <rect x="89" y="29" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="93" y="41">using_argument</text></a><rect x="89" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m38 0 h4 m20 0 h4 m86 0 h4 m-114 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m94 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-94 0 h4 m8 0 h4 m0 0 h78 m23 28 h-3"/> + <polygon points="209 38 217 34 217 42"/> + <polygon points="209 38 201 34 201 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#using-arguments" title="using_arguments" shape="rect">using_arguments</a></div> + <div>         ::= 'USING' <a href="#using-argument" title="using_argument" shape="rect">using_argument</a> ( ',' <a href="#using-argument" title="using_argument" shape="rect">using_argument</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#input-using-clause" title="input-using-clause">input-using-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + using_argument +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="179" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#general-value-specification" xlink:title="general_value_specification" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">general_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="169 10 177 6 177 14"/> + <polygon points="169 10 161 6 161 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#using-argument" title="using_argument" shape="rect">using_argument</a></div> + <div>         ::= <a href="#general-value-specification" title="general_value_specification" shape="rect">general_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#using-arguments" title="using-arguments">using-arguments</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + using_input_descriptor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="131" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#using-descriptor" xlink:title="using_descriptor" shape="rect"> + <rect x="23" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">using_descriptor</text></a><path class="line" d="m17 10 h2 m0 0 h4 m84 0 h4 m3 0 h-3"/> + <polygon points="121 10 129 6 129 14"/> + <polygon points="121 10 113 6 113 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#using-input-descriptor" title="using_input_descriptor" shape="rect">using_input_descriptor</a></div> + <div>         ::= <a href="#using-descriptor" title="using_descriptor" shape="rect">using_descriptor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#input-using-clause" title="input-using-clause">input-using-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + output_using_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="169" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#into-arguments" xlink:title="into_arguments" shape="rect"> + <rect x="43" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">into_arguments</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#into-descriptor" xlink:title="into_descriptor" shape="rect"> + <rect x="43" y="29" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">into_descriptor</text></a><path class="line" d="m17 10 h2 m20 0 h4 m82 0 h4 m-110 0 h20 m90 0 h20 m-130 0 q10 0 10 10 m110 0 q0 -10 10 -10 m-120 10 v8 m110 0 v-8 m-110 8 q0 10 10 10 m90 0 q10 0 10 -10 m-100 10 h4 m76 0 h4 m0 0 h6 m23 -28 h-3"/> + <polygon points="159 10 167 6 167 14"/> + <polygon points="159 10 151 6 151 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#output-using-clause" title="output_using_clause" shape="rect">output_using_clause</a></div> + <div>         ::= <a href="#into-arguments" title="into_arguments" shape="rect">into_arguments</a></div> + <div>           | <a href="#into-descriptor" title="into_descriptor" shape="rect">into_descriptor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#dynamic-fetch-statement" title="dynamic-fetch-statement">dynamic-fetch-statement</a></li><li><a href="#result-using-clause" title="result-using-clause">result-using-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + into_arguments +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="205" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">INTO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#into-argument" xlink:title="into_argument" shape="rect"> + <rect x="83" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">into_argument</text></a><rect x="83" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m32 0 h4 m20 0 h4 m78 0 h4 m-106 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m86 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-86 0 h4 m8 0 h4 m0 0 h70 m23 28 h-3"/> + <polygon points="195 38 203 34 203 42"/> + <polygon points="195 38 187 34 187 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#into-arguments" title="into_arguments" shape="rect">into_arguments</a></div> + <div>         ::= 'INTO' <a href="#into-argument" title="into_argument" shape="rect">into_argument</a> ( ',' <a href="#into-argument" title="into_argument" shape="rect">into_argument</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#output-using-clause" title="output-using-clause">output-using-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + into_argument +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-specification" xlink:title="target_specification" shape="rect"> + <rect x="23" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">target_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="133 10 141 6 141 14"/> + <polygon points="133 10 125 6 125 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#into-argument" title="into_argument" shape="rect">into_argument</a></div> + <div>         ::= <a href="#target-specification" title="target_specification" shape="rect">target_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#into-arguments" title="into-arguments">into-arguments</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + into_descriptor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="323" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">INTO</text> + <rect x="83" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="34">SQL</text> + <rect x="137" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="13">DESCRIPTOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#descriptor-name" xlink:title="descriptor_name" shape="rect"> + <rect x="213" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="13">descriptor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m32 0 h4 m20 0 h10 m0 0 h24 m-54 0 h20 m34 0 h20 m-74 0 q10 0 10 10 m54 0 q0 -10 10 -10 m-64 10 v1 m54 0 v-1 m-54 1 q0 10 10 10 m34 0 q10 0 10 -10 m-44 10 h4 m26 0 h4 m20 -21 h4 m68 0 h4 m0 0 h4 m86 0 h4 m3 0 h-3"/> + <polygon points="313 10 321 6 321 14"/> + <polygon points="313 10 305 6 305 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#into-descriptor" title="into_descriptor" shape="rect">into_descriptor</a></div> + <div>         ::= 'INTO' 'SQL'? 'DESCRIPTOR' <a href="#descriptor-name" title="descriptor_name" shape="rect">descriptor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#output-using-clause" title="output-using-clause">output-using-clause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + execute_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="491" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EXECUTE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-identifier" xlink:title="SQL_identifier" shape="rect"> + <rect x="79" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="83" y="13">SQL_identifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result-using-clause" xlink:title="result_using_clause" shape="rect"> + <rect x="177" y="22" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="34">result_using_clause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#parameter-using-clause" xlink:title="parameter_using_clause" shape="rect"> + <rect x="323" y="22" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="327" y="34">parameter_using_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m70 0 h4 m20 0 h10 m0 0 h96 m-126 0 h20 m106 0 h20 m-146 0 q10 0 10 10 m126 0 q0 -10 10 -10 m-136 10 v1 m126 0 v-1 m-126 1 q0 10 10 10 m106 0 q10 0 10 -10 m-116 10 h4 m98 0 h4 m40 -21 h10 m0 0 h122 m-152 0 h20 m132 0 h20 m-172 0 q10 0 10 10 m152 0 q0 -10 10 -10 m-162 10 v1 m152 0 v-1 m-152 1 q0 10 10 10 m132 0 q10 0 10 -10 m-142 10 h4 m124 0 h4 m23 -21 h-3"/> + <polygon points="481 10 489 6 489 14"/> + <polygon points="481 10 473 6 473 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#execute-statement" title="execute_statement" shape="rect">execute_statement</a></div> + <div>         ::= 'EXECUTE' <a href="#sql-identifier" title="SQL_identifier" shape="rect">SQL_identifier</a> <a href="#result-using-clause" title="result_using_clause" shape="rect">result_using_clause</a>? <a href="#parameter-using-clause" title="parameter_using_clause" shape="rect">parameter_using_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-statement" title="sql-dynamic-statement">sql-dynamic-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + result_using_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="151" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#output-using-clause" xlink:title="output_using_clause" shape="rect"> + <rect x="23" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">output_using_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m104 0 h4 m3 0 h-3"/> + <polygon points="141 10 149 6 149 14"/> + <polygon points="141 10 133 6 133 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#result-using-clause" title="result_using_clause" shape="rect">result_using_clause</a></div> + <div>         ::= <a href="#output-using-clause" title="output_using_clause" shape="rect">output_using_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#execute-statement" title="execute-statement">execute-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + parameter_using_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#input-using-clause" xlink:title="input_using_clause" shape="rect"> + <rect x="23" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">input_using_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="133 10 141 6 141 14"/> + <polygon points="133 10 125 6 125 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#parameter-using-clause" title="parameter_using_clause" shape="rect">parameter_using_clause</a></div> + <div>         ::= <a href="#input-using-clause" title="input_using_clause" shape="rect">input_using_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#execute-statement" title="execute-statement">execute-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + execute_immediate_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="299" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">EXECUTE</text> + <rect x="79" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13">IMMEDIATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="147" y="1" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="13">simple_value_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m128 0 h4 m3 0 h-3"/> + <polygon points="289 10 297 6 297 14"/> + <polygon points="289 10 281 6 281 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#execute-immediate-statement" title="execute_immediate_statement" shape="rect">execute_immediate_statement</a></div> + <div>         ::= 'EXECUTE' 'IMMEDIATE' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-statement" title="sql-dynamic-statement">sql-dynamic-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_declare_cursor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="357" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DECLARE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="79" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="83" y="13">cursor_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-properties" xlink:title="cursor_properties" shape="rect"> + <rect x="157" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="13">cursor_properties</text></a><rect x="253" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier" xlink:title="identifier" shape="rect"> + <rect x="287" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="291" y="13">identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m70 0 h4 m0 0 h4 m88 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m46 0 h4 m3 0 h-3"/> + <polygon points="347 10 355 6 355 14"/> + <polygon points="347 10 339 6 339 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-declare-cursor" title="dynamic_declare_cursor" shape="rect">dynamic_declare_cursor</a></div> + <div>         ::= 'DECLARE' <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a> <a href="#cursor-properties" title="cursor_properties" shape="rect">cursor_properties</a> 'FOR' <a href="#identifier" title="identifier" shape="rect">identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#module-contents" title="module-contents">module-contents</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + allocate_cursor_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="305" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ALLOCATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extended-cursor-name" xlink:title="extended_cursor_name" shape="rect"> + <rect x="85" y="1" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">extended_cursor_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-intent" xlink:title="cursor_intent" shape="rect"> + <rect x="213" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="13">cursor_intent</text></a><path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m0 0 h4 m120 0 h4 m0 0 h4 m68 0 h4 m3 0 h-3"/> + <polygon points="295 10 303 6 303 14"/> + <polygon points="295 10 287 6 287 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#allocate-cursor-statement" title="allocate_cursor_statement" shape="rect">allocate_cursor_statement</a></div> + <div>         ::= 'ALLOCATE' <a href="#extended-cursor-name" title="extended_cursor_name" shape="rect">extended_cursor_name</a> <a href="#cursor-intent" title="cursor_intent" shape="rect">cursor_intent</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-data-statement" title="sql-dynamic-data-statement">sql-dynamic-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + cursor_intent +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#statement-cursor" xlink:title="statement_cursor" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">statement_cursor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#result-set-cursor" xlink:title="result_set_cursor" shape="rect"> + <rect x="43" y="29" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">result_set_cursor</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m88 0 h4 m0 0 h2 m23 -28 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#cursor-intent" title="cursor_intent" shape="rect">cursor_intent</a></div> + <div>         ::= <a href="#statement-cursor" title="statement_cursor" shape="rect">statement_cursor</a></div> + <div>           | <a href="#result-set-cursor" title="result_set_cursor" shape="rect">result_set_cursor</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#allocate-cursor-statement" title="allocate-cursor-statement">allocate-cursor-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + statement_cursor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="273" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-properties" xlink:title="cursor_properties" shape="rect"> + <rect x="23" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">cursor_properties</text></a><rect x="119" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extended-identifier" xlink:title="extended_identifier" shape="rect"> + <rect x="153" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="157" y="13">extended_identifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m88 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="263 10 271 6 271 14"/> + <polygon points="263 10 255 6 255 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#statement-cursor" title="statement_cursor" shape="rect">statement_cursor</a></div> + <div>         ::= <a href="#cursor-properties" title="cursor_properties" shape="rect">cursor_properties</a> 'FOR' <a href="#extended-identifier" title="extended_identifier" shape="rect">extended_identifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cursor-intent" title="cursor-intent">cursor-intent</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + result_set_cursor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="381" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">CURSOR</text> + <rect x="119" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">FOR</text> + <rect x="153" y="1" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="13">PROCEDURE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specific-routine-designator" xlink:title="specific_routine_designator" shape="rect"> + <rect x="225" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="229" y="13">specific_routine_designator</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h46 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v1 m76 0 v-1 m-76 1 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m48 0 h4 m20 -21 h4 m26 0 h4 m0 0 h4 m64 0 h4 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="371 10 379 6 379 14"/> + <polygon points="371 10 363 6 363 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#result-set-cursor" title="result_set_cursor" shape="rect">result_set_cursor</a></div> + <div>         ::= 'CURSOR'? 'FOR' 'PROCEDURE' <a href="#specific-routine-designator" title="specific_routine_designator" shape="rect">specific_routine_designator</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cursor-intent" title="cursor-intent">cursor-intent</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_open_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="347" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OPEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-cursor-name" xlink:title="dynamic_cursor_name" shape="rect"> + <rect x="65" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">dynamic_cursor_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#input-using-clause" xlink:title="input_using_clause" shape="rect"> + <rect x="207" y="22" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="34">input_using_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m114 0 h4 m20 0 h10 m0 0 h94 m-124 0 h20 m104 0 h20 m-144 0 q10 0 10 10 m124 0 q0 -10 10 -10 m-134 10 v1 m124 0 v-1 m-124 1 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m96 0 h4 m23 -21 h-3"/> + <polygon points="337 10 345 6 345 14"/> + <polygon points="337 10 329 6 329 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-open-statement" title="dynamic_open_statement" shape="rect">dynamic_open_statement</a></div> + <div>         ::= 'OPEN' <a href="#dynamic-cursor-name" title="dynamic_cursor_name" shape="rect">dynamic_cursor_name</a> <a href="#input-using-clause" title="input_using_clause" shape="rect">input_using_clause</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-data-statement" title="sql-dynamic-data-statement">sql-dynamic-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_fetch_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="533" height="63"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">FETCH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fetch-orientation" xlink:title="fetch_orientation" shape="rect"> + <rect x="107" y="43" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="55">fetch_orientation</text></a><rect x="219" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="34">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-cursor-name" xlink:title="dynamic_cursor_name" shape="rect"> + <rect x="283" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="287" y="13">dynamic_cursor_name</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#output-using-clause" xlink:title="output_using_clause" shape="rect"> + <rect x="405" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="409" y="13">output_using_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m20 0 h10 m0 0 h166 m-196 0 h20 m176 0 h20 m-216 0 q10 0 10 10 m196 0 q0 -10 10 -10 m-206 10 v1 m196 0 v-1 m-196 1 q0 10 10 10 m176 0 q10 0 10 -10 m-166 10 h10 m0 0 h82 m-112 0 h20 m92 0 h20 m-132 0 q10 0 10 10 m112 0 q0 -10 10 -10 m-122 10 v1 m112 0 v-1 m-112 1 q0 10 10 10 m92 0 q10 0 10 -10 m-102 10 h4 m84 0 h4 m20 -21 h4 m36 0 h4 m20 -21 h4 m114 0 h4 m0 0 h4 m104 0 h4 m3 0 h-3"/> + <polygon points="523 10 531 6 531 14"/> + <polygon points="523 10 515 6 515 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-fetch-statement" title="dynamic_fetch_statement" shape="rect">dynamic_fetch_statement</a></div> + <div>         ::= 'FETCH' ( <a href="#fetch-orientation" title="fetch_orientation" shape="rect">fetch_orientation</a>? 'FROM' )? <a href="#dynamic-cursor-name" title="dynamic_cursor_name" shape="rect">dynamic_cursor_name</a> <a href="#output-using-clause" title="output_using_clause" shape="rect">output_using_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-data-statement" title="sql-dynamic-data-statement">sql-dynamic-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_single_row_select_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="141" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#query-specification" xlink:title="query_specification" shape="rect"> + <rect x="23" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">query_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m94 0 h4 m3 0 h-3"/> + <polygon points="131 10 139 6 139 14"/> + <polygon points="131 10 123 6 123 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-single-row-select-statement" title="dynamic_single_row_select_statement" shape="rect">dynamic_single_row_select_statement</a></div> + <div>         ::= <a href="#query-specification" title="query_specification" shape="rect">query_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_close_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="207" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CLOSE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-cursor-name" xlink:title="dynamic_cursor_name" shape="rect"> + <rect x="69" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="73" y="13">dynamic_cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m114 0 h4 m3 0 h-3"/> + <polygon points="197 10 205 6 205 14"/> + <polygon points="197 10 189 6 189 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-close-statement" title="dynamic_close_statement" shape="rect">dynamic_close_statement</a></div> + <div>         ::= 'CLOSE' <a href="#dynamic-cursor-name" title="dynamic_cursor_name" shape="rect">dynamic_cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-data-statement" title="sql-dynamic-data-statement">sql-dynamic-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_delete_statement_positioned +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="461" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DELETE</text> + <rect x="71" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="115" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="13">target_table</text></a><rect x="187" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="13">WHERE</text> + <rect x="237" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="241" y="13">CURRENT</text> + <rect x="295" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="299" y="13">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-cursor-name" xlink:title="dynamic_cursor_name" shape="rect"> + <rect x="323" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="327" y="13">dynamic_cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m64 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m114 0 h4 m3 0 h-3"/> + <polygon points="451 10 459 6 459 14"/> + <polygon points="451 10 443 6 443 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-delete-statement-positioned" title="dynamic_delete_statement_positioned" shape="rect">dynamic_delete_statement_positioned</a></div> + <div>         ::= 'DELETE' 'FROM' <a href="#target-table" title="target_table" shape="rect">target_table</a> 'WHERE' 'CURRENT' 'OF' <a href="#dynamic-cursor-name" title="dynamic_cursor_name" shape="rect">dynamic_cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-data-statement" title="sql-dynamic-data-statement">sql-dynamic-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + dynamic_update_statement_positioned +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="535" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="75" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">target_table</text></a><rect x="147" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-clause-list" xlink:title="set_clause_list" shape="rect"> + <rect x="179" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="13">set_clause_list</text></a><rect x="261" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="265" y="13">WHERE</text> + <rect x="311" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="315" y="13">CURRENT</text> + <rect x="369" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="373" y="13">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dynamic-cursor-name" xlink:title="dynamic_cursor_name" shape="rect"> + <rect x="397" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="401" y="13">dynamic_cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m64 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m114 0 h4 m3 0 h-3"/> + <polygon points="525 10 533 6 533 14"/> + <polygon points="525 10 517 6 517 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dynamic-update-statement-positioned" title="dynamic_update_statement_positioned" shape="rect">dynamic_update_statement_positioned</a></div> + <div>         ::= 'UPDATE' <a href="#target-table" title="target_table" shape="rect">target_table</a> 'SET' <a href="#set-clause-list" title="set_clause_list" shape="rect">set_clause_list</a> 'WHERE' 'CURRENT' 'OF' <a href="#dynamic-cursor-name" title="dynamic_cursor_name" shape="rect">dynamic_cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-dynamic-data-statement" title="sql-dynamic-data-statement">sql-dynamic-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_dynamic_delete_statement_positioned +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="557" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DELETE</text> + <rect x="91" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="34">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="135" y="22" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="34">target_table</text></a><rect x="227" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="13">WHERE</text> + <rect x="277" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="281" y="13">CURRENT</text> + <rect x="335" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="13">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-dynamic-cursor-name" xlink:title="preparable_dynamic_cursor_name" shape="rect"> + <rect x="363" y="1" width="170" height="18" class="nonterminal"/> + <text class="nonterminal" x="367" y="13">preparable_dynamic_cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m20 0 h10 m0 0 h106 m-136 0 h20 m116 0 h20 m-156 0 q10 0 10 10 m136 0 q0 -10 10 -10 m-146 10 v1 m136 0 v-1 m-136 1 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m36 0 h4 m0 0 h4 m64 0 h4 m20 -21 h4 m42 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m170 0 h4 m3 0 h-3"/> + <polygon points="547 10 555 6 555 14"/> + <polygon points="547 10 539 6 539 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-dynamic-delete-statement-positioned" title="preparable_dynamic_delete_statement_positioned" shape="rect">preparable_dynamic_delete_statement_positioned</a></div> + <div>         ::= 'DELETE' ( 'FROM' <a href="#target-table" title="target_table" shape="rect">target_table</a> )? 'WHERE' 'CURRENT' 'OF' <a href="#preparable-dynamic-cursor-name" title="preparable_dynamic_cursor_name" shape="rect">preparable_dynamic_cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_dynamic_cursor_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#scope-option" xlink:title="scope_option" shape="rect"> + <rect x="43" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">scope_option</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-name" xlink:title="cursor_name" shape="rect"> + <rect x="143" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="13">cursor_name</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h70 m-100 0 h20 m80 0 h20 m-120 0 q10 0 10 10 m100 0 q0 -10 10 -10 m-110 10 v1 m100 0 v-1 m-100 1 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m72 0 h4 m20 -21 h4 m70 0 h4 m3 0 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-dynamic-cursor-name" title="preparable_dynamic_cursor_name" shape="rect">preparable_dynamic_cursor_name</a></div> + <div>         ::= <a href="#scope-option" title="scope_option" shape="rect">scope_option</a>? <a href="#cursor-name" title="cursor_name" shape="rect">cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-dynamic-delete-statement-positioned" title="preparable-dynamic-delete-statement-positioned">preparable-dynamic-delete-statement-positioned</a></li><li><a href="#preparable-dynamic-update-statement-positioned" title="preparable-dynamic-update-statement-positioned">preparable-dynamic-update-statement-positioned</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + preparable_dynamic_update_statement_positioned +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="631" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#target-table" xlink:title="target_table" shape="rect"> + <rect x="95" y="22" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="34">target_table</text></a><rect x="187" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-clause-list" xlink:title="set_clause_list" shape="rect"> + <rect x="219" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="223" y="13">set_clause_list</text></a><rect x="301" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="305" y="13">WHERE</text> + <rect x="351" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="355" y="13">CURRENT</text> + <rect x="409" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="413" y="13">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#preparable-dynamic-cursor-name" xlink:title="preparable_dynamic_cursor_name" shape="rect"> + <rect x="437" y="1" width="170" height="18" class="nonterminal"/> + <text class="nonterminal" x="441" y="13">preparable_dynamic_cursor_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m20 0 h10 m0 0 h62 m-92 0 h20 m72 0 h20 m-112 0 q10 0 10 10 m92 0 q0 -10 10 -10 m-102 10 v1 m92 0 v-1 m-92 1 q0 10 10 10 m72 0 q10 0 10 -10 m-82 10 h4 m64 0 h4 m20 -21 h4 m24 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m170 0 h4 m3 0 h-3"/> + <polygon points="621 10 629 6 629 14"/> + <polygon points="621 10 613 6 613 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#preparable-dynamic-update-statement-positioned" title="preparable_dynamic_update_statement_positioned" shape="rect">preparable_dynamic_update_statement_positioned</a></div> + <div>         ::= 'UPDATE' <a href="#target-table" title="target_table" shape="rect">target_table</a>? 'SET' <a href="#set-clause-list" title="set_clause_list" shape="rect">set_clause_list</a> 'WHERE' 'CURRENT' 'OF' <a href="#preparable-dynamic-cursor-name" title="preparable_dynamic_cursor_name" shape="rect">preparable_dynamic_cursor_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#preparable-sql-data-statement" title="preparable-sql-data-statement">preparable-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + direct_SQL_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#directly-executable-statement" xlink:title="directly_executable_statement" shape="rect"> + <rect x="23" y="1" width="148" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">directly_executable_statement</text></a><rect x="179" y="1" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="13">;</text> + <path class="line" d="m17 10 h2 m0 0 h4 m148 0 h4 m0 0 h4 m10 0 h4 m3 0 h-3"/> + <polygon points="203 10 211 6 211 14"/> + <polygon points="203 10 195 6 195 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#direct-sql-statement" title="direct_SQL_statement" shape="rect">direct_SQL_statement</a></div> + <div>         ::= <a href="#directly-executable-statement" title="directly_executable_statement" shape="rect">directly_executable_statement</a> ';'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#compilationunit" title="compilationunit">compilationunit</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + directly_executable_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="291" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#direct-sql-data-statement" xlink:title="direct_SQL_data_statement" shape="rect"> + <rect x="43" y="1" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">direct_SQL_data_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-schema-statement" xlink:title="SQL_schema_statement" shape="rect"> + <rect x="43" y="29" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">SQL_schema_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-transaction-statement" xlink:title="SQL_transaction_statement" shape="rect"> + <rect x="43" y="57" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">SQL_transaction_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-connection-statement" xlink:title="SQL_connection_statement" shape="rect"> + <rect x="43" y="85" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">SQL_connection_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-session-statement" xlink:title="SQL_session_statement" shape="rect"> + <rect x="43" y="113" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">SQL_session_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#direct-implementation-defined-statement" xlink:title="direct_implementation_defined_statement" shape="rect"> + <rect x="43" y="141" width="204" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">direct_implementation_defined_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#use-statement" xlink:title="use_statement" shape="rect"> + <rect x="43" y="169" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">use_statement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m138 0 h4 m0 0 h66 m-232 0 h20 m212 0 h20 m-252 0 q10 0 10 10 m232 0 q0 -10 10 -10 m-242 10 v8 m232 0 v-8 m-232 8 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m124 0 h4 m0 0 h80 m-222 -10 v20 m232 0 v-20 m-232 20 v8 m232 0 v-8 m-232 8 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m138 0 h4 m0 0 h66 m-222 -10 v20 m232 0 v-20 m-232 20 v8 m232 0 v-8 m-232 8 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m136 0 h4 m0 0 h68 m-222 -10 v20 m232 0 v-20 m-232 20 v8 m232 0 v-8 m-232 8 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m122 0 h4 m0 0 h82 m-222 -10 v20 m232 0 v-20 m-232 20 v8 m232 0 v-8 m-232 8 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m204 0 h4 m-222 -10 v20 m232 0 v-20 m-232 20 v8 m232 0 v-8 m-232 8 q0 10 10 10 m212 0 q10 0 10 -10 m-222 10 h4 m80 0 h4 m0 0 h124 m23 -168 h-3"/> + <polygon points="281 10 289 6 289 14"/> + <polygon points="281 10 273 6 273 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#directly-executable-statement" title="directly_executable_statement" shape="rect">directly_executable_statement</a></div> + <div>         ::= <a href="#direct-sql-data-statement" title="direct_SQL_data_statement" shape="rect">direct_SQL_data_statement</a></div> + <div>           | <a href="#sql-schema-statement" title="SQL_schema_statement" shape="rect">SQL_schema_statement</a></div> + <div>           | <a href="#sql-transaction-statement" title="SQL_transaction_statement" shape="rect">SQL_transaction_statement</a></div> + <div>           | <a href="#sql-connection-statement" title="SQL_connection_statement" shape="rect">SQL_connection_statement</a></div> + <div>           | <a href="#sql-session-statement" title="SQL_session_statement" shape="rect">SQL_session_statement</a></div> + <div>           | <a href="#direct-implementation-defined-statement" title="direct_implementation_defined_statement" shape="rect">direct_implementation_defined_statement</a></div> + <div>           | <a href="#use-statement" title="use_statement" shape="rect">use_statement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#direct-sql-statement" title="direct-sql-statement">direct-sql-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + direct_SQL_data_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="273" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delete-statement-searched" xlink:title="delete_statement_searched" shape="rect"> + <rect x="43" y="1" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">delete_statement_searched</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#direct-select-statement-multiple-rows" xlink:title="direct_select_statement_multiple_rows" shape="rect"> + <rect x="43" y="29" width="186" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">direct_select_statement_multiple_rows</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert-statement" xlink:title="insert_statement" shape="rect"> + <rect x="43" y="57" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">insert_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update-statement-searched" xlink:title="update_statement_searched" shape="rect"> + <rect x="43" y="85" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">update_statement_searched</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#truncate-table-statement" xlink:title="truncate_table_statement" shape="rect"> + <rect x="43" y="113" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">truncate_table_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge-statement" xlink:title="merge_statement" shape="rect"> + <rect x="43" y="141" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">merge_statement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#temporary-table-declaration" xlink:title="temporary_table_declaration" shape="rect"> + <rect x="43" y="169" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">temporary_table_declaration</text></a><path class="line" d="m17 10 h2 m20 0 h4 m140 0 h4 m0 0 h46 m-214 0 h20 m194 0 h20 m-234 0 q10 0 10 10 m214 0 q0 -10 10 -10 m-224 10 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m186 0 h4 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m88 0 h4 m0 0 h98 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m144 0 h4 m0 0 h42 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m128 0 h4 m0 0 h58 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m94 0 h4 m0 0 h92 m-204 -10 v20 m214 0 v-20 m-214 20 v8 m214 0 v-8 m-214 8 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m140 0 h4 m0 0 h46 m23 -168 h-3"/> + <polygon points="263 10 271 6 271 14"/> + <polygon points="263 10 255 6 255 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#direct-sql-data-statement" title="direct_SQL_data_statement" shape="rect">direct_SQL_data_statement</a></div> + <div>         ::= <a href="#delete-statement-searched" title="delete_statement_searched" shape="rect">delete_statement_searched</a></div> + <div>           | <a href="#direct-select-statement-multiple-rows" title="direct_select_statement_multiple_rows" shape="rect">direct_select_statement_multiple_rows</a></div> + <div>           | <a href="#insert-statement" title="insert_statement" shape="rect">insert_statement</a></div> + <div>           | <a href="#update-statement-searched" title="update_statement_searched" shape="rect">update_statement_searched</a></div> + <div>           | <a href="#truncate-table-statement" title="truncate_table_statement" shape="rect">truncate_table_statement</a></div> + <div>           | <a href="#merge-statement" title="merge_statement" shape="rect">merge_statement</a></div> + <div>           | <a href="#temporary-table-declaration" title="temporary_table_declaration" shape="rect">temporary_table_declaration</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#directly-executable-statement" title="directly-executable-statement">directly-executable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + direct_implementation_defined_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="23" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">character_string_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#direct-implementation-defined-statement" title="direct_implementation_defined_statement" shape="rect">direct_implementation_defined_statement</a></div> + <div>         ::= <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#directly-executable-statement" title="directly-executable-statement">directly-executable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + direct_select_statement_multiple_rows +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cursor-specification" xlink:title="cursor_specification" shape="rect"> + <rect x="23" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">cursor_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m96 0 h4 m3 0 h-3"/> + <polygon points="133 10 141 6 141 14"/> + <polygon points="133 10 125 6 125 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#direct-select-statement-multiple-rows" title="direct_select_statement_multiple_rows" shape="rect">direct_select_statement_multiple_rows</a></div> + <div>         ::= <a href="#cursor-specification" title="cursor_specification" shape="rect">cursor_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#direct-sql-data-statement" title="direct-sql-data-statement">direct-sql-data-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + get_diagnostics_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="299" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GET</text> + <rect x="55" y="1" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="59" y="13">DIAGNOSTICS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-diagnostics-information" xlink:title="SQL_diagnostics_information" shape="rect"> + <rect x="135" y="1" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">SQL_diagnostics_information</text></a><path class="line" d="m17 10 h2 m0 0 h4 m24 0 h4 m0 0 h4 m72 0 h4 m0 0 h4 m140 0 h4 m3 0 h-3"/> + <polygon points="289 10 297 6 297 14"/> + <polygon points="289 10 281 6 281 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#get-diagnostics-statement" title="get_diagnostics_statement" shape="rect">get_diagnostics_statement</a></div> + <div>         ::= 'GET' 'DIAGNOSTICS' <a href="#sql-diagnostics-information" title="SQL_diagnostics_information" shape="rect">SQL_diagnostics_information</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-diagnostics-statement" title="sql-diagnostics-statement">sql-diagnostics-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_diagnostics_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="201" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#statement-information" xlink:title="statement_information" shape="rect"> + <rect x="43" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">statement_information</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#condition-information" xlink:title="condition_information" shape="rect"> + <rect x="43" y="29" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">condition_information</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#all-information" xlink:title="all_information" shape="rect"> + <rect x="43" y="57" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">all_information</text></a><path class="line" d="m17 10 h2 m20 0 h4 m114 0 h4 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v8 m142 0 v-8 m-142 8 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m106 0 h4 m0 0 h8 m-132 -10 v20 m142 0 v-20 m-142 20 v8 m142 0 v-8 m-142 8 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m74 0 h4 m0 0 h40 m23 -56 h-3"/> + <polygon points="191 10 199 6 199 14"/> + <polygon points="191 10 183 6 183 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-diagnostics-information" title="SQL_diagnostics_information" shape="rect">SQL_diagnostics_information</a></div> + <div>         ::= <a href="#statement-information" title="statement_information" shape="rect">statement_information</a></div> + <div>           | <a href="#condition-information" title="condition_information" shape="rect">condition_information</a></div> + <div>           | <a href="#all-information" title="all_information" shape="rect">all_information</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#get-diagnostics-statement" title="get-diagnostics-statement">get-diagnostics-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + statement_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="227" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#statement-information-item" xlink:title="statement_information_item" shape="rect"> + <rect x="43" y="29" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">statement_information_item</text></a><rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m140 0 h4 m-168 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m148 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-148 0 h4 m8 0 h4 m0 0 h132 m23 28 h-3"/> + <polygon points="217 38 225 34 225 42"/> + <polygon points="217 38 209 34 209 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#statement-information" title="statement_information" shape="rect">statement_information</a></div> + <div>         ::= <a href="#statement-information-item" title="statement_information_item" shape="rect">statement_information_item</a> ( ',' <a href="#statement-information-item" title="statement_information_item" shape="rect">statement_information_item</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-diagnostics-information" title="sql-diagnostics-information">sql-diagnostics-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + statement_information_item +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="381" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-target-specification" xlink:title="simple_target_specification" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_target_specification</text></a><rect x="161" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="13">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#statement-information-item-name" xlink:title="statement_information_item_name" shape="rect"> + <rect x="183" y="1" width="174" height="18" class="nonterminal"/> + <text class="nonterminal" x="187" y="13">statement_information_item_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m174 0 h4 m3 0 h-3"/> + <polygon points="371 10 379 6 379 14"/> + <polygon points="371 10 363 6 363 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#statement-information-item" title="statement_information_item" shape="rect">statement_information_item</a></div> + <div>         ::= <a href="#simple-target-specification" title="simple_target_specification" shape="rect">simple_target_specification</a> '=' <a href="#statement-information-item-name" title="statement_information_item_name" shape="rect">statement_information_item_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#statement-information" title="statement-information">statement-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + statement_information_item_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="241" height="273"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NUMBER</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">MORE</text> + <rect x="43" y="57" width="114" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">COMMAND_FUNCTION</text> + <rect x="43" y="85" width="146" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">COMMAND_FUNCTION_CODE</text> + <rect x="43" y="113" width="106" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">DYNAMIC_FUNCTION</text> + <rect x="43" y="141" width="138" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">DYNAMIC_FUNCTION_CODE</text> + <rect x="43" y="169" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">ROW_COUNT</text> + <rect x="43" y="197" width="144" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">TRANSACTIONS_COMMITTED</text> + <rect x="43" y="225" width="154" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">TRANSACTIONS_ROLLED_BACK</text> + <rect x="43" y="253" width="112" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">TRANSACTION_ACTIVE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m48 0 h4 m0 0 h106 m-182 0 h20 m162 0 h20 m-202 0 q10 0 10 10 m182 0 q0 -10 10 -10 m-192 10 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m36 0 h4 m0 0 h118 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m114 0 h4 m0 0 h40 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m146 0 h4 m0 0 h8 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m106 0 h4 m0 0 h48 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m138 0 h4 m0 0 h16 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m72 0 h4 m0 0 h82 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m144 0 h4 m0 0 h10 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m154 0 h4 m-172 -10 v20 m182 0 v-20 m-182 20 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m112 0 h4 m0 0 h42 m23 -252 h-3"/> + <polygon points="231 10 239 6 239 14"/> + <polygon points="231 10 223 6 223 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#statement-information-item-name" title="statement_information_item_name" shape="rect">statement_information_item_name</a></div> + <div>         ::= 'NUMBER'</div> + <div>           | 'MORE'</div> + <div>           | 'COMMAND_FUNCTION'</div> + <div>           | 'COMMAND_FUNCTION_CODE'</div> + <div>           | 'DYNAMIC_FUNCTION'</div> + <div>           | 'DYNAMIC_FUNCTION_CODE'</div> + <div>           | 'ROW_COUNT'</div> + <div>           | 'TRANSACTIONS_COMMITTED'</div> + <div>           | 'TRANSACTIONS_ROLLED_BACK'</div> + <div>           | 'TRANSACTION_ACTIVE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#statement-information-item" title="statement-information-item">statement-information-item</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + condition_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="425" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">CONDITION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="93" y="29" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="41">simple_value_specification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#condition-information-item" xlink:title="condition_information_item" shape="rect"> + <rect x="249" y="29" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="41">condition_information_item</text></a><rect x="249" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="253" y="13">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m62 0 h4 m0 0 h4 m128 0 h4 m20 0 h4 m132 0 h4 m-160 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m140 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-140 0 h4 m8 0 h4 m0 0 h124 m23 28 h-3"/> + <polygon points="415 38 423 34 423 42"/> + <polygon points="415 38 407 34 407 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#condition-information" title="condition_information" shape="rect">condition_information</a></div> + <div>         ::= 'CONDITION' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a> <a href="#condition-information-item" title="condition_information_item" shape="rect">condition_information_item</a> ( ',' <a href="#condition-information-item" title="condition_information_item" shape="rect">condition_information_item</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-diagnostics-information" title="sql-diagnostics-information">sql-diagnostics-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + condition_information_item +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="373" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-target-specification" xlink:title="simple_target_specification" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_target_specification</text></a><rect x="161" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="13">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#condition-information-item-name" xlink:title="condition_information_item_name" shape="rect"> + <rect x="183" y="1" width="166" height="18" class="nonterminal"/> + <text class="nonterminal" x="187" y="13">condition_information_item_name</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m166 0 h4 m3 0 h-3"/> + <polygon points="363 10 371 6 371 14"/> + <polygon points="363 10 355 6 355 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#condition-information-item" title="condition_information_item" shape="rect">condition_information_item</a></div> + <div>         ::= <a href="#simple-target-specification" title="simple_target_specification" shape="rect">simple_target_specification</a> '=' <a href="#condition-information-item-name" title="condition_information_item_name" shape="rect">condition_information_item_name</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#condition-information" title="condition-information">condition-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + condition_information_item_name +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" height="749"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="84" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">CATALOG_NAME</text> + <rect x="43" y="29" width="78" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CLASS_ORIGIN</text> + <rect x="43" y="57" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">COLUMN_NAME</text> + <rect x="43" y="85" width="108" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">CONDITION_NUMBER</text> + <rect x="43" y="113" width="104" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">CONNECTION_NAME</text> + <rect x="43" y="141" width="118" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">CONSTRAINT_CATALOG</text> + <rect x="43" y="169" width="102" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">CONSTRAINT_NAME</text> + <rect x="43" y="197" width="114" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">CONSTRAINT_SCHEMA</text> + <rect x="43" y="225" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">CURSOR_NAME</text> + <rect x="43" y="253" width="94" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">MESSAGE_LENGTH</text> + <rect x="43" y="281" width="130" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">MESSAGE_OCTET_LENGTH</text> + <rect x="43" y="309" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">MESSAGE_TEXT</text> + <rect x="43" y="337" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="349">PARAMETER_MODE</text> + <rect x="43" y="365" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="377">PARAMETER_NAME</text> + <rect x="43" y="393" width="166" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="405">PARAMETER_ORDINAL_POSITION</text> + <rect x="43" y="421" width="110" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="433">RETURNED_SQLSTATE</text> + <rect x="43" y="449" width="100" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="461">ROUTINE_CATALOG</text> + <rect x="43" y="477" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="489">ROUTINE_NAME</text> + <rect x="43" y="505" width="94" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="517">ROUTINE_SCHEMA</text> + <rect x="43" y="533" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="545">SCHEMA_NAME</text> + <rect x="43" y="561" width="76" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="573">SERVER_NAME</text> + <rect x="43" y="589" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="601">SPECIFIC_NAME</text> + <rect x="43" y="617" width="96" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="629">SUBCLASS_ORIGIN</text> + <rect x="43" y="645" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="657">TABLE_NAME</text> + <rect x="43" y="673" width="98" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="685">TRIGGER_CATALOG</text> + <rect x="43" y="701" width="80" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="713">TRIGGER_NAME</text> + <rect x="43" y="729" width="92" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="741">TRIGGER_SCHEMA</text> + <path class="line" d="m17 10 h2 m20 0 h4 m84 0 h4 m0 0 h82 m-194 0 h20 m174 0 h20 m-214 0 q10 0 10 10 m194 0 q0 -10 10 -10 m-204 10 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m78 0 h4 m0 0 h88 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m82 0 h4 m0 0 h84 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m108 0 h4 m0 0 h58 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m104 0 h4 m0 0 h62 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m118 0 h4 m0 0 h48 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m102 0 h4 m0 0 h64 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m114 0 h4 m0 0 h52 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m80 0 h4 m0 0 h86 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m94 0 h4 m0 0 h72 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m130 0 h4 m0 0 h36 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m80 0 h4 m0 0 h86 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m98 0 h4 m0 0 h68 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m96 0 h4 m0 0 h70 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m166 0 h4 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m110 0 h4 m0 0 h56 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m100 0 h4 m0 0 h66 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m82 0 h4 m0 0 h84 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m94 0 h4 m0 0 h72 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m80 0 h4 m0 0 h86 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m76 0 h4 m0 0 h90 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m82 0 h4 m0 0 h84 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m96 0 h4 m0 0 h70 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m68 0 h4 m0 0 h98 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m98 0 h4 m0 0 h68 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m80 0 h4 m0 0 h86 m-184 -10 v20 m194 0 v-20 m-194 20 v8 m194 0 v-8 m-194 8 q0 10 10 10 m174 0 q10 0 10 -10 m-184 10 h4 m92 0 h4 m0 0 h74 m23 -728 h-3"/> + <polygon points="243 10 251 6 251 14"/> + <polygon points="243 10 235 6 235 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#condition-information-item-name" title="condition_information_item_name" shape="rect">condition_information_item_name</a></div> + <div>         ::= 'CATALOG_NAME'</div> + <div>           | 'CLASS_ORIGIN'</div> + <div>           | 'COLUMN_NAME'</div> + <div>           | 'CONDITION_NUMBER'</div> + <div>           | 'CONNECTION_NAME'</div> + <div>           | 'CONSTRAINT_CATALOG'</div> + <div>           | 'CONSTRAINT_NAME'</div> + <div>           | 'CONSTRAINT_SCHEMA'</div> + <div>           | 'CURSOR_NAME'</div> + <div>           | 'MESSAGE_LENGTH'</div> + <div>           | 'MESSAGE_OCTET_LENGTH'</div> + <div>           | 'MESSAGE_TEXT'</div> + <div>           | 'PARAMETER_MODE'</div> + <div>           | 'PARAMETER_NAME'</div> + <div>           | 'PARAMETER_ORDINAL_POSITION'</div> + <div>           | 'RETURNED_SQLSTATE'</div> + <div>           | 'ROUTINE_CATALOG'</div> + <div>           | 'ROUTINE_NAME'</div> + <div>           | 'ROUTINE_SCHEMA'</div> + <div>           | 'SCHEMA_NAME'</div> + <div>           | 'SERVER_NAME'</div> + <div>           | 'SPECIFIC_NAME'</div> + <div>           | 'SUBCLASS_ORIGIN'</div> + <div>           | 'TABLE_NAME'</div> + <div>           | 'TRIGGER_CATALOG'</div> + <div>           | 'TRIGGER_NAME'</div> + <div>           | 'TRIGGER_SCHEMA'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#condition-information-item" title="condition-information-item">condition-information-item</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + all_information +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="279" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#all-info-target" xlink:title="all_info_target" shape="rect"> + <rect x="23" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">all_info_target</text></a><rect x="103" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="13">=</text> + <rect x="125" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">ALL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#all-qualifier" xlink:title="all_qualifier" shape="rect"> + <rect x="177" y="22" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="34">all_qualifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m72 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m24 0 h4 m20 0 h10 m0 0 h56 m-86 0 h20 m66 0 h20 m-106 0 q10 0 10 10 m86 0 q0 -10 10 -10 m-96 10 v1 m86 0 v-1 m-86 1 q0 10 10 10 m66 0 q10 0 10 -10 m-76 10 h4 m58 0 h4 m23 -21 h-3"/> + <polygon points="269 10 277 6 277 14"/> + <polygon points="269 10 261 6 261 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#all-information" title="all_information" shape="rect">all_information</a></div> + <div>         ::= <a href="#all-info-target" title="all_info_target" shape="rect">all_info_target</a> '=' 'ALL' <a href="#all-qualifier" title="all_qualifier" shape="rect">all_qualifier</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-diagnostics-information" title="sql-diagnostics-information">sql-diagnostics-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + all_info_target +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-target-specification" xlink:title="simple_target_specification" shape="rect"> + <rect x="23" y="1" width="130" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_target_specification</text></a><path class="line" d="m17 10 h2 m0 0 h4 m130 0 h4 m3 0 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#all-info-target" title="all_info_target" shape="rect">all_info_target</a></div> + <div>         ::= <a href="#simple-target-specification" title="simple_target_specification" shape="rect">simple_target_specification</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#all-information" title="all-information">all-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + all_qualifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="325" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">STATEMENT</text> + <rect x="43" y="29" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">CONDITION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-value-specification" xlink:title="simple_value_specification" shape="rect"> + <rect x="133" y="50" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="62">simple_value_specification</text></a><path class="line" d="m17 10 h2 m20 0 h4 m62 0 h4 m0 0 h176 m-266 0 h20 m246 0 h20 m-286 0 q10 0 10 10 m266 0 q0 -10 10 -10 m-276 10 v8 m266 0 v-8 m-266 8 q0 10 10 10 m246 0 q10 0 10 -10 m-256 10 h4 m62 0 h4 m20 0 h10 m0 0 h126 m-156 0 h20 m136 0 h20 m-176 0 q10 0 10 10 m156 0 q0 -10 10 -10 m-166 10 v1 m156 0 v-1 m-156 1 q0 10 10 10 m136 0 q10 0 10 -10 m-146 10 h4 m128 0 h4 m43 -49 h-3"/> + <polygon points="315 10 323 6 323 14"/> + <polygon points="315 10 307 6 307 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#all-qualifier" title="all_qualifier" shape="rect">all_qualifier</a></div> + <div>         ::= 'STATEMENT'</div> + <div>           | 'CONDITION' <a href="#simple-value-specification" title="simple_value_specification" shape="rect">simple_value_specification</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#all-information" title="all-information">all-information</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + use_statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="157" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">USE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-chain" xlink:title="identifier_chain" shape="rect"> + <rect x="57" y="1" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="61" y="13">identifier_chain</text></a><path class="line" d="m17 10 h2 m0 0 h4 m26 0 h4 m0 0 h4 m76 0 h4 m3 0 h-3"/> + <polygon points="147 10 155 6 155 14"/> + <polygon points="147 10 139 6 139 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#use-statement" title="use_statement" shape="rect">use_statement</a></div> + <div>         ::= 'USE' <a href="#identifier-chain" title="identifier_chain" shape="rect">identifier_chain</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#directly-executable-statement" title="directly-executable-statement">directly-executable-statement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + lambda +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lambda-params" xlink:title="lambda_params" shape="rect"> + <rect x="23" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">lambda_params</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lambda-body" xlink:title="lambda_body" shape="rect"> + <rect x="117" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="13">lambda_body</text></a><path class="line" d="m17 10 h2 m0 0 h4 m86 0 h4 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="205 10 213 6 213 14"/> + <polygon points="205 10 197 6 197 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#lambda" title="lambda" shape="rect">lambda</a>   ::= <a href="#lambda-params" title="lambda_params" shape="rect">lambda_params</a> <a href="#lambda-body" title="lambda_body" shape="rect">lambda_body</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-argument" title="sql-argument">sql-argument</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + lambda_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="163" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">-></text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="49" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="53" y="13">value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m18 0 h4 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="153 10 161 6 161 14"/> + <polygon points="153 10 145 6 145 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#lambda-body" title="lambda_body" shape="rect">lambda_body</a></div> + <div>         ::= '->' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#attribute-or-method-reference" title="attribute-or-method-reference">attribute-or-method-reference</a></li><li><a href="#lambda" title="lambda">lambda</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + lambda_params +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="285" height="89"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#actual-identifier" xlink:title="actual_identifier" shape="rect"> + <rect x="43" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">actual_identifier</text></a><rect x="43" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#actual-identifier" xlink:title="actual_identifier" shape="rect"> + <rect x="103" y="57" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="69">actual_identifier</text></a><rect x="103" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="41">,</text> + <rect x="229" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="69">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m78 0 h4 m0 0 h120 m-226 0 h20 m206 0 h20 m-246 0 q10 0 10 10 m226 0 q0 -10 10 -10 m-236 10 v36 m226 0 v-36 m-226 36 q0 10 10 10 m206 0 q10 0 10 -10 m-216 10 h4 m12 0 h4 m40 0 h4 m78 0 h4 m-106 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m86 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-86 0 h4 m8 0 h4 m0 0 h70 m-126 28 h20 m126 0 h20 m-166 0 q10 0 10 10 m146 0 q0 -10 10 -10 m-156 10 v1 m146 0 v-1 m-146 1 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h10 m0 0 h116 m20 -21 h4 m12 0 h4 m23 -56 h-3"/> + <polygon points="275 10 283 6 283 14"/> + <polygon points="275 10 267 6 267 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#lambda-params" title="lambda_params" shape="rect">lambda_params</a></div> + <div>         ::= <a href="#actual-identifier" title="actual_identifier" shape="rect">actual_identifier</a></div> + <div>           | '(' ( <a href="#actual-identifier" title="actual_identifier" shape="rect">actual_identifier</a> ( ',' <a href="#actual-identifier" title="actual_identifier" shape="rect">actual_identifier</a> )* )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#lambda" title="lambda">lambda</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + if_not_exists +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">IF</text> + <rect x="47" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="51" y="13">NOT</text> + <rect x="83" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">EXISTS</text> + <path class="line" d="m17 10 h2 m0 0 h4 m16 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m40 0 h4 m3 0 h-3"/> + <polygon points="137 10 145 6 145 14"/> + <polygon points="137 10 129 6 129 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#if-not-exists" title="if_not_exists" shape="rect">if_not_exists</a></div> + <div>         ::= 'IF' 'NOT' 'EXISTS'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-definition" title="schema-definition">schema-definition</a></li><li><a href="#table-definition" title="table-definition">table-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identifier_suffix_chain +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="269" height="61"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="63" y="13" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="25">@</text> + <rect x="63" y="41" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="53">:</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#actual-identifier" xlink:title="actual_identifier" shape="rect"> + <rect x="127" y="34" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="131" y="46">actual_identifier</text></a><path class="line" d="m17 22 h2 m40 0 h4 m16 0 h4 m-44 0 h20 m24 0 h20 m-64 0 q10 0 10 10 m44 0 q0 -10 10 -10 m-54 10 v8 m44 0 v-8 m-44 8 q0 10 10 10 m24 0 q10 0 10 -10 m-34 10 h4 m10 0 h4 m0 0 h6 m40 -28 h10 m0 0 h76 m-106 0 h20 m86 0 h20 m-126 0 q10 0 10 10 m106 0 q0 -10 10 -10 m-116 10 v1 m106 0 v-1 m-106 1 q0 10 10 10 m86 0 q10 0 10 -10 m-96 10 h4 m78 0 h4 m-190 -21 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m190 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-190 0 h10 m0 0 h180 m23 21 h-3"/> + <polygon points="259 22 267 18 267 26"/> + <polygon points="259 22 251 18 251 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identifier-suffix-chain" title="identifier_suffix_chain" shape="rect">identifier_suffix_chain</a></div> + <div>         ::= ( ( '@' | ':' ) <a href="#actual-identifier" title="actual_identifier" shape="rect">actual_identifier</a>? )+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alias" title="alias">alias</a></li><li><a href="#identifier" title="identifier">identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + limit_clause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LIMIT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="85" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">unsigned_integer</text></a><rect x="85" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="41">ALL</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m20 0 h4 m90 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m24 0 h4 m0 0 h66 m23 -28 h-3"/> + <polygon points="209 10 217 6 217 14"/> + <polygon points="209 10 201 6 201 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#limit-clause" title="limit_clause" shape="rect">limit_clause</a></div> + <div>         ::= 'LIMIT' ( <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> | 'ALL' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#query-expression" title="query-expression">query-expression</a></li><li><a href="#query-primary" title="query-primary">query-primary</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + presto_generic_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="315" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#presto-array-type" xlink:title="presto_array_type" shape="rect"> + <rect x="43" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">presto_array_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#presto-map-type" xlink:title="presto_map_type" shape="rect"> + <rect x="43" y="29" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">presto_map_type</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regular-identifier" xlink:title="regular_identifier" shape="rect"> + <rect x="43" y="85" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">regular_identifier</text></a><rect x="135" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="97">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="175" y="85" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="179" y="97">data_type</text></a><rect x="175" y="57" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="179" y="69">,</text> + <rect x="259" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="97">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m94 0 h4 m0 0 h134 m-256 0 h20 m236 0 h20 m-276 0 q10 0 10 10 m256 0 q0 -10 10 -10 m-266 10 v8 m256 0 v-8 m-256 8 q0 10 10 10 m236 0 q10 0 10 -10 m-246 10 h4 m92 0 h4 m0 0 h136 m-246 -10 v20 m256 0 v-20 m-256 20 v36 m256 0 v-36 m-256 36 q0 10 10 10 m236 0 q10 0 10 -10 m-246 10 h4 m84 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m56 0 h4 m-84 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m64 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-64 0 h4 m8 0 h4 m0 0 h48 m20 28 h4 m12 0 h4 m23 -84 h-3"/> + <polygon points="305 10 313 6 313 14"/> + <polygon points="305 10 297 6 297 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#presto-generic-type" title="presto_generic_type" shape="rect">presto_generic_type</a></div> + <div>         ::= <a href="#presto-array-type" title="presto_array_type" shape="rect">presto_array_type</a></div> + <div>           | <a href="#presto-map-type" title="presto_map_type" shape="rect">presto_map_type</a></div> + <div>           | <a href="#regular-identifier" title="regular_identifier" shape="rect">regular_identifier</a> '(' <a href="#data-type" title="data_type" shape="rect">data_type</a> ( ',' <a href="#data-type" title="data_type" shape="rect">data_type</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#data-type" title="data-type">data-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + presto_array_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="233" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ARRAY</text> + <rect x="89" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13"><</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="111" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">data_type</text></a><rect x="175" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="179" y="13">></text> + <rect x="89" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="109" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="113" y="41">data_type</text></a><rect x="173" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="41">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m20 0 h4 m14 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m14 0 h4 m-128 0 h20 m108 0 h20 m-148 0 q10 0 10 10 m128 0 q0 -10 10 -10 m-138 10 v8 m128 0 v-8 m-128 8 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m12 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m23 -28 h-3"/> + <polygon points="223 10 231 6 231 14"/> + <polygon points="223 10 215 6 215 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#presto-array-type" title="presto_array_type" shape="rect">presto_array_type</a></div> + <div>         ::= 'ARRAY' ( '<' <a href="#data-type" title="data_type" shape="rect">data_type</a> '>' | '(' <a href="#data-type" title="data_type" shape="rect">data_type</a> ')' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#presto-generic-type" title="presto-generic-type">presto-generic-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + presto_map_type +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="303" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">MAP</text> + <rect x="79" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13"><</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="101" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="13">data_type</text></a><rect x="165" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="181" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="13">data_type</text></a><rect x="245" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="13">></text> + <rect x="79" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="99" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="41">data_type</text></a><rect x="163" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="41">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#data-type" xlink:title="data_type" shape="rect"> + <rect x="179" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="183" y="41">data_type</text></a><rect x="243" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="41">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m28 0 h4 m20 0 h4 m14 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m14 0 h4 m-208 0 h20 m188 0 h20 m-228 0 q10 0 10 10 m208 0 q0 -10 10 -10 m-218 10 v8 m208 0 v-8 m-208 8 q0 10 10 10 m188 0 q10 0 10 -10 m-198 10 h4 m12 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m23 -28 h-3"/> + <polygon points="293 10 301 6 301 14"/> + <polygon points="293 10 285 6 285 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#presto-map-type" title="presto_map_type" shape="rect">presto_map_type</a></div> + <div>         ::= 'MAP' ( '<' <a href="#data-type" title="data_type" shape="rect">data_type</a> ',' <a href="#data-type" title="data_type" shape="rect">data_type</a> '>' | '(' <a href="#data-type" title="data_type" shape="rect">data_type</a> ',' <a href="#data-type" title="data_type" shape="rect">data_type</a> ')' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#presto-generic-type" title="presto-generic-type">presto-generic-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + grouping_expression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">value_expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#grouping-expression" title="grouping_expression" shape="rect">grouping_expression</a></div> + <div>         ::= <a href="#value-expression" title="value_expression" shape="rect">value_expression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grouping-column-reference" title="grouping-column-reference">grouping-column-reference</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + count +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="431" height="98"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">COUNT</text> + <rect x="91" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="13">(</text> + <rect x="43" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">"COUNT"</text> + <rect x="99" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="103" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-quantifier" xlink:title="set_quantifier" shape="rect"> + <rect x="139" y="50" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="143" y="62">set_quantifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="257" y="50" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="261" y="62">value_expression</text></a><rect x="257" y="78" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="90">*</text> + <rect x="395" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="399" y="13">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h4 m12 0 h4 m0 0 h264 m-352 0 h20 m332 0 h20 m-372 0 q10 0 10 10 m352 0 q0 -10 10 -10 m-362 10 v8 m352 0 v-8 m-352 8 q0 10 10 10 m332 0 q10 0 10 -10 m-342 10 h4 m48 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h68 m-98 0 h20 m78 0 h20 m-118 0 q10 0 10 10 m98 0 q0 -10 10 -10 m-108 10 v1 m98 0 v-1 m-98 1 q0 10 10 10 m78 0 q10 0 10 -10 m-88 10 h4 m70 0 h4 m40 -21 h10 m0 0 h88 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v1 m118 0 v-1 m-118 1 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m90 0 h4 m-108 -10 v20 m118 0 v-20 m-118 20 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m14 0 h4 m0 0 h76 m40 -77 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="421 10 429 6 429 14"/> + <polygon points="421 10 413 6 413 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#count" title="count" shape="rect">count</a>    ::= ( 'COUNT' '(' | '"COUNT"' '(' <a href="#set-quantifier" title="set_quantifier" shape="rect">set_quantifier</a>? ( <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> | '*' )? ) ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#aggregate-function" title="aggregate-function">aggregate-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_description +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">COMMENT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="87" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">character_string_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-description" title="table_description" shape="rect">table_description</a></div> + <div>         ::= 'COMMENT' <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#table-definition" title="table-definition">table-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + routine_description +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">COMMENT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="87" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">character_string_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#routine-description" title="routine_description" shape="rect">routine_description</a></div> + <div>         ::= 'COMMENT' <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#function-specification" title="function-specification">function-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + column_description +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">COMMENT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-string-literal" xlink:title="character_string_literal" shape="rect"> + <rect x="87" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">character_string_literal</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m0 0 h4 m110 0 h4 m3 0 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#column-description" title="column_description" shape="rect">column_description</a></div> + <div>         ::= 'COMMENT' <a href="#character-string-literal" title="character_string_literal" shape="rect">character_string_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#column-definition" title="column-definition">column-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + presto_aggregation_function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="201" height="161"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="114" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">NUMERIC_HISTOGRAM</text> + <rect x="43" y="29" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">HISTOGRAM</text> + <rect x="43" y="57" width="112" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">APPROEX_PERCENTILE</text> + <rect x="43" y="85" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">MAP_AGG</text> + <rect x="43" y="113" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">SET_AGG</text> + <rect x="43" y="141" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">MAP_UNION</text> + <path class="line" d="m17 10 h2 m20 0 h4 m114 0 h4 m-142 0 h20 m122 0 h20 m-162 0 q10 0 10 10 m142 0 q0 -10 10 -10 m-152 10 v8 m142 0 v-8 m-142 8 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m66 0 h4 m0 0 h48 m-132 -10 v20 m142 0 v-20 m-142 20 v8 m142 0 v-8 m-142 8 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m112 0 h4 m0 0 h2 m-132 -10 v20 m142 0 v-20 m-142 20 v8 m142 0 v-8 m-142 8 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m54 0 h4 m0 0 h60 m-132 -10 v20 m142 0 v-20 m-142 20 v8 m142 0 v-8 m-142 8 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m50 0 h4 m0 0 h64 m-132 -10 v20 m142 0 v-20 m-142 20 v8 m142 0 v-8 m-142 8 q0 10 10 10 m122 0 q10 0 10 -10 m-132 10 h4 m66 0 h4 m0 0 h48 m23 -140 h-3"/> + <polygon points="191 10 199 6 199 14"/> + <polygon points="191 10 183 6 183 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#presto-aggregation-function" title="presto_aggregation_function" shape="rect">presto_aggregation_function</a></div> + <div>         ::= 'NUMERIC_HISTOGRAM'</div> + <div>           | 'HISTOGRAM'</div> + <div>           | 'APPROEX_PERCENTILE'</div> + <div>           | 'MAP_AGG'</div> + <div>           | 'SET_AGG'</div> + <div>           | 'MAP_UNION'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#presto-aggregations" title="presto-aggregations">presto-aggregations</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + presto_aggregations +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="523" height="82"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#presto-aggregation-function" xlink:title="presto_aggregation_function" shape="rect"> + <rect x="23" y="29" width="140" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="41">presto_aggregation_function</text></a><rect x="171" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="175" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set-quantifier" xlink:title="set_quantifier" shape="rect"> + <rect x="231" y="50" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="235" y="62">set_quantifier</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="349" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="353" y="41">value_expression</text></a><rect x="349" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="353" y="13">,</text> + <rect x="487" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="491" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m140 0 h4 m0 0 h4 m12 0 h4 m40 0 h10 m0 0 h68 m-98 0 h20 m78 0 h20 m-118 0 q10 0 10 10 m98 0 q0 -10 10 -10 m-108 10 v1 m98 0 v-1 m-98 1 q0 10 10 10 m78 0 q10 0 10 -10 m-88 10 h4 m70 0 h4 m40 -21 h4 m90 0 h4 m-118 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m98 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-98 0 h4 m8 0 h4 m0 0 h82 m-256 28 h20 m256 0 h20 m-296 0 q10 0 10 10 m276 0 q0 -10 10 -10 m-286 10 v22 m276 0 v-22 m-276 22 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h10 m0 0 h246 m20 -42 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="513 38 521 34 521 42"/> + <polygon points="513 38 505 34 505 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#presto-aggregations" title="presto_aggregations" shape="rect">presto_aggregations</a></div> + <div>         ::= <a href="#presto-aggregation-function" title="presto_aggregation_function" shape="rect">presto_aggregation_function</a> '(' ( <a href="#set-quantifier" title="set_quantifier" shape="rect">set_quantifier</a>? <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ( ',' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> )* )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#aggregate-function" title="aggregate-function">aggregate-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + try_cast +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRY_CAST</text> + <rect x="85" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-operand" xlink:title="cast_operand" shape="rect"> + <rect x="105" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">cast_operand</text></a><rect x="185" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cast-target" xlink:title="cast_target" shape="rect"> + <rect x="213" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="13">cast_target</text></a><rect x="281" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="285" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m54 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m72 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="307 10 315 6 315 14"/> + <polygon points="307 10 299 6 299 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#try-cast" title="try_cast" shape="rect">try_cast</a> ::= 'TRY_CAST' '(' <a href="#cast-operand" title="cast_operand" shape="rect">cast_operand</a> 'AS' <a href="#cast-target" title="cast_target" shape="rect">cast_target</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#cast-specification" title="cast-specification">cast-specification</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + table_attributes +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="325" height="49"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#actual-identifier" xlink:title="actual_identifier" shape="rect"> + <rect x="63" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">actual_identifier</text></a><rect x="149" y="29" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="41">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="171" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="175" y="41">value_expression</text></a><rect x="63" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">,</text> + <rect x="289" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="293" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m78 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 0 h4 m-226 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m206 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-206 0 h4 m8 0 h4 m0 0 h190 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="315 38 323 34 323 42"/> + <polygon points="315 38 307 34 307 42"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#table-attributes" title="table_attributes" shape="rect">table_attributes</a></div> + <div>         ::= '(' <a href="#actual-identifier" title="actual_identifier" shape="rect">actual_identifier</a> '=' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> ( ',' <a href="#actual-identifier" title="actual_identifier" shape="rect">actual_identifier</a> '=' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#as-subquery-clause" title="as-subquery-clause">as-subquery-clause</a></li><li><a href="#table-definition" title="table-definition">table-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + or_replace +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="125" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">OR</text> + <rect x="53" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="57" y="13">REPLACE</text> + <path class="line" d="m17 10 h2 m0 0 h4 m22 0 h4 m0 0 h4 m48 0 h4 m3 0 h-3"/> + <polygon points="115 10 123 6 123 14"/> + <polygon points="115 10 107 6 107 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#or-replace" title="or_replace" shape="rect">or_replace</a></div> + <div>         ::= 'OR' 'REPLACE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#schema-function" title="schema-function">schema-function</a></li><li><a href="#view-definition" title="view-definition">view-definition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + udaf_filter +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="107" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#filter-clause" xlink:title="filter_clause" shape="rect"> + <rect x="23" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">filter_clause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m60 0 h4 m3 0 h-3"/> + <polygon points="97 10 105 6 105 14"/> + <polygon points="97 10 89 6 89 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#udaf-filter" title="udaf_filter" shape="rect">udaf_filter</a></div> + <div>         ::= <a href="#filter-clause" title="filter_clause" shape="rect">filter_clause</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#method-invocation" title="method-invocation">method-invocation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + extra_args_to_agg +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="43" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="25">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#value-expression" xlink:title="value_expression" shape="rect"> + <rect x="59" y="13" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="25">value_expression</text></a><path class="line" d="m17 22 h2 m20 0 h4 m8 0 h4 m0 0 h4 m90 0 h4 m-134 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m114 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-114 0 h10 m0 0 h104 m23 21 h-3"/> + <polygon points="183 22 191 18 191 26"/> + <polygon points="183 22 175 18 175 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#extra-args-to-agg" title="extra_args_to_agg" shape="rect">extra_args_to_agg</a></div> + <div>         ::= ( ',' <a href="#value-expression" title="value_expression" shape="rect">value_expression</a> )+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-set-function" title="general-set-function">general-set-function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identifier_starting_with_underscore +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="233" height="54"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="43" y="13" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="25">_</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#regular-identifier" xlink:title="regular_identifier" shape="rect"> + <rect x="105" y="34" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="46">regular_identifier</text></a><path class="line" d="m17 22 h2 m20 0 h4 m14 0 h4 m-42 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m22 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-22 0 h10 m0 0 h12 m40 21 h10 m0 0 h82 m-112 0 h20 m92 0 h20 m-132 0 q10 0 10 10 m112 0 q0 -10 10 -10 m-122 10 v1 m112 0 v-1 m-112 1 q0 10 10 10 m92 0 q10 0 10 -10 m-102 10 h4 m84 0 h4 m23 -21 h-3"/> + <polygon points="223 22 231 18 231 26"/> + <polygon points="223 22 215 18 215 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identifier-starting-with-underscore" title="identifier_starting_with_underscore" shape="rect">identifier_starting_with_underscore</a></div> + <div>         ::= '_'+ <a href="#regular-identifier" title="regular_identifier" shape="rect">regular_identifier</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + generic_unicode +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" height="73"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="23" y="13" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="25">U&'</text> + <polygon points="113 22 116 13 146 13 149 22 146 31 116 31" class="regexp"/> + <text class="regexp" x="124" y="25">[^']</text> + <rect x="113" y="41" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="53">''</text> + <rect x="217" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="25">'</text> + <path class="line" d="m17 22 h2 m0 0 h4 m22 0 h4 m60 0 h4 m36 0 h4 m-64 0 h20 m44 0 h20 m-84 0 q10 0 10 10 m64 0 q0 -10 10 -10 m-74 10 v8 m64 0 v-8 m-64 8 q0 10 10 10 m44 0 q10 0 10 -10 m-54 10 h4 m10 0 h4 m0 0 h26 m-84 -28 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m84 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-84 0 h10 m0 0 h74 m-124 21 h20 m124 0 h20 m-164 0 q10 0 10 10 m144 0 q0 -10 10 -10 m-154 10 v29 m144 0 v-29 m-144 29 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h10 m0 0 h114 m20 -49 h4 m8 0 h4 m3 0 h-3"/> + <polygon points="239 22 247 18 247 26"/> + <polygon points="239 22 231 18 231 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#generic-unicode" title="generic_unicode" shape="rect">generic_unicode</a></div> + <div>         ::= "U&'" ( [^'] | "''" )* "'"</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + regular_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="121" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-body" xlink:title="identifier_body" shape="rect"> + <rect x="23" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">identifier_body</text></a><path class="line" d="m17 10 h2 m0 0 h4 m74 0 h4 m3 0 h-3"/> + <polygon points="111 10 119 6 119 14"/> + <polygon points="111 10 103 6 103 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regular-identifier" title="regular_identifier" shape="rect">regular_identifier</a></div> + <div>         ::= <a href="#identifier-body" title="identifier_body" shape="rect">identifier_body</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#actual-identifier" title="actual-identifier">actual-identifier</a></li><li><a href="#identifier-starting-with-underscore" title="identifier-starting-with-underscore">identifier-starting-with-underscore</a></li><li><a href="#presto-generic-type" title="presto-generic-type">presto-generic-type</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identifier_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="42"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-start" xlink:title="identifier_start" shape="rect"> + <rect x="23" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">identifier_start</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-part" xlink:title="identifier_part" shape="rect"> + <rect x="123" y="1" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="13">identifier_part</text></a><path class="line" d="m17 31 h2 m0 0 h4 m72 0 h4 m20 0 h10 m0 0 h68 m-98 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m78 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-78 0 h4 m70 0 h4 m23 21 h-3"/> + <polygon points="227 31 235 27 235 35"/> + <polygon points="227 31 219 27 219 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identifier-body" title="identifier_body" shape="rect">identifier_body</a></div> + <div>         ::= <a href="#identifier-start" title="identifier_start" shape="rect">identifier_start</a> <a href="#identifier-part" title="identifier_part" shape="rect">identifier_part</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regular-identifier" title="regular-identifier">regular-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identifier_part +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="171" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-start" xlink:title="identifier_start" shape="rect"> + <rect x="43" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">identifier_start</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#identifier-extend" xlink:title="identifier_extend" shape="rect"> + <rect x="43" y="29" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">identifier_extend</text></a><path class="line" d="m17 10 h2 m20 0 h4 m72 0 h4 m0 0 h12 m-112 0 h20 m92 0 h20 m-132 0 q10 0 10 10 m112 0 q0 -10 10 -10 m-122 10 v8 m112 0 v-8 m-112 8 q0 10 10 10 m92 0 q10 0 10 -10 m-102 10 h4 m84 0 h4 m23 -28 h-3"/> + <polygon points="161 10 169 6 169 14"/> + <polygon points="161 10 153 6 153 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identifier-part" title="identifier_part" shape="rect">identifier_part</a></div> + <div>         ::= <a href="#identifier-start" title="identifier_start" shape="rect">identifier_start</a></div> + <div>           | <a href="#identifier-extend" title="identifier_extend" shape="rect">identifier_extend</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#identifier-body" title="identifier-body">identifier-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identifier_start +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="87" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="23 10 26 1 60 1 63 10 60 19 26 19" class="regexp"/> + <text class="regexp" x="34" y="13">[a-z]</text> + <path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m3 0 h-3"/> + <polygon points="77 10 85 6 85 14"/> + <polygon points="77 10 69 6 69 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identifier-start" title="identifier_start" shape="rect">identifier_start</a></div> + <div>         ::= [a-z]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#identifier-body" title="identifier-body">identifier-body</a></li><li><a href="#identifier-part" title="identifier-part">identifier-part</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + identifier_extend +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 82 1 85 10 82 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[0-9]</text> + <rect x="43" y="29" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">_</text> + <polygon points="43 66 46 57 92 57 95 66 92 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#xB7]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m42 0 h4 m0 0 h10 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m14 0 h4 m0 0 h38 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m23 -56 h-3"/> + <polygon points="129 10 137 6 137 14"/> + <polygon points="129 10 121 6 121 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#identifier-extend" title="identifier_extend" shape="rect">identifier_extend</a></div> + <div>         ::= [0-9_#xB7]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#identifier-part" title="identifier-part">identifier-part</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + large_object_length_token +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="171" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#digit" xlink:title="digit" shape="rect"> + <rect x="43" y="13" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">digit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#multiplier" xlink:title="multiplier" shape="rect"> + <rect x="99" y="13" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="25">multiplier</text></a><path class="line" d="m17 22 h2 m20 0 h4 m28 0 h4 m-56 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m36 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-36 0 h10 m0 0 h26 m20 21 h4 m48 0 h4 m3 0 h-3"/> + <polygon points="161 22 169 18 169 26"/> + <polygon points="161 22 153 18 153 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#large-object-length-token" title="large_object_length_token" shape="rect">large_object_length_token</a></div> + <div>         ::= <a href="#digit" title="digit" shape="rect">digit</a>+ <a href="#multiplier" title="multiplier" shape="rect">multiplier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#large-object-length" title="large-object-length">large-object-length</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + multiplier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="103" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">K</text> + <rect x="43" y="29" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">M</text> + <rect x="43" y="57" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">G</text> + <rect x="43" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">T</text> + <rect x="43" y="113" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">P</text> + <path class="line" d="m17 10 h2 m20 0 h4 m14 0 h4 m0 0 h2 m-44 0 h20 m24 0 h20 m-64 0 q10 0 10 10 m44 0 q0 -10 10 -10 m-54 10 v8 m44 0 v-8 m-44 8 q0 10 10 10 m24 0 q10 0 10 -10 m-34 10 h4 m16 0 h4 m-34 -10 v20 m44 0 v-20 m-44 20 v8 m44 0 v-8 m-44 8 q0 10 10 10 m24 0 q10 0 10 -10 m-34 10 h4 m14 0 h4 m0 0 h2 m-34 -10 v20 m44 0 v-20 m-44 20 v8 m44 0 v-8 m-44 8 q0 10 10 10 m24 0 q10 0 10 -10 m-34 10 h4 m12 0 h4 m0 0 h4 m-34 -10 v20 m44 0 v-20 m-44 20 v8 m44 0 v-8 m-44 8 q0 10 10 10 m24 0 q10 0 10 -10 m-34 10 h4 m14 0 h4 m0 0 h2 m23 -112 h-3"/> + <polygon points="93 10 101 6 101 14"/> + <polygon points="93 10 85 6 85 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiplier" title="multiplier" shape="rect">multiplier</a></div> + <div>         ::= [KMGTP]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#large-object-length" title="large-object-length">large-object-length</a></li><li><a href="#large-object-length-token" title="large-object-length-token">large-object-length-token</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + delimited_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">"</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delimited-identifier-body" xlink:title="delimited_identifier_body" shape="rect"> + <rect x="63" y="22" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">delimited_identifier_body</text></a><rect x="213" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="13">"</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h120 m-150 0 h20 m130 0 h20 m-170 0 q10 0 10 10 m150 0 q0 -10 10 -10 m-160 10 v1 m150 0 v-1 m-150 1 q0 10 10 10 m130 0 q10 0 10 -10 m-140 10 h4 m122 0 h4 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="239 10 247 6 247 14"/> + <polygon points="239 10 231 6 231 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#delimited-identifier" title="delimited_identifier" shape="rect">delimited_identifier</a></div> + <div>         ::= '"' <a href="#delimited-identifier-body" title="delimited_identifier_body" shape="rect">delimited_identifier_body</a>? '"'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#actual-identifier" title="actual-identifier">actual-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + delimited_identifier_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delimited-identifier-part" xlink:title="delimited_identifier_part" shape="rect"> + <rect x="43" y="13" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">delimited_identifier_part</text></a><path class="line" d="m17 22 h2 m20 0 h4 m116 0 h4 m-144 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m124 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-124 0 h10 m0 0 h114 m23 21 h-3"/> + <polygon points="193 22 201 18 201 26"/> + <polygon points="193 22 185 18 185 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#delimited-identifier-body" title="delimited_identifier_body" shape="rect">delimited_identifier_body</a></div> + <div>         ::= <a href="#delimited-identifier-part" title="delimited_identifier_part" shape="rect">delimited_identifier_part</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#delimited-identifier" title="delimited-identifier">delimited-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + delimited_identifier_part +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nondoublequote-character" xlink:title="nondoublequote_character" shape="rect"> + <rect x="43" y="1" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">nondoublequote_character</text></a><rect x="43" y="29" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">""</text> + <path class="line" d="m17 10 h2 m20 0 h4 m134 0 h4 m-162 0 h20 m142 0 h20 m-182 0 q10 0 10 10 m162 0 q0 -10 10 -10 m-172 10 v8 m162 0 v-8 m-162 8 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m16 0 h4 m0 0 h118 m23 -28 h-3"/> + <polygon points="211 10 219 6 219 14"/> + <polygon points="211 10 203 6 203 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#delimited-identifier-part" title="delimited_identifier_part" shape="rect">delimited_identifier_part</a></div> + <div>         ::= <a href="#nondoublequote-character" title="nondoublequote_character" shape="rect">nondoublequote_character</a></div> + <div>           | '""'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-identifier-part" title="unicode-identifier-part">unicode-identifier-part</a></li><li><a href="#delimited-identifier-body" title="delimited-identifier-body">delimited-identifier-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_delimited_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="423" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">U</text> + <rect x="45" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="49" y="13">&</text> + <rect x="67" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">"</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-delimiter-body" xlink:title="Unicode_delimiter_body" shape="rect"> + <rect x="87" y="1" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">Unicode_delimiter_body</text></a><rect x="213" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="13">"</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-specifier" xlink:title="Unicode_escape_specifier" shape="rect"> + <rect x="253" y="22" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="257" y="34">Unicode_escape_specifier</text></a><path class="line" d="m17 10 h2 m0 0 h4 m14 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m118 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h124 m-154 0 h20 m134 0 h20 m-174 0 q10 0 10 10 m154 0 q0 -10 10 -10 m-164 10 v1 m154 0 v-1 m-154 1 q0 10 10 10 m134 0 q10 0 10 -10 m-144 10 h4 m126 0 h4 m23 -21 h-3"/> + <polygon points="413 10 421 6 421 14"/> + <polygon points="413 10 405 6 405 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-delimited-identifier" title="Unicode_delimited_identifier" shape="rect">Unicode_delimited_identifier</a></div> + <div>         ::= 'U' '&' '"' <a href="#unicode-delimiter-body" title="Unicode_delimiter_body" shape="rect">Unicode_delimiter_body</a> '"' <a href="#unicode-escape-specifier" title="Unicode_escape_specifier" shape="rect">Unicode_escape_specifier</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#actual-identifier" title="actual-identifier">actual-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_escape_specifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="267" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">UESCAPE</text> + <rect x="79" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="83" y="13">'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-character" xlink:title="Unicode_escape_character" shape="rect"> + <rect x="95" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="13">Unicode_escape_character</text></a><rect x="235" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="13">'</text> + <path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m132 0 h4 m0 0 h4 m8 0 h4 m3 0 h-3"/> + <polygon points="257 10 265 6 265 14"/> + <polygon points="257 10 249 6 249 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-escape-specifier" title="Unicode_escape_specifier" shape="rect">Unicode_escape_specifier</a></div> + <div>         ::= 'UESCAPE' "'" <a href="#unicode-escape-character" title="Unicode_escape_character" shape="rect">Unicode_escape_character</a> "'"</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-delimited-identifier" title="unicode-delimited-identifier">unicode-delimited-identifier</a></li><li><a href="#unicode-literal" title="unicode-literal">unicode-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_delimiter_body +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-identifier-part" xlink:title="Unicode_identifier_part" shape="rect"> + <rect x="43" y="13" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">Unicode_identifier_part</text></a><path class="line" d="m17 22 h2 m20 0 h4 m112 0 h4 m-140 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m120 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-120 0 h10 m0 0 h110 m23 21 h-3"/> + <polygon points="189 22 197 18 197 26"/> + <polygon points="189 22 181 18 181 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-delimiter-body" title="Unicode_delimiter_body" shape="rect">Unicode_delimiter_body</a></div> + <div>         ::= <a href="#unicode-identifier-part" title="Unicode_identifier_part" shape="rect">Unicode_identifier_part</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-delimited-identifier" title="unicode-delimited-identifier">unicode-delimited-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_identifier_part +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delimited-identifier-part" xlink:title="delimited_identifier_part" shape="rect"> + <rect x="43" y="1" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">delimited_identifier_part</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-value" xlink:title="Unicode_escape_value" shape="rect"> + <rect x="43" y="29" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">Unicode_escape_value</text></a><path class="line" d="m17 10 h2 m20 0 h4 m116 0 h4 m-144 0 h20 m124 0 h20 m-164 0 q10 0 10 10 m144 0 q0 -10 10 -10 m-154 10 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m116 0 h4 m23 -28 h-3"/> + <polygon points="193 10 201 6 201 14"/> + <polygon points="193 10 185 6 185 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-identifier-part" title="Unicode_identifier_part" shape="rect">Unicode_identifier_part</a></div> + <div>         ::= <a href="#delimited-identifier-part" title="delimited_identifier_part" shape="rect">delimited_identifier_part</a></div> + <div>           | <a href="#unicode-escape-value" title="Unicode_escape_value" shape="rect">Unicode_escape_value</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-delimiter-body" title="unicode-delimiter-body">unicode-delimiter-body</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_escape_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="251" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-4-digit-escape-value" xlink:title="Unicode_4_digit_escape_value" shape="rect"> + <rect x="43" y="1" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">Unicode_4_digit_escape_value</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-6-digit-escape-value" xlink:title="Unicode_6_digit_escape_value" shape="rect"> + <rect x="43" y="29" width="152" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">Unicode_6_digit_escape_value</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-character-escape-value" xlink:title="Unicode_character_escape_value" shape="rect"> + <rect x="43" y="57" width="164" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">Unicode_character_escape_value</text></a><path class="line" d="m17 10 h2 m20 0 h4 m152 0 h4 m0 0 h12 m-192 0 h20 m172 0 h20 m-212 0 q10 0 10 10 m192 0 q0 -10 10 -10 m-202 10 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m152 0 h4 m0 0 h12 m-182 -10 v20 m192 0 v-20 m-192 20 v8 m192 0 v-8 m-192 8 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m164 0 h4 m23 -56 h-3"/> + <polygon points="241 10 249 6 249 14"/> + <polygon points="241 10 233 6 233 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-escape-value" title="Unicode_escape_value" shape="rect">Unicode_escape_value</a></div> + <div>         ::= <a href="#unicode-4-digit-escape-value" title="Unicode_4_digit_escape_value" shape="rect">Unicode_4_digit_escape_value</a></div> + <div>           | <a href="#unicode-6-digit-escape-value" title="Unicode_6_digit_escape_value" shape="rect">Unicode_6_digit_escape_value</a></div> + <div>           | <a href="#unicode-character-escape-value" title="Unicode_character_escape_value" shape="rect">Unicode_character_escape_value</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-identifier-part" title="unicode-identifier-part">unicode-identifier-part</a></li><li><a href="#unicode-representation" title="unicode-representation">unicode-representation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_4_digit_escape_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="331" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-character" xlink:title="Unicode_escape_character" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Unicode_escape_character</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="163" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="167" y="13">hexit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="201" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="205" y="13">hexit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="239" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="243" y="13">hexit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="277" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="281" y="13">hexit</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m30 0 h4 m3 0 h-3"/> + <polygon points="321 10 329 6 329 14"/> + <polygon points="321 10 313 6 313 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-4-digit-escape-value" title="Unicode_4_digit_escape_value" shape="rect">Unicode_4_digit_escape_value</a></div> + <div>         ::= <a href="#unicode-escape-character" title="Unicode_escape_character" shape="rect">Unicode_escape_character</a> <a href="#hexit" title="hexit" shape="rect">hexit</a> <a href="#hexit" title="hexit" shape="rect">hexit</a> <a href="#hexit" title="hexit" shape="rect">hexit</a> <a href="#hexit" title="hexit" shape="rect">hexit</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-escape-value" title="unicode-escape-value">unicode-escape-value</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_6_digit_escape_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="429" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-character" xlink:title="Unicode_escape_character" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Unicode_escape_character</text></a><rect x="163" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="13">+</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="185" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="189" y="13">hexit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="223" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="227" y="13">hexit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="261" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="265" y="13">hexit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="299" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="303" y="13">hexit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="337" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="341" y="13">hexit</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="375" y="1" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="379" y="13">hexit</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m30 0 h4 m3 0 h-3"/> + <polygon points="419 10 427 6 427 14"/> + <polygon points="419 10 411 6 411 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-6-digit-escape-value" title="Unicode_6_digit_escape_value" shape="rect">Unicode_6_digit_escape_value</a></div> + <div>         ::= <a href="#unicode-escape-character" title="Unicode_escape_character" shape="rect">Unicode_escape_character</a> '+' <a href="#hexit" title="hexit" shape="rect">hexit</a> <a href="#hexit" title="hexit" shape="rect">hexit</a> <a href="#hexit" title="hexit" shape="rect">hexit</a> <a href="#hexit" title="hexit" shape="rect">hexit</a> <a href="#hexit" title="hexit" shape="rect">hexit</a> <a href="#hexit" title="hexit" shape="rect">hexit</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-escape-value" title="unicode-escape-value">unicode-escape-value</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_character_escape_value +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="319" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-character" xlink:title="Unicode_escape_character" shape="rect"> + <rect x="23" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Unicode_escape_character</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-character" xlink:title="Unicode_escape_character" shape="rect"> + <rect x="163" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="167" y="13">Unicode_escape_character</text></a><path class="line" d="m17 10 h2 m0 0 h4 m132 0 h4 m0 0 h4 m132 0 h4 m3 0 h-3"/> + <polygon points="309 10 317 6 317 14"/> + <polygon points="309 10 301 6 301 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-character-escape-value" title="Unicode_character_escape_value" shape="rect">Unicode_character_escape_value</a></div> + <div>         ::= <a href="#unicode-escape-character" title="Unicode_escape_character" shape="rect">Unicode_escape_character</a> <a href="#unicode-escape-character" title="Unicode_escape_character" shape="rect">Unicode_escape_character</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-escape-value" title="unicode-escape-value">unicode-escape-value</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_escape_character +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="163" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="23 10 26 1 136 1 139 10 136 19 26 19" class="regexp"/> + <text class="regexp" x="34" y="13">[^a-z0-9+'" #xA#x9]</text> + <path class="line" d="m17 10 h2 m0 0 h4 m116 0 h4 m3 0 h-3"/> + <polygon points="153 10 161 6 161 14"/> + <polygon points="153 10 145 6 145 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-escape-character" title="Unicode_escape_character" shape="rect">Unicode_escape_character</a></div> + <div>         ::= [^a-z0-9+'" #xA#x9]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-4-digit-escape-value" title="unicode-4-digit-escape-value">unicode-4-digit-escape-value</a></li><li><a href="#unicode-6-digit-escape-value" title="unicode-6-digit-escape-value">unicode-6-digit-escape-value</a></li><li><a href="#unicode-character-escape-value" title="unicode-character-escape-value">unicode-character-escape-value</a></li><li><a href="#unicode-escape-specifier" title="unicode-escape-specifier">unicode-escape-specifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + nondoublequote_character +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="85" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="23 10 26 1 58 1 61 10 58 19 26 19" class="regexp"/> + <text class="regexp" x="34" y="13">[^"]</text> + <path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m3 0 h-3"/> + <polygon points="75 10 83 6 83 14"/> + <polygon points="75 10 67 6 67 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#nondoublequote-character" title="nondoublequote_character" shape="rect">nondoublequote_character</a></div> + <div>         ::= [^"]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#delimited-identifier-part" title="delimited-identifier-part">delimited-identifier-part</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + white_space +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#newline" xlink:title="newline" shape="rect"> + <rect x="43" y="1" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">newline</text></a><rect x="43" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41"/> + <polygon points="43 66 46 57 86 57 89 66 86 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x9]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m44 0 h4 m0 0 h2 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v8 m74 0 v-8 m-74 8 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m8 0 h4 m0 0 h38 m-64 -10 v20 m74 0 v-20 m-74 20 v8 m74 0 v-8 m-74 8 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m46 0 h4 m23 -56 h-3"/> + <polygon points="123 10 131 6 131 14"/> + <polygon points="123 10 115 6 115 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#white-space" title="white_space" shape="rect">white_space</a></div> + <div>         ::= <a href="#newline" title="newline" shape="rect">newline</a></div> + <div>           | [ #x9]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#separator" title="separator">separator</a></li><li><a href="#skip-separator" title="skip-separator">skip-separator</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + newline +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="173" height="61"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <polygon points="63 22 66 13 106 13 109 22 106 31 66 31" class="regexp"/> + <text class="regexp" x="74" y="25">[#xA]</text> + <polygon points="63 50 66 41 106 41 109 50 106 59 66 59" class="regexp"/> + <text class="regexp" x="74" y="53">[#xD]</text> + <path class="line" d="m17 22 h2 m40 0 h4 m46 0 h4 m-74 0 h20 m54 0 h20 m-94 0 q10 0 10 10 m74 0 q0 -10 10 -10 m-84 10 v8 m74 0 v-8 m-74 8 q0 10 10 10 m54 0 q10 0 10 -10 m-64 10 h4 m46 0 h4 m-94 -28 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m94 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-94 0 h10 m0 0 h84 m23 21 h-3"/> + <polygon points="163 22 171 18 171 26"/> + <polygon points="163 22 155 18 155 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#newline" title="newline" shape="rect">newline</a>  ::= [#xA#xD]+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#simple-comment" title="simple-comment">simple-comment</a></li><li><a href="#white-space" title="white-space">white-space</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + comment +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="137" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-comment" xlink:title="simple_comment" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_comment</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="127 10 135 6 135 14"/> + <polygon points="127 10 119 6 119 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#comment" title="comment" shape="rect">comment</a>  ::= <a href="#simple-comment" title="simple_comment" shape="rect">simple_comment</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + simple_comment +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="303" height="63"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/> + <rect x="23" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="34">--</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comment-character" xlink:title="comment_character" shape="rect"> + <rect x="65" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">comment_character</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#newline" xlink:title="newline" shape="rect"> + <rect x="215" y="43" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="55">newline</text></a><path class="line" d="m17 31 h2 m0 0 h4 m14 0 h4 m20 0 h10 m0 0 h100 m-130 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m110 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-110 0 h4 m102 0 h4 m40 21 h10 m0 0 h42 m-72 0 h20 m52 0 h20 m-92 0 q10 0 10 10 m72 0 q0 -10 10 -10 m-82 10 v1 m72 0 v-1 m-72 1 q0 10 10 10 m52 0 q10 0 10 -10 m-62 10 h4 m44 0 h4 m23 -21 h-3"/> + <polygon points="293 31 301 27 301 35"/> + <polygon points="293 31 285 27 285 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-comment" title="simple_comment" shape="rect">simple_comment</a></div> + <div>         ::= '--' <a href="#comment-character" title="comment_character" shape="rect">comment_character</a>* <a href="#newline" title="newline" shape="rect">newline</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#comment" title="comment">comment</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + comment_character +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="161" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 114 1 117 10 114 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[^#xA#xD]</text> + <rect x="43" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">'</text> + <path class="line" d="m17 10 h2 m20 0 h4 m74 0 h4 m-102 0 h20 m82 0 h20 m-122 0 q10 0 10 10 m102 0 q0 -10 10 -10 m-112 10 v8 m102 0 v-8 m-102 8 q0 10 10 10 m82 0 q10 0 10 -10 m-92 10 h4 m8 0 h4 m0 0 h66 m23 -28 h-3"/> + <polygon points="151 10 159 6 159 14"/> + <polygon points="151 10 143 6 143 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#comment-character" title="comment_character" shape="rect">comment_character</a></div> + <div>         ::= [^#xA#xD]</div> + <div>           | "'"</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#simple-comment" title="simple-comment">simple-comment</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + skip_separator +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="153" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#white-space" xlink:title="white_space" shape="rect"> + <rect x="43" y="13" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">white_space</text></a><path class="line" d="m17 22 h2 m20 0 h4 m66 0 h4 m-94 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m74 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-74 0 h10 m0 0 h64 m23 21 h-3"/> + <polygon points="143 22 151 18 151 26"/> + <polygon points="143 22 135 18 135 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#skip-separator" title="skip_separator" shape="rect">skip_separator</a></div> + <div>         ::= <a href="#white-space" title="white_space" shape="rect">white_space</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + separator +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="153" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#white-space" xlink:title="white_space" shape="rect"> + <rect x="43" y="13" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">white_space</text></a><path class="line" d="m17 22 h2 m20 0 h4 m66 0 h4 m-94 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m74 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-74 0 h10 m0 0 h64 m23 21 h-3"/> + <polygon points="143 22 151 18 151 26"/> + <polygon points="143 22 135 18 135 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#separator" title="separator" shape="rect">separator</a></div> + <div>         ::= <a href="#white-space" title="white_space" shape="rect">white_space</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#binary-string-literal" title="binary-string-literal">binary-string-literal</a></li><li><a href="#national-character-string-literal" title="national-character-string-literal">national-character-string-literal</a></li><li><a href="#unicode-literal" title="unicode-literal">unicode-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + digit +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="89" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="23 10 26 1 62 1 65 10 62 19 26 19" class="regexp"/> + <text class="regexp" x="34" y="13">[0-9]</text> + <path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m3 0 h-3"/> + <polygon points="79 10 87 6 87 14"/> + <polygon points="79 10 71 6 71 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#digit" title="digit" shape="rect">digit</a>    ::= [0-9]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-language-identifier-part" title="sql-language-identifier-part">sql-language-identifier-part</a></li><li><a href="#large-object-length-token" title="large-object-length-token">large-object-length-token</a></li><li><a href="#unsigned-integer" title="unsigned-integer">unsigned-integer</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + character_representation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="189" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nonquote-character" xlink:title="nonquote_character" shape="rect"> + <rect x="43" y="1" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">nonquote_character</text></a><rect x="43" y="29" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">''</text> + <path class="line" d="m17 10 h2 m20 0 h4 m102 0 h4 m-130 0 h20 m110 0 h20 m-150 0 q10 0 10 10 m130 0 q0 -10 10 -10 m-140 10 v8 m130 0 v-8 m-130 8 q0 10 10 10 m110 0 q10 0 10 -10 m-120 10 h4 m10 0 h4 m0 0 h92 m23 -28 h-3"/> + <polygon points="179 10 187 6 187 14"/> + <polygon points="179 10 171 6 171 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#character-representation" title="character_representation" shape="rect">character_representation</a></div> + <div>         ::= <a href="#nonquote-character" title="nonquote_character" shape="rect">nonquote_character</a></div> + <div>           | "''"</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-representation" title="unicode-representation">unicode-representation</a></li><li><a href="#national-character-string-literal" title="national-character-string-literal">national-character-string-literal</a></li><li><a href="#quoted-string" title="quoted-string">quoted-string</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + nonquote_character +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="83" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="23 10 26 1 56 1 59 10 56 19 26 19" class="regexp"/> + <text class="regexp" x="34" y="13">[^']</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m3 0 h-3"/> + <polygon points="73 10 81 6 81 14"/> + <polygon points="73 10 65 6 65 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#nonquote-character" title="nonquote_character" shape="rect">nonquote_character</a></div> + <div>         ::= [^']</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-representation" title="character-representation">character-representation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + quoted_string +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="42"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/> + <rect x="23" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="34">'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-representation" xlink:title="character_representation" shape="rect"> + <rect x="59" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="13">character_representation</text></a><rect x="211" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="215" y="34">'</text> + <path class="line" d="m17 31 h2 m0 0 h4 m8 0 h4 m20 0 h10 m0 0 h122 m-152 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m132 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-132 0 h4 m124 0 h4 m20 21 h4 m8 0 h4 m3 0 h-3"/> + <polygon points="233 31 241 27 241 35"/> + <polygon points="233 31 225 27 225 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#quoted-string" title="quoted_string" shape="rect">quoted_string</a></div> + <div>         ::= "'" <a href="#character-representation" title="character_representation" shape="rect">character_representation</a>* "'"</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-string-literal" title="character-string-literal">character-string-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + national_character_string_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="305" height="70"> + <polygon points="9 59 1 55 1 63"/> + <polygon points="17 59 9 55 9 63"/> + <rect x="23" y="50" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="62">N</text> + <rect x="65" y="50" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="62">'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-representation" xlink:title="character_representation" shape="rect"> + <rect x="101" y="29" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="41">character_representation</text></a><rect x="253" y="50" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="62">'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#separator" xlink:title="separator" shape="rect"> + <rect x="65" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">separator</text></a><path class="line" d="m17 59 h2 m0 0 h4 m14 0 h4 m20 0 h4 m8 0 h4 m20 0 h10 m0 0 h122 m-152 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m132 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-132 0 h4 m124 0 h4 m20 21 h4 m8 0 h4 m-224 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -29 q0 -10 10 -10 m204 49 l20 0 m-20 0 q10 0 10 -10 l0 -29 q0 -10 -10 -10 m-204 0 h4 m54 0 h4 m0 0 h142 m23 49 h-3"/> + <polygon points="295 59 303 55 303 63"/> + <polygon points="295 59 287 55 287 63"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#national-character-string-literal" title="national_character_string_literal" shape="rect">national_character_string_literal</a></div> + <div>         ::= 'N' "'" <a href="#character-representation" title="character_representation" shape="rect">character_representation</a>* "'" ( <a href="#separator" title="separator" shape="rect">separator</a> "'" <a href="#character-representation" title="character_representation" shape="rect">character_representation</a>* "'" )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-literal" title="general-literal">general-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unicode_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="455" height="70"> + <polygon points="9 59 1 55 1 63"/> + <polygon points="17 59 9 55 9 63"/> + <rect x="23" y="50" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="62">U</text> + <rect x="45" y="50" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="49" y="62">&</text> + <rect x="87" y="50" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="62">'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-representation" xlink:title="Unicode_representation" shape="rect"> + <rect x="123" y="29" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="41">Unicode_representation</text></a><rect x="269" y="50" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="62">'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#separator" xlink:title="separator" shape="rect"> + <rect x="87" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">separator</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-specifier" xlink:title="Unicode_escape_specifier" shape="rect"> + <rect x="305" y="50" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="309" y="62">Unicode_escape_specifier</text></a><path class="line" d="m17 59 h2 m0 0 h4 m14 0 h4 m0 0 h4 m14 0 h4 m20 0 h4 m8 0 h4 m20 0 h10 m0 0 h116 m-146 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m126 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-126 0 h4 m118 0 h4 m20 21 h4 m8 0 h4 m-218 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -29 q0 -10 10 -10 m198 49 l20 0 m-20 0 q10 0 10 -10 l0 -29 q0 -10 -10 -10 m-198 0 h4 m54 0 h4 m0 0 h136 m20 49 h4 m126 0 h4 m3 0 h-3"/> + <polygon points="445 59 453 55 453 63"/> + <polygon points="445 59 437 55 437 63"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-literal" title="unicode_literal" shape="rect">unicode_literal</a></div> + <div>         ::= 'U' '&' "'" <a href="#unicode-representation" title="Unicode_representation" shape="rect">Unicode_representation</a>* "'" ( <a href="#separator" title="separator" shape="rect">separator</a> "'" <a href="#unicode-representation" title="Unicode_representation" shape="rect">Unicode_representation</a>* "'" )* <a href="#unicode-escape-specifier" title="Unicode_escape_specifier" shape="rect">Unicode_escape_specifier</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-character-string-literal" title="unicode-character-string-literal">unicode-character-string-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Unicode_representation +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="211" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#character-representation" xlink:title="character_representation" shape="rect"> + <rect x="43" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">character_representation</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicode-escape-value" xlink:title="Unicode_escape_value" shape="rect"> + <rect x="43" y="29" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">Unicode_escape_value</text></a><path class="line" d="m17 10 h2 m20 0 h4 m124 0 h4 m-152 0 h20 m132 0 h20 m-172 0 q10 0 10 10 m152 0 q0 -10 10 -10 m-162 10 v8 m152 0 v-8 m-152 8 q0 10 10 10 m132 0 q10 0 10 -10 m-142 10 h4 m116 0 h4 m0 0 h8 m23 -28 h-3"/> + <polygon points="201 10 209 6 209 14"/> + <polygon points="201 10 193 6 193 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unicode-representation" title="Unicode_representation" shape="rect">Unicode_representation</a></div> + <div>         ::= <a href="#character-representation" title="character_representation" shape="rect">character_representation</a></div> + <div>           | <a href="#unicode-escape-value" title="Unicode_escape_value" shape="rect">Unicode_escape_value</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-literal" title="unicode-literal">unicode-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + binary_string_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="305" height="119"> + <polygon points="9 108 1 104 1 112"/> + <polygon points="17 108 9 104 9 112"/> + <rect x="23" y="99" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="111">X</text> + <rect x="65" y="99" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="111">'</text> + <rect x="121" y="78" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="90"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="101" y="50" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="62">hexit</text></a><rect x="159" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="163" y="41"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hexit" xlink:title="hexit" shape="rect"> + <rect x="195" y="50" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="199" y="62">hexit</text></a><rect x="253" y="99" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="111">'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#separator" xlink:title="separator" shape="rect"> + <rect x="65" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">separator</text></a><path class="line" d="m17 108 h2 m0 0 h4 m14 0 h4 m20 0 h4 m8 0 h4 m40 0 h10 m0 0 h6 m-36 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m16 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-16 0 h4 m8 0 h4 m20 21 h76 m-152 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -29 q0 -10 10 -10 m132 49 l20 0 m-20 0 q10 0 10 -10 l0 -29 q0 -10 -10 -10 m-132 0 h4 m30 0 h4 m20 0 h10 m0 0 h6 m-36 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m16 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-16 0 h4 m8 0 h4 m20 21 h4 m30 0 h4 m20 49 h4 m8 0 h4 m-224 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -78 q0 -10 10 -10 m204 98 l20 0 m-20 0 q10 0 10 -10 l0 -78 q0 -10 -10 -10 m-204 0 h4 m54 0 h4 m0 0 h142 m23 98 h-3"/> + <polygon points="295 108 303 104 303 112"/> + <polygon points="295 108 287 104 287 112"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#binary-string-literal" title="binary_string_literal" shape="rect">binary_string_literal</a></div> + <div>         ::= 'X' "'" ' '* ( <a href="#hexit" title="hexit" shape="rect">hexit</a> ' '* <a href="#hexit" title="hexit" shape="rect">hexit</a> ' '* )* "'" ( <a href="#separator" title="separator" shape="rect">separator</a> "'" ' '* ( <a href="#hexit" title="hexit" shape="rect">hexit</a> ' '* <a href="#hexit" title="hexit" shape="rect">hexit</a> ' '* )* "'" )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#general-literal" title="general-literal">general-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + hexit +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="129" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 78 1 81 10 78 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[a-f]</text> + <polygon points="43 38 46 29 82 29 85 38 82 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[0-9]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m0 0 h4 m-70 0 h20 m50 0 h20 m-90 0 q10 0 10 10 m70 0 q0 -10 10 -10 m-80 10 v8 m70 0 v-8 m-70 8 q0 10 10 10 m50 0 q10 0 10 -10 m-60 10 h4 m42 0 h4 m23 -28 h-3"/> + <polygon points="119 10 127 6 127 14"/> + <polygon points="119 10 111 6 111 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#hexit" title="hexit" shape="rect">hexit</a>    ::= [a-f0-9]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicode-4-digit-escape-value" title="unicode-4-digit-escape-value">unicode-4-digit-escape-value</a></li><li><a href="#unicode-6-digit-escape-value" title="unicode-6-digit-escape-value">unicode-6-digit-escape-value</a></li><li><a href="#binary-string-literal" title="binary-string-literal">binary-string-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + unsigned_integer +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="115" height="33"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#digit" xlink:title="digit" shape="rect"> + <rect x="43" y="13" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">digit</text></a><path class="line" d="m17 22 h2 m20 0 h4 m28 0 h4 m-56 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m36 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-36 0 h10 m0 0 h26 m23 21 h-3"/> + <polygon points="105 22 113 18 113 26"/> + <polygon points="105 22 97 18 97 26"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div> + <div>         ::= <a href="#digit" title="digit" shape="rect">digit</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#approximate-numeric-type" title="approximate-numeric-type">approximate-numeric-type</a></li><li><a href="#array-type" title="array-type">array-type</a></li><li><a href="#binary-string-type" title="binary-string-type">binary-string-type</a></li><li><a href="#character-length" title="character-length">character-length</a></li><li><a href="#current-local-time-value-function" title="current-local-time-value-function">current-local-time-value-function</a></li><li><a href="#current-local-timestamp-value-function" title="current-local-timestamp-value-function">current-local-timestamp-value-function</a></li><li><a href="#current-time-value-function" title="current-time-value-function">current-time-value-function</a></li><li><a href="#current-timestamp-value-function" title="current-timestamp-value-function">current-timestamp-value-function</a></li><li><a href="#datetime-type" title="datetime-type">datetime-type</a></li><li><a href="#exact-numeric-literal" title="exact-numeric-literal">exact-numeric-literal</a></li><li><a href="#exact-numeric-type" title="exact-numeric-type">exact-numeric-type</a></li><li><a href="#float-literal" title="float-literal">float-literal</a></li><li><a href="#interval-fractional-seconds-precision" title="interval-fractional-seconds-precision">interval-fractional-seconds-precision</a></li><li><a href="#interval-leading-field-precision" title="interval-leading-field-precision">interval-leading-field-precision</a></li><li><a href="#large-object-length" title="large-object-length">large-object-length</a></li><li><a href="#length-of-time" title="length-of-time">length-of-time</a></li><li><a href="#limit-clause" title="limit-clause">limit-clause</a></li><li><a href="#mantissa" title="mantissa">mantissa</a></li><li><a href="#maximum-returned-result-sets" title="maximum-returned-result-sets">maximum-returned-result-sets</a></li><li><a href="#signed-integer" title="signed-integer">signed-integer</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + float_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="331" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">unsigned_integer</text></a><rect x="141" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="13">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="177" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="34">unsigned_integer</text></a><rect x="43" y="50" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="59" y="50" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="63" y="62">unsigned_integer</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h4 m8 0 h4 m20 0 h10 m0 0 h88 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v1 m118 0 v-1 m-118 1 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m90 0 h4 m-252 -21 h20 m252 0 h20 m-292 0 q10 0 10 10 m272 0 q0 -10 10 -10 m-282 10 v29 m272 0 v-29 m-272 29 q0 10 10 10 m252 0 q10 0 10 -10 m-262 10 h4 m8 0 h4 m0 0 h4 m90 0 h4 m0 0 h138 m23 -49 h-3"/> + <polygon points="321 10 329 6 329 14"/> + <polygon points="321 10 313 6 313 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#float-literal" title="float_literal" shape="rect">float_literal</a></div> + <div>         ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a> '.' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a>?</div> + <div>           | '.' <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#exact-numeric-literal" title="exact-numeric-literal">exact-numeric-literal</a></li><li><a href="#mantissa" title="mantissa">mantissa</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + approximate_numeric_literal +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mantissa" xlink:title="mantissa" shape="rect"> + <rect x="23" y="1" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">mantissa</text></a><rect x="83" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">E</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#exponent" xlink:title="exponent" shape="rect"> + <rect x="103" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="13">exponent</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m54 0 h4 m3 0 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#approximate-numeric-literal" title="approximate_numeric_literal" shape="rect">approximate_numeric_literal</a></div> + <div>         ::= <a href="#mantissa" title="mantissa" shape="rect">mantissa</a> 'E' <a href="#exponent" title="exponent" shape="rect">exponent</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unsigned-numeric-literal" title="unsigned-numeric-literal">unsigned-numeric-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + mantissa +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="177" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="43" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">unsigned_integer</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#float-literal" xlink:title="float_literal" shape="rect"> + <rect x="43" y="29" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">float_literal</text></a><path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m-118 0 h20 m98 0 h20 m-138 0 q10 0 10 10 m118 0 q0 -10 10 -10 m-128 10 v8 m118 0 v-8 m-118 8 q0 10 10 10 m98 0 q10 0 10 -10 m-108 10 h4 m56 0 h4 m0 0 h34 m23 -28 h-3"/> + <polygon points="167 10 175 6 175 14"/> + <polygon points="167 10 159 6 159 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#mantissa" title="mantissa" shape="rect">mantissa</a> ::= <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div> + <div>           | <a href="#float-literal" title="float_literal" shape="rect">float_literal</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#approximate-numeric-literal" title="approximate-numeric-literal">approximate-numeric-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + exponent +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="125" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#signed-integer" xlink:title="signed_integer" shape="rect"> + <rect x="23" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">signed_integer</text></a><path class="line" d="m17 10 h2 m0 0 h4 m78 0 h4 m3 0 h-3"/> + <polygon points="115 10 123 6 123 14"/> + <polygon points="115 10 107 6 107 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#exponent" title="exponent" shape="rect">exponent</a> ::= <a href="#signed-integer" title="signed_integer" shape="rect">signed_integer</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#approximate-numeric-literal" title="approximate-numeric-literal">approximate-numeric-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + signed_integer +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="237" height="70"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">+</text> + <polygon points="43 59 46 50 92 50 95 59 92 68 46 68" class="regexp"/> + <text class="regexp" x="54" y="62">[#x2D]</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsigned-integer" xlink:title="unsigned_integer" shape="rect"> + <rect x="123" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="13">unsigned_integer</text></a><path class="line" d="m17 10 h2 m20 0 h10 m0 0 h50 m-80 0 h20 m60 0 h20 m-100 0 q10 0 10 10 m80 0 q0 -10 10 -10 m-90 10 v1 m80 0 v-1 m-80 1 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m14 0 h4 m0 0 h38 m-70 -10 v20 m80 0 v-20 m-80 20 v8 m80 0 v-8 m-80 8 q0 10 10 10 m60 0 q10 0 10 -10 m-70 10 h4 m52 0 h4 m20 -49 h4 m90 0 h4 m3 0 h-3"/> + <polygon points="227 10 235 6 235 14"/> + <polygon points="227 10 219 6 219 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#signed-integer" title="signed_integer" shape="rect">signed_integer</a></div> + <div>         ::= [+#x2D]? <a href="#unsigned-integer" title="unsigned_integer" shape="rect">unsigned_integer</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#exponent" title="exponent">exponent</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_language_identifier +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="385" height="42"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-language-identifier-start" xlink:title="SQL_language_identifier_start" shape="rect"> + <rect x="23" y="22" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">SQL_language_identifier_start</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sql-language-identifier-part" xlink:title="SQL_language_identifier_part" shape="rect"> + <rect x="197" y="1" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="201" y="13">SQL_language_identifier_part</text></a><path class="line" d="m17 31 h2 m0 0 h4 m146 0 h4 m20 0 h10 m0 0 h142 m-172 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m152 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-152 0 h4 m144 0 h4 m23 21 h-3"/> + <polygon points="375 31 383 27 383 35"/> + <polygon points="375 31 367 27 367 35"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-language-identifier" title="SQL_language_identifier" shape="rect">SQL_language_identifier</a></div> + <div>         ::= <a href="#sql-language-identifier-start" title="SQL_language_identifier_start" shape="rect">SQL_language_identifier_start</a> <a href="#sql-language-identifier-part" title="SQL_language_identifier_part" shape="rect">SQL_language_identifier_part</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#character-set-name" title="character-set-name">character-set-name</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + simple_Latin_letter +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="87" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="23 10 26 1 60 1 63 10 60 19 26 19" class="regexp"/> + <text class="regexp" x="34" y="13">[a-z]</text> + <path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m3 0 h-3"/> + <polygon points="77 10 85 6 85 14"/> + <polygon points="77 10 69 6 69 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#simple-latin-letter" title="simple_Latin_letter" shape="rect">simple_Latin_letter</a></div> + <div>         ::= [a-z]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-language-identifier-part" title="sql-language-identifier-part">sql-language-identifier-part</a></li><li><a href="#sql-language-identifier-start" title="sql-language-identifier-start">sql-language-identifier-start</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_language_identifier_start +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="141" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-latin-letter" xlink:title="simple_Latin_letter" shape="rect"> + <rect x="23" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">simple_Latin_letter</text></a><path class="line" d="m17 10 h2 m0 0 h4 m94 0 h4 m3 0 h-3"/> + <polygon points="131 10 139 6 139 14"/> + <polygon points="131 10 123 6 123 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-language-identifier-start" title="SQL_language_identifier_start" shape="rect">SQL_language_identifier_start</a></div> + <div>         ::= <a href="#simple-latin-letter" title="simple_Latin_letter" shape="rect">simple_Latin_letter</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-language-identifier" title="sql-language-identifier">sql-language-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQL_language_identifier_part +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simple-latin-letter" xlink:title="simple_Latin_letter" shape="rect"> + <rect x="43" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">simple_Latin_letter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#digit" xlink:title="digit" shape="rect"> + <rect x="43" y="29" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">digit</text></a><rect x="43" y="57" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">_</text> + <path class="line" d="m17 10 h2 m20 0 h4 m94 0 h4 m-122 0 h20 m102 0 h20 m-142 0 q10 0 10 10 m122 0 q0 -10 10 -10 m-132 10 v8 m122 0 v-8 m-122 8 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m28 0 h4 m0 0 h66 m-112 -10 v20 m122 0 v-20 m-122 20 v8 m122 0 v-8 m-122 8 q0 10 10 10 m102 0 q10 0 10 -10 m-112 10 h4 m14 0 h4 m0 0 h80 m23 -56 h-3"/> + <polygon points="171 10 179 6 179 14"/> + <polygon points="171 10 163 6 163 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#sql-language-identifier-part" title="SQL_language_identifier_part" shape="rect">SQL_language_identifier_part</a></div> + <div>         ::= <a href="#simple-latin-letter" title="simple_Latin_letter" shape="rect">simple_Latin_letter</a></div> + <div>           | <a href="#digit" title="digit" shape="rect">digit</a></div> + <div>           | '_'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sql-language-identifier" title="sql-language-identifier">sql-language-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + illegal_input_char +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="69" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="23 10 26 1 42 1 45 10 42 19 26 19" class="regexp"/> + <text class="regexp" x="34" y="13">.</text> + <path class="line" d="m17 10 h2 m0 0 h4 m22 0 h4 m3 0 h-3"/> + <polygon points="59 10 67 6 67 14"/> + <polygon points="59 10 51 6 51 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#illegal-input-char" title="illegal_input_char" shape="rect">illegal_input_char</a></div> + <div>         ::= <a href="#." title="." shape="rect">.</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Not referenced by any. + </div></td></tr></tbody></table> + + +====================================================================================================================== + EOF +====================================================================================================================== + + .. raw:: html - <iframe id="rrFrame" src="_static/syntax.xhtml" height="640" width="100%"></iframe> + <svg xmlns="http://www.w3.org/2000/svg" width="73" height="21"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="23 10 26 1 46 1 49 10 46 19 26 19" class="regexp"/> + <text class="regexp" x="34" y="13">$</text> + <path class="line" d="m17 10 h2 m0 0 h4 m26 0 h4 m3 0 h-3"/> + <polygon points="63 10 71 6 71 14"/> + <polygon points="63 10 55 6 55 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#eof" title="EOF" shape="rect">EOF</a>      ::= $</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#compilationunit" title="compilationunit">compilationunit</a></li></ul></div></td></tr></tbody></table> + \ No newline at end of file diff --git a/sphinx/xhtml2rst.xsl b/sphinx/xhtml2rst.xsl new file mode 100644 index 0000000..b7a241b --- /dev/null +++ b/sphinx/xhtml2rst.xsl @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet version="1.1" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xhtml="http://www.w3.org/1999/xhtml" + xmlns:svg="http://www.w3.org/2000/svg" + exclude-result-prefixes="#all" +> + <xsl:output + method="xml" + encoding="utf8" + omit-xml-declaration="yes" + indent="no" /> + + <!-- a default catch is needed to suppress all unwanted nodes --> + <xsl:template match="*"> + <xsl:apply-templates select="/xhtml:html/xhtml:body"/> + </xsl:template> + + <xsl:template match="/xhtml:html/xhtml:body"> + <xsl:text disable-output-escaping="yes"> +******************** +Supported SQL Syntax +******************** + +The EBNF and Railroad Diagrams for the supported SQL Syntax. + + </xsl:text> + <xsl:apply-templates select="svg:svg"/> + </xsl:template> + + <xsl:template match="svg:svg[preceding-sibling::*[1]/xhtml:a]"> +<xsl:text disable-output-escaping="yes"> +====================================================================================================================== + </xsl:text> + <xsl:value-of select="translate(preceding-sibling::*[1]/xhtml:a/text(),'\:','')"/> + <xsl:text disable-output-escaping="yes"> +====================================================================================================================== + + </xsl:text> + + <xsl:text disable-output-escaping="yes"> +.. raw:: html + + </xsl:text> + + <!-- SVG Diagram --> + <xsl:copy-of select="."/> + + <table style="width:100%"> + <tbody> + <tr> + <td style="width:67%" valign="top"> + <!-- EBNF --> + <xsl:copy-of select="following-sibling::*[1]"/> + </td> + <td style="width:33%" valign="top"> + <div class="ebnf"> + <xsl:choose> + <!-- References --> + <xsl:when test="count(following-sibling::*[2]/xhtml:ul/xhtml:li)>0"> + Referenced by: + <ul> + <xsl:apply-templates select="following-sibling::*[2]/xhtml:ul/xhtml:li/xhtml:a"/> + </ul> + </xsl:when> + <xsl:otherwise> + Not referenced by any. + </xsl:otherwise> + </xsl:choose> + </div> + </td> + </tr> + </tbody> + </table> + + <!-- empty Line --> + <xsl:text disable-output-escaping="yes"> + + </xsl:text> + </xsl:template> + + <xsl:template match="xhtml:a"> + <li> + <a> + <xsl:attribute name="href"> + <xsl:value-of select="@href" /> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:value-of select="@title" /> + </xsl:attribute> + <xsl:value-of select="text()"/> + </a> + </li> + </xsl:template> +</xsl:stylesheet> \ No newline at end of file From 7a920bb7a5e0f043aa90f62ef78c8b63c1192348 Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Sat, 7 Jan 2023 20:47:12 +0700 Subject: [PATCH 15/16] doc: show Dependencies and Artefacts for both Maven and Gradle --- build.gradle | 2 + parser/build.gradle | 2 + sphinx/src/changelog.rst | 55 ++++--------------- sphinx/src/usage.rst | 113 ++++++++++++++++++++++++--------------- 4 files changed, 85 insertions(+), 87 deletions(-) diff --git a/build.gradle b/build.gradle index fc883ae..eeba4b2 100644 --- a/build.gradle +++ b/build.gradle @@ -76,6 +76,8 @@ test { '-Djunit.jupiter.execution.parallel.config.strategy=dynamic', '-Djunit.jupiter.execution.parallel.mode.default=concurrent' ] + + finalizedBy check } checkstyle { diff --git a/parser/build.gradle b/parser/build.gradle index 60ee84b..f46ee72 100644 --- a/parser/build.gradle +++ b/parser/build.gradle @@ -53,6 +53,8 @@ test { excludeTestsMatching("*IT") excludeTestsMatching("*ITCase") } + + finalizedBy check } tasks.register('optionalTests', Test) { diff --git a/sphinx/src/changelog.rst b/sphinx/src/changelog.rst index 96537f7..342228c 100644 --- a/sphinx/src/changelog.rst +++ b/sphinx/src/changelog.rst @@ -8,68 +8,35 @@ Latest Changes since |PRESTO_SQL_PARSER_VERSION| ============================================================= - * **chore: remove name reference** + * **doc: better RR Diagram integration** - Andreas Reichel, 2023-01-06 - * **Update sphinx.yml** - - manticore-projects, 2023-01-06 - * **Update sphinx.yml** - - manticore-projects, 2023-01-06 - * **Update sphinx.yml** - - manticore-projects, 2023-01-06 - * **Update sphinx.yml** - - manticore-projects, 2023-01-06 - * **Update sphinx.yml** - - manticore-projects, 2023-01-06 - * **build: fix Github Action** - - Andreas Reichel, 2023-01-06 - * **doc: better Railroad diagrams** - - Andreas Reichel, 2023-01-06 + Andreas Reichel, 2023-01-07 * **doc: US compliant wording** - Andreas Reichel, 2023-01-06 - * **doc: fix links and names** - - Andreas Reichel, 2023-01-04 - * **build: restore Java 8 compatibility** - Andreas Reichel, 2023-01-04 - * **build: restore Java 8 compatibility** + * **doc: fix 2 more name references** Andreas Reichel, 2023-01-04 - * **build: restore Java 8 compatibility** + * **refactor: fix links and names** Andreas Reichel, 2023-01-04 - * **doc: fix pages** + * **doc: changelog.rst** Andreas Reichel, 2023-01-03 - * **merge** + * **build: Gradle Build and Rail Road Diagrams** Andreas Reichel, 2023-01-03 - * **Squashed commit of the following:** + * **test: Add many more Real Life SQL statements** - Andreas Reichel, 2022-12-26 - * **doc: Update the readme** + Andreas Reichel, 2022-12-27 + * **style: Tune the Eclipse Formatter Configuration** - Andreas Reichel, 2022-12-26 - * **fix: Try using native GIT** + Andreas Reichel, 2022-12-27 + * **doc: Update the readme** Andreas Reichel, 2022-12-26 * **fix: Try using native GIT** - Andreas Reichel, 2022-12-26 - * **fix: Gradle Wrapper is not needed** - - Andreas Reichel, 2022-12-26 - * **fix: Gradle Wrapper is needed** - Andreas Reichel, 2022-12-26 * **fix: Git Branch is MAIN** diff --git a/sphinx/src/usage.rst b/sphinx/src/usage.rst index 7171a6d..655b4e1 100644 --- a/sphinx/src/usage.rst +++ b/sphinx/src/usage.rst @@ -13,58 +13,85 @@ You will need to have ``JDK 8`` or ``JDK 11`` installed. .. code-block:: shell - git clone https://github.com/prestodb/sql.git - cd sql - mvn install + git clone https://github.com/prestodb/sql.git + cd sql + mvn install .. tab:: Gradle - .. code-block:: shell + .. code-block:: shell - git clone https://github.com/prestodb/sql.git - cd sql - gradle build + git clone https://github.com/prestodb/sql.git + cd sql + gradle build - -Maven Artifacts +Build Dependencies ============================== .. tabs:: - - - .. tab:: Stable Release - - .. code-block:: xml - :substitutions: - - <dependency> - <groupId>com.facebook.presto</groupId> - <artifactId>presto-coresql</artifactId> - <version>|PRESTO_SQL_PARSER_VERSION|</version> - </dependency> - - .. tab:: Development Snapshot - - .. code-block:: xml - :substitutions: - - <repositories> - <repository> - <id>presto-coresql-snapshots</id> - <snapshots> - <enabled>true</enabled> - </snapshots> - <url>https://oss.sonatype.org/content/groups/public/</url> - </repository> - </repositories> - <dependency> - <groupId>com.facebook.presto</groupId> - <artifactId>presto-coresql</artifactId> - <version>|PRESTO_SQL_PARSER_SNAPSHOT_VERSION|</version> - </dependency> - - + + + .. tab:: Maven Release + + .. code-block:: xml + :substitutions: + + <dependency> + <groupId>com.facebook.presto</groupId> + <artifactId>presto-coresql</artifactId> + <version>|PRESTO_SQL_PARSER_VERSION|</version> + </dependency> + + .. tab:: Maven Snapshot + + .. code-block:: xml + :substitutions: + + <repositories> + <repository> + <id>presto-coresql-snapshots</id> + <snapshots> + <enabled>true</enabled> + </snapshots> + <url>https://oss.sonatype.org/content/groups/public/</url> + </repository> + </repositories> + + <dependency> + <groupId>com.facebook.presto</groupId> + <artifactId>presto-coresql</artifactId> + <version>|PRESTO_SQL_PARSER_SNAPSHOT_VERSION|</version> + </dependency> + + .. tab:: Gradle Stable + + .. code-block:: groovy + :substitutions: + + repositories { + mavenCentral() + } + + dependencies { + implementation 'com.facebook.presto:presto-coresql:|PRESTO_SQL_PARSER_VERSION|' + } + + .. tab:: Gradle Snapshot + + .. code-block:: groovy + :substitutions: + + repositories { + maven { + url = uri('https://oss.sonatype.org/content/groups/public/') + } + } + + dependencies { + implementation 'com.facebook.presto:presto-coresql:|PRESTO_SQL_PARSER_SNAPSHOT_VERSION|' + } + Parse a SQL Statements ============================== From ab8e63d5e7719bd2af5d6ae8338315cbb6c4535c Mon Sep 17 00:00:00 2001 From: Andreas Reichel <andreas@manticore-projects.com> Date: Wed, 11 Jan 2023 20:55:35 +0700 Subject: [PATCH 16/16] refactor: Merge REPLACE into UPSERT fixes #1706 --- parser/build.gradle | 3 +- .../parser/expression/ParameterTest.java | 49 ++++++++++++++++++- 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/parser/build.gradle b/parser/build.gradle index f46ee72..5fcde87 100644 --- a/parser/build.gradle +++ b/parser/build.gradle @@ -46,7 +46,8 @@ test { jvmArgs << [ '-Djunit.jupiter.execution.parallel.enabled=true', '-Djunit.jupiter.execution.parallel.config.strategy=dynamic', - '-Djunit.jupiter.execution.parallel.mode.default=concurrent' + '-Djunit.jupiter.execution.parallel.mode.default=concurrent', + //'-Xss=256k' ] filter { excludeTestsMatching("IT*") diff --git a/parser/src/test/java/com/facebook/coresql/parser/expression/ParameterTest.java b/parser/src/test/java/com/facebook/coresql/parser/expression/ParameterTest.java index 7e64de3..e042eff 100644 --- a/parser/src/test/java/com/facebook/coresql/parser/expression/ParameterTest.java +++ b/parser/src/test/java/com/facebook/coresql/parser/expression/ParameterTest.java @@ -28,8 +28,6 @@ public void testParameter() throws ParseException // overlaps = 'overlaps'\n" + " AND (CURRENT_TIME, INTERVAL '1' HOUR) OVERLAPS (CURRENT_TIME, INTERVAL -'1' // HOUR)\n" + ";"; String sqlStr = "SELECT /*+parallel*/ sqrt(40);"; - // String sqlStr = "SELECT :test;"; - // String sqlStr = "SELECT NEXT VALUE FOR a from b;"; AstNode astNode = TestUtils.assertParseAndUnparse(sqlStr); System.out.println(Unparser.unparse(astNode)); try { @@ -39,4 +37,51 @@ public void testParameter() throws ParseException throw new RuntimeException(e); } } + + @Test + void testComplexExpression() throws ParseException { + String sqlStr = "SELECT ((3.0 >= 4.0 AND 5.0 <= 6.0) OR \n" + + "(7.0 < 8.0 AND 9.0 > 10.0) OR \n" + + "(11.0 = 11.0 AND 19.0 > 20.0) OR \n" + + "(17.0 = 14.0 AND 19.0 > 17.0) OR \n" + + "(17.0 = 18.0 AND 20.0 > 20.0) OR \n" + + "(17.0 = 16.0 AND 19.0 > 20.0) OR \n" + + "(17.0 = 18.0 AND 19.0 > 20.0) OR \n" + + "(17.0 = 18.0 AND 19.0 > 20.0) OR \n" + + "(17.0 = 22.0 AND 19.0 > 20.0) OR \n" + + "(18.0 = 18.0 AND 22.0 > 20.0) OR \n" + + "(17.0 = 18.0 AND 19.0 > 20.0) OR \n" + + "(18.0 = 18.0 AND 22.0 > 20.0) OR \n" + + "(18.0 = 19.0 AND 22.0 > 20.0) OR \n" + + "(117.0 = 22.0 AND 19.0 > 20.0) OR \n" + + "(118.0 = 18.0 AND 22.0 > 20.0) OR \n" + + "(117.0 = 18.0 AND 19.0 > 20.0) OR \n" + + "(17.0 = 18.0 AND 19.0 > 20.0));"; + AstNode astNode = TestUtils.assertParseAndUnparse(sqlStr); + } + + @Test + void testComplexExpression1() throws ParseException { + String sqlStr = "SELECT ((3.0 >= 4.0 AND 5.0 <= 6.0) OR " + + "(7.0 < 8.0 AND 9.0 > 10.0) OR " + + "(11.0 = 11.0 AND 19.0 > 20.0) OR " + + "(17.0 = 14.0 AND 19.0 > 17.0) OR " + + "(17.0 = 18.0 AND 20.0 > 20.0) OR " + + "(17.0 = 16.0 AND 19.0 > 20.0));"; + AstNode astNode = TestUtils.assertParseAndUnparse(sqlStr); + } + + @Test + void testJoin() throws Exception { + String sqlStr = "select * from a,b where a.a=b.b;"; + AstNode astNode = TestUtils.assertParseAndUnparse(sqlStr); + System.out.println(TestUtils.formatToTree(astNode)); + } + + @Test + void testUnicode() throws Exception { + String sqlStr = "select * from U&\\मकान\\;"; + AstNode astNode = TestUtils.assertParseAndUnparse(sqlStr); + System.out.println(TestUtils.formatToTree(astNode)); + } }