diff --git a/.codacy.yml b/.codacy.yml new file mode 100644 index 000000000..d98077f4f --- /dev/null +++ b/.codacy.yml @@ -0,0 +1,3 @@ +--- +exclude_paths: + - "site/**" diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 9d042118c..e79696ec8 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,28 +1,41 @@ --- -name: SQL Parser Error +name: @ SQL Parser Error about: Create a report to help us improve -title: 'JSQLParser Version : RDBMS : failing feature description' +title: '[BUG] JSQLParser Version : RDBMS : failing feature description' labels: 'Parser Error', 'Feature Request', 'Documentation', 'Java API', 'RDBMS support' assignees: '' --- -**Failing SQL Feature** + + +### Failing SQL Feature: + -**SQL Example** +### SQL Example: + -**Software Information** +### Software Information: + -**Tips** +### Tips: + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..9003b51e1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,31 @@ +--- +name: Feature request +about: Suggest an unsupported Statement or Expression +title: "[FEATURE] missing feature description" +labels: '' +assignees: '' + +--- + +### Grammar or Syntax Description +- Brief description of the failing SQL feature and the EBNF +- Example: `WITH ROLLUP` clause is not supported yet + +### SQL Example +- Simplified Query Example, focusing on the failing feature + ```sql + -- Replace with your ACTUAL example + select 1 + from dual + ``` +- Please don't send screen shots + +### Additional context +The used JSQLParser Version (please test the latest SNAPSHOT version before submitting). +State the applicable RDBMS and version +Links to the reference documentation + +### Tips: + diff --git a/.github/ISSUE_TEMPLATE/sql-parser-error.md b/.github/ISSUE_TEMPLATE/sql-parser-error.md new file mode 100644 index 000000000..7edb1a456 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/sql-parser-error.md @@ -0,0 +1,31 @@ +--- +name: SQL Parser Error +about: Report a Parser Error +title: "[BUG] JSQLParser Version : RDBMS : failing feature description" +labels: '' +assignees: '' + +--- + +Always check against the **Latest SNAPSHOT of JSQLParser** and the [Syntax Diagram](https://jsqlparser.github.io/JSqlParser/syntax.html) + +### 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: +- JSqlParser 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). +[Try your example online with the latest JSQLParser](http://217.160.215.75:8080/jsqlformatter/demo.html) and share the link in the error report. +Do provide Links or References to the specific Grammar and Syntax you are trying to use. diff --git a/.github/workflows/sphinx.yml b/.github/workflows/sphinx.yml new file mode 100644 index 000000000..2c2b7f76c --- /dev/null +++ b/.github/workflows/sphinx.yml @@ -0,0 +1,31 @@ +name: Sphinx Pages +on: [push, workflow_dispatch] +permissions: write-all +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v4 + - name: Install XSLT Processor + run: sudo apt-get install xsltproc sphinx-common + - name: Install dependencies + 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: + ref: master + fetch-depth: 0 + - name: Setup Gradle + uses: gradle/gradle-build-action@v2 + - name: Run build with Gradle Wrapper + run: gradle sphinx + - name: Deploy + uses: actions/configure-pages@v2 + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + # Upload entire repository + path: 'build/sphinx' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1 diff --git a/.gitignore b/.gitignore index 54f477598..81cbc5c83 100755 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,12 @@ /target /build +# Sphinx Theme related stuff, which shall be downloaded separately +/src/site/sphinx/_themes + +# Exclude the Auto-generated Changelog +/src/site/sphinx/changelog.rst + # Generated by javacc-maven-plugin /bin /src/net diff --git a/README.md b/README.md index f1dbc3715..d3c0b17b3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# JSqlParser +# [JSqlParser (4.5 Stable or 4.6 Snapshot)](https://jsqlparser.github.io/JSqlParser) drawing ![Build Status](https://github.com/JSQLParser/JSqlParser/actions/workflows/maven.yml/badge.svg) @@ -8,144 +8,67 @@ [![Javadocs](https://www.javadoc.io/badge/com.github.jsqlparser/jsqlparser.svg)](https://www.javadoc.io/doc/com.github.jsqlparser/jsqlparser) [![Gitter](https://badges.gitter.im/JSQLParser/JSqlParser.svg)](https://gitter.im/JSQLParser/JSqlParser?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -[![Code Quality: Java](https://img.shields.io/lgtm/grade/java/g/JSQLParser/JSqlParser.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/JSQLParser/JSqlParser/context:java) -[![Total Alerts](https://img.shields.io/lgtm/alerts/g/JSQLParser/JSqlParser.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/JSQLParser/JSqlParser/alerts) -Look here for more information and examples: https://github.com/JSQLParser/JSqlParser/wiki. - -## License - -JSqlParser is dual licensed under **LGPL V2.1** or **Apache Software License, Version 2.0**. - -## Discussion - -Please provide feedback on: - -* API changes: extend visitor with return values (https://github.com/JSQLParser/JSqlParser/issues/901) - -## News -* Released version **4.4** of JSqlParser -* The array parsing is the default behaviour. Square bracket quotation has to be enabled using - a parser flag (**CCJSqlParser.withSquareBracketQuotation**). -* due to an API change the version will be 3.0 -* JSqlParser uses now Java 8 at the minimum - -More news can be found here: https://github.com/JSQLParser/JSqlParser/wiki/News. - -## Alternatives to JSqlParser? -[**General SQL Parser**](http://www.sqlparser.com/features/introduce.php?utm_source=github-jsqlparser&utm_medium=text-general) looks pretty good, with extended SQL syntax (like PL/SQL and T-SQL) and java + .NET APIs. The tool is commercial (license available online), with a free download option. - -## JSqlParser - -JSqlParser is a SQL statement parser. It translates SQLs in a traversable hierarchy of Java classes. JSqlParser is not limited to one database but provides support for a lot of specials of Oracle, SqlServer, MySQL, PostgreSQL ... To name some, it has support for Oracles join syntax using (+), PostgreSQLs cast syntax using ::, relational operators like != and so on. - -## Support -If you need help using JSqlParser feel free to file an issue or contact me. - -## Contributions -To help JSqlParser's development you are encouraged to provide -* feedback -* bugreports -* pull requests for new features -* improvement requests -* fund new features or sponsor JSqlParser ([**Sponsor**](https://www.paypal.me/wumpz)) - -**Please write in English, since it's the language most of the dev team knows.** +## Summary -Any requests for examples or any particular documentation will be most welcome. +Please visit the [WebSite](https://jsqlparser.github.io/JSqlParser). **JSqlParser** is a RDBMS agnostic SQL statement parser. It translates SQL statements into a traversable hierarchy of Java classes (see [Samples](https://jsqlparser.github.io/JSqlParser/usage.html#parse-a-sql-statements)): -## Extensions in the latest SNAPSHOT version 4.5 - -Additionally, we have fixed many errors and improved the code quality and the test coverage. +```sql +SELECT 1 FROM dual WHERE a = b +``` -## Extensions of JSqlParser releases +```text + SQL Text + └─Statements: net.sf.jsqlparser.statement.select.Select + └─selectBody: net.sf.jsqlparser.statement.select.PlainSelect + ├─selectItems -> Collection + │ └─selectItems: net.sf.jsqlparser.statement.select.SelectExpressionItem + │ └─LongValue: 1 + ├─Table: dual + └─where: net.sf.jsqlparser.expression.operators.relational.EqualsTo + ├─Column: a + └─Column: b +``` -* [Release Notes](https://github.com/JSQLParser/JSqlParser/releases) -* Modifications before GitHub's release tagging are listed in the [Older Releases](https://github.com/JSQLParser/JSqlParser/wiki/Older-Releases) page. -* UnsupportedStatement support instead of throwing Exceptions -* support for **RETURNING** clause of a **DELETE** statement -* Add support for `... ALTER COLUMN ... DROP DEFAULT` -* `INSERT` supports `SetOperations` (e. g. `INSERT INTO ... SELECT ... FROM ... UNION SELECT ... FROM ...`), those `SetOperations` are used both for `SELECT` and `VALUES` clauses (API change) in order to simplify the Grammar -* `(WITH ... SELECT ...)` statements within brackets are now supported -* Postgres `NATURAL { INNER | LEFT | RIGHT } JOIN` support -* extended support for Hive dialect `GROUPING SETS` -* support for Postgresql **drop** function -* support table option **character set** and **index** options -* support Postgresql optional **TABLE** in **TRUNCATE** -* support for `ANALYZE mytable` -* PostgreSQL `INSERT INTO ... ON CONFLICT ... DO ...` statements -* implement Parser Timeout Feature, e. g. `CCJSqlParserUtil.parse(sqlStr, parser -> parser.withTimeOut(60000));` -* extended support Postgres' `Extract( field FROM source)` where `field` is a String instead of a Keyword -* support for `DROP column IF EXISTS` +```java +Statement statement = CCJSqlParserUtil.parse(sqlStr); +if (statement instanceof Select) { + Select select = (Select) statement; + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + SelectExpressionItem selectExpressionItem = + (SelectExpressionItem) plainSelect.getSelectItems().get(0); -## Building from the sources + Table table = (Table) plainSelect.getFromItem(); -As the project is a Maven project, building is rather simple by running: -```shell -mvn package + EqualsTo equalsTo = (EqualsTo) plainSelect.getWhere(); + Column a = (Column) equalsTo.getLeftExpression(); + Column b = (Column) equalsTo.getRightExpression(); +} ``` -Since 4.2, alternatively Gradle can be used -```shell -gradle build -``` - -The project requires the following to build: -- Maven (or Gradle) -- JDK 8 or later. The JAR will target JDK 8, but the version of the maven-compiler-plugin that JSqlParser uses requires JDK 8+ +## [Supported Grammar and Syntax](https://jsqlparser.github.io/JSqlParser/syntax.html) -This will produce the jsqlparser-VERSION.jar file in the `target/` directory (`build/libs/jsqlparser-VERSION.jar` in case of Gradle). +**JSqlParser** aims to support the SQL standard as well as all major RDBMS. Any missing syntax or features can be added on demand. -**To build this project without using Maven or Gradle, one has to build the parser by JavaCC using the CLI options it provides.** +| RDBMS | Statements | +|------------------------------------|-----------------------------------------| +| Oracle
MS SQL Server and Sybase
PostgreSQL
MySQL and MariaDB
DB2
H2 and HSQLDB and Derby
SQLite| `SELECT`
`INSERT`, `UPDATE`, `UPSERT`, `MERGE`
`DELETE`, `TRUNCATE TABLE`
`CREATE ...`, `ALTER ....`, `DROP ...`
`WITH ...` | -## Debugging through problems -Refer to the [Visualize Parsing](https://github.com/JSQLParser/JSqlParser/wiki/Examples-of-SQL-parsing#visualize-parsing) section to learn how to run the parser in debug mode. +**JSqlParser** can also be used to create SQL Statements from Java Code with a fluent API (see [Samples](https://jsqlparser.github.io/JSqlParser/usage.html#build-a-sql-statements)). -## Source Code conventions +## Alternatives to JSqlParser? +[**General SQL Parser**](http://www.sqlparser.com/features/introduce.php?utm_source=github-jsqlparser&utm_medium=text-general) looks pretty good, with extended SQL syntax (like PL/SQL and T-SQL) and java + .NET APIs. The tool is commercial (license available online), with a free download option. -Recently a checkstyle process was integrated into the build process. JSqlParser follows the sun java format convention. There are no TABs allowed. Use spaces. +## [Documentation](https://jsqlparser.github.io/JSqlParser) -```java -public void setUsingSelect(SubSelect usingSelect) { - this.usingSelect = usingSelect; - if (this.usingSelect != null) { - this.usingSelect.setUseBrackets(false); - } -} -``` +### [Samples](https://jsqlparser.github.io/JSqlParser/usage.html#parse-a-sql-statements) +### [Build Instructions](https://jsqlparser.github.io/JSqlParser/usage.html) +### [Contribution](https://jsqlparser.github.io/JSqlParser/contribution.html) +### [Change Log](https://jsqlparser.github.io/JSqlParser/changelog.html#latest-changes-since-jsqlparser-version) +### [Issues](https://github.com/JSQLParser/JSqlParser/issues) -This is a valid piece of source code: -* blocks without braces are not allowed -* after control statements (if, while, for) a whitespace is expected -* the opening brace should be in the same line as the control statement - -## Maven Repository - -JSQLParser is deployed at Sonatype open source maven repository. -Starting from now I will deploy there. The first snapshot version there will be 0.8.5-SNAPSHOT. -To use it this is the repository configuration: - -```xml - - - jsqlparser-snapshots - - true - - https://oss.sonatype.org/content/groups/public/ - - -``` -These repository releases will be synchronised to Maven Central. Snapshots remain at Sonatype. - -And this is the dependency declaration in your pom: -```xml - - com.github.jsqlparser - jsqlparser - 4.4 - -``` +## License +**JSqlParser** is dual licensed under **LGPL V2.1** or **Apache Software License, Version 2.0**. diff --git a/build.gradle b/build.gradle index 036eae1a5..6aaa8909f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,51 +1,92 @@ +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 "com.diffplug.spotless" 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.github.jsqlparser' -version = '4.5-SNAPSHOT' + +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() =~ /jsqlparser-(\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) { + minor++ + snapshot = "-SNAPSHOT" + } + } + return "${major}.${minor}${snapshot}" +} +version = getVersion(true) + description = 'JSQLParser library' java.sourceCompatibility = JavaVersion.VERSION_1_8 repositories { - gradlePluginPortal() + gradlePluginPortal() mavenLocal() mavenCentral() - maven { - url = uri('https://repo.maven.apache.org/maven2/') - } - - maven { - url "https://plugins.gradle.org/m2/" - } } dependencies { testImplementation 'commons-io:commons-io:2.+' + testImplementation 'org.apache.commons:commons-text:+' testImplementation 'org.mockito:mockito-core:4.+' testImplementation 'org.assertj:assertj-core:3.+' testImplementation 'org.hamcrest:hamcrest-core:2.+' testImplementation 'org.apache.commons:commons-lang3:3.+' testImplementation 'com.h2database:h2:2.+' - + // for JaCoCo Reports testImplementation 'org.junit.jupiter:junit-jupiter-api:5.+' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.+' + testImplementation 'org.junit.jupiter:junit-jupiter-params:+' // https://mvnrepository.com/artifact/org.mockito/mockito-junit-jupiter testImplementation 'org.mockito:mockito-junit-jupiter:4.+' // enforce latest version of JavaCC - javacc 'net.java.dev.javacc:javacc:7.0.11' + testImplementation 'net.java.dev.javacc:javacc:7.0.12' + javacc 'net.java.dev.javacc:javacc:7.0.12' } compileJavacc { @@ -55,16 +96,10 @@ compileJavacc { java { withSourcesJar() withJavadocJar() - - spotbugs - pmd -} - -jacoco { - toolVersion = "0.8.7" } test { + environment = [ 'EXPORT_TEST_TO_FILE': 'True' ] useJUnitPlatform() // set heap size for the test JVM(s) @@ -77,8 +112,7 @@ test { '-Djunit.jupiter.execution.parallel.mode.default=concurrent' ] - finalizedBy jacocoTestReport // report is always generated after tests run - finalizedBy jacocoTestCoverageVerification + finalizedBy check } jacocoTestReport { @@ -94,7 +128,8 @@ jacocoTestCoverageVerification { rule { //element = 'CLASS' limit { - minimum = 0.84 + //@todo: temporarily reduced it 80%, we need to bring that back to 84% accepting the Keywords PR + minimum = 0.80 } excludes = [ 'net.sf.jsqlparser.util.validation.*', @@ -114,7 +149,9 @@ jacocoTestCoverageVerification { limit { counter = 'LINE' value = 'MISSEDCOUNT' - maximum = 5700 + + //@todo: temporarily increased to 7000, we need to bring that down to 5500 after accepting the Keywords PR + maximum = 7000 } excludes = [ 'net.sf.jsqlparser.util.validation.*', @@ -165,24 +202,23 @@ spotbugsMain { spotbugs { // fail only on P1 and without the net.sf.jsqlparser.parser.* excludeFilter = file("config/spotbugs/spotBugsExcludeFilter.xml") - + // do not run over the test, although we should do that eventually - spotbugsTest.enabled = false + spotbugsTest.enabled = false } pmd { consoleOutput = false - toolVersion = "6.46.0" - + //toolVersion = "6.46.0" + sourceSets = [sourceSets.main] - + // clear the ruleset in order to use configured rules only ruleSets = [] - + //rulesMinimumPriority = 1 - ruleSetFiles = files("config/pmd/ruleset.xml") - + pmdMain { excludes = [ "build/generated/*" @@ -191,11 +227,29 @@ pmd { } checkstyle { - toolVersion "9.2" sourceSets = [sourceSets.main, sourceSets.test] configFile =rootProject.file('config/checkstyle/checkstyle.xml') } +spotless { + // optional: limit format enforcement to just the files changed by this feature branch + ratchetFrom 'origin/master' + + format 'misc', { + // define the files to apply `misc` to + target '*.gradle', '*.md', '.gitignore' + + // define the steps to apply to those files + trimTrailingWhitespace() + indentWithSpaces(4) // or spaces. Takes an integer argument if you don't like 4 + endWithNewline() + } + java { + indentWithSpaces(4) + eclipse().configFile('config/formatter/eclipse-java-google-style.xml') + } +} + tasks.withType(Checkstyle) { reports { xml.required = false @@ -204,57 +258,172 @@ tasks.withType(Checkstyle) { } task renderRR() { + dependsOn(compileJavacc) doLast { - // these WAR files have been provided as a courtesy by Gunther Rademacher + // 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 { + download.run { src 'http://manticore-projects.com/download/convert.war' dest "$buildDir/rr/convert.war" overwrite false } - - download { + + download.run { src 'http://manticore-projects.com/download/rr.war' dest "$buildDir/rr/rr.war" overwrite false } - - javaexec { - standardOutput = new FileOutputStream("${buildDir}/rr/JSqlParserCC.ebnf") - main="-jar"; - args = [ - "$buildDir/rr/convert.war", - "$buildDir/generated/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jj" + + javaexec { + standardOutput = new FileOutputStream("${buildDir}/rr/JSqlParserCC.ebnf") + main = "-jar" + args = [ + "$buildDir/rr/convert.war", + "$buildDir/generated/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jj" ] } - + javaexec { - main="-jar"; - args = [ - "$buildDir/rr/rr.war", - "-noepsilon", - "-color:#4D88FF", - "-offset:0", - "-width:800", - //"-png", - //"-out:${buildDir}/rr/JSqlParserCC.zip", - "-out:${buildDir}/rr/JSqlParserCC.xhtml", - "${buildDir}/rr/JSqlParserCC.ebnf" + main = "-jar" + args = [ + "$buildDir/rr/rr.war", + "-noepsilon", + "-color:#4D88FF", + "-offset:0", + "-width:800", + //"-png", + //"-out:${buildDir}/rr/JSqlParserCC.zip", + "-out:${buildDir}/rr/JSqlParserCC.xhtml", + "${buildDir}/rr/JSqlParserCC.ebnf" ] - } + } + + //@todo: a Java based solution may be more appropriate here + exec { + commandLine "sh", "-c", "xsltproc src/main/resources/rr/xhtml2rst.xsl $buildDir/rr/JSqlParserCC.xhtml > src/site/sphinx/syntax.rst" + } + } +} + +task gitChangelogTask(type: GitChangelogTask) { + fromRepo = file("$projectDir") + file = new File("${projectDir}/src/site/sphinx/changelog.rst") + fromRef = "4.0" + //toRef = "1.1"; + + // switch off the formatter since the indentation matters for Mark-down + // @formatter:off + 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}} +""" + // @formatter:on +} + +task updateKeywords(type: JavaExec) { + group = "Execution" + description = "Run the main class with JavaExecTask" + classpath = sourceSets.main.runtimeClasspath + args = [ + file('src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt').absolutePath + , file('src/site/sphinx/keywords.rst').absolutePath + ] + main("net.sf.jsqlparser.parser.ParserKeywordsUtils") + + dependsOn(compileJava) +} + +task sphinx(type: Exec) { + dependsOn(gitChangelogTask, renderRR, updateKeywords) + + 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=JSQLParser" + , "-Dcopyright=Tobias Warneke, 2022" + , "-Dauthor=Tobias Warneke" + , "-Drelease=${getVersion(false)}" + , "-Drst_prolog=$PROLOG" + , "${projectDir}/src/site/sphinx" + , "${project.buildDir}/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() } } - publishing { publications { - maven(MavenPublication) { + mavenJava(MavenPublication) { artifactId 'jsqlparser' from(components.java) + versionMapping { + usage('java-api') { + fromResolutionOf('testFixturesRuntimeClasspath') + } + usage('java-runtime') { + fromResolutionResult() + } + } + } + } + repositories { + + maven { + // Username and Password are defined in ~/.gradle/gradle.properties + name "ossrh" + url "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" + credentials(PasswordCredentials) } } } @@ -262,3 +431,37 @@ publishing { tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } + +task upload(type: Exec) { + dependsOn(build, gitChangelogTask) + + def versionStable = getVersion(false) + + if( findProperty("${project.name}.host")==null ) { + println( +""" +Property \"${project.name}.host\' not found. +Please define \"${project.name}.host\" in the Gradle configuration (e. g. \$HOME/.gradle/gradle.properties. +""" + ) + } else { + + // define the USERNAME and HOST properties in ~/.gradle/gradle.properties + args = ["sftp://${findProperty("${project.name}.username")}@${findProperty("${project.name}.host")}/download"] + + executable "sftp" + + standardInput = new ByteArrayInputStream("""< - + @@ -241,7 +241,7 @@ - + diff --git a/config/pmd/ruleset.xml b/config/pmd/ruleset.xml index dcecbde00..fdfa1169d 100644 --- a/config/pmd/ruleset.xml +++ b/config/pmd/ruleset.xml @@ -40,8 +40,6 @@ under the License. - - @@ -50,8 +48,8 @@ under the License. - - + + @@ -101,7 +99,6 @@ under the License. - @@ -112,15 +109,12 @@ under the License. - - - - + diff --git a/pom.xml b/pom.xml index 391c297de..909b6bbc8 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.github.jsqlparser jsqlparser - 4.5 + 4.6 JSQLParser library 2004 @@ -25,48 +25,58 @@ + + + net.java.dev.javacc + javacc + 7.0.12 + test + + commons-io commons-io - 2.7 + 2.11.0 test org.junit.jupiter junit-jupiter - 5.8.1 + 5.9.2 test org.mockito mockito-core - 3.12.4 + 4.8.0 test org.mockito mockito-junit-jupiter - 3.12.4 + 4.8.0 test org.assertj assertj-core - 3.16.1 + 3.23.1 test org.apache.commons commons-lang3 - 3.10 + 3.12.0 test com.h2database h2 - 1.4.200 + 2.1.214 test + + org.hamcrest hamcrest-all @@ -97,7 +107,7 @@ scm:git:https://github.com/JSQLParser/JSqlParser.git scm:git:ssh://git@github.com:JSQLParser/JSqlParser.git https://github.com/JSQLParser/JSqlParser.git - jsqlparser-4.5 + jsqlparser-4.6 @@ -107,10 +117,23 @@ + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + net.sf.jsqlparser.parser.ParserKeywordsUtils + + src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt + src/site/sphinx/keywords.rst + + + org.apache.maven.plugins maven-pmd-plugin - 3.14.0 + 3.19.0 @@ -180,7 +203,7 @@ maven-compiler-plugin - 3.7.0 + 3.10.1 1.8 1.8 @@ -202,21 +225,12 @@ jjtree-javacc - - - - jjtree - generate-sources - - jjtree - - net.java.dev.javacc javacc - 7.0.11 + 7.0.12 @@ -233,7 +247,7 @@ org.apache.maven.plugins maven-resources-plugin - 2.6 + 3.3.0 ${project.build.sourceEncoding} @@ -241,13 +255,16 @@ org.codehaus.mojo license-maven-plugin - 1.17 + 2.0.0 false false false dual_lgpl_ap2 ${project.baseUri}/src/license + + site/sphinx/** + @@ -262,12 +279,14 @@ org.apache.maven.plugins maven-release-plugin - 2.5.3 + 3.0.0-M7 true false forked-path + sign-release-artifacts + org.apache.maven.plugins @@ -292,13 +312,14 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.4.1 attach-javadocs - ${javadoc.opts} - net.sf.jsqlparser.parser + ${javadoc.opts} + net.sf.jsqlparser.parser + none jar @@ -308,7 +329,7 @@ maven-site-plugin - 3.7.1 + 3.12.1 attach-descriptor @@ -324,7 +345,7 @@ org.eluder.coveralls coveralls-maven-plugin - 3.1.0 + 4.3.0 org.codehaus.mojo @@ -338,18 +359,19 @@ net/sf/jsqlparser/JSQLParserException.class + org.apache.felix maven-bundle-plugin - 3.0.1 + 5.1.8 true org.apache.maven.plugins maven-surefire-plugin - 3.0.0-M5 + 3.0.0-M7 false @@ -357,7 +379,7 @@ org.jacoco jacoco-maven-plugin - 0.8.7 + 0.8.8 @@ -373,6 +395,50 @@ + + com.diffplug.spotless + spotless-maven-plugin + 2.28.0 + + + origin/master + + + + + + *.md + .gitignore + + + + + + true + 4 + + + + + + + + src/main/java/**/*.java + src/test/java/**/*.java + + + + + + + + config/formatter/eclipse-java-google-style.xml + + + + + + @@ -381,7 +447,7 @@ org.apache.maven.plugins maven-surefire-report-plugin - 3.0.0-M5 + 3.0.0-M7 ${project.reporting.outputDirectory}/testresults @@ -389,7 +455,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.1.1 + 3.4.1 true 800m @@ -407,100 +473,19 @@ org.apache.maven.plugins maven-project-info-reports-plugin - 3.0.0 + 3.4.1 org.apache.maven.plugins maven-jxr-plugin - 3.0.0 + 3.3.0 - - org.codehaus.mojo findbugs-maven-plugin 3.0.5 - - - - - - org.javacc.plugin - javacc-maven-plugin - 3.0.3 - - - false - - - false - - - false - - - - - ${project.reporting.outputDirectory} - - @@ -625,7 +610,7 @@ UTF-8 - 6.46.0 + 6.53.0 JSqlParser parses an SQL statement and translate it into a hierarchy of Java classes. diff --git a/src/main/java/net/sf/jsqlparser/Model.java b/src/main/java/net/sf/jsqlparser/Model.java index 3b7378d14..d96535bad 100644 --- a/src/main/java/net/sf/jsqlparser/Model.java +++ b/src/main/java/net/sf/jsqlparser/Model.java @@ -9,10 +9,12 @@ */ package net.sf.jsqlparser; +import java.io.Serializable; + /** *

A marker interface for jsqlparser-model-classes.

*

The datastructure where the sql syntax is represented by a tree consists of {@link Model}'s

*/ -public interface Model { +public interface Model extends Serializable { } diff --git a/src/main/java/net/sf/jsqlparser/expression/Alias.java b/src/main/java/net/sf/jsqlparser/expression/Alias.java index e6718f67a..539d97eb2 100644 --- a/src/main/java/net/sf/jsqlparser/expression/Alias.java +++ b/src/main/java/net/sf/jsqlparser/expression/Alias.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.expression; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -17,7 +18,7 @@ import java.util.Optional; import net.sf.jsqlparser.statement.create.table.ColDataType; -public class Alias { +public class Alias implements Serializable { private String name; private boolean useAs = true; @@ -104,7 +105,7 @@ public Alias addAliasColumns(Collection aliasColumns) { return this.withAliasColumns(collection); } - public static class AliasColumn { + public static class AliasColumn implements Serializable { public final String name; public final ColDataType colDataType; diff --git a/src/main/java/net/sf/jsqlparser/expression/AnalyticExpression.java b/src/main/java/net/sf/jsqlparser/expression/AnalyticExpression.java index ce4885045..07aa23d4f 100644 --- a/src/main/java/net/sf/jsqlparser/expression/AnalyticExpression.java +++ b/src/main/java/net/sf/jsqlparser/expression/AnalyticExpression.java @@ -16,17 +16,14 @@ import net.sf.jsqlparser.statement.select.OrderByElement; /** - * Analytic function. The name of the function is variable but the parameters following the special - * analytic function path. e.g. row_number() over (order by test). Additional there can be an - * expression for an analytical aggregate like sum(col) or the "all collumns" wildcard like - * count(*). + * Analytic function. The name of the function is variable but the parameters following the special analytic function + * path. e.g. row_number() over (order by test). Additional there can be an expression for an analytical aggregate like + * sum(col) or the "all collumns" wildcard like count(*). * * @author tw */ public class AnalyticExpression extends ASTNodeAccessImpl implements Expression { - private final OrderByClause orderBy = new OrderByClause(); - private final PartitionByClause partitionBy = new PartitionByClause(); private String name; private Expression expression; private Expression offset; @@ -39,8 +36,9 @@ public class AnalyticExpression extends ASTNodeAccessImpl implements Expression private boolean ignoreNulls = false; //IGNORE NULLS inside function parameters private boolean ignoreNullsOutside = false; //IGNORE NULLS outside function parameters private Expression filterExpression = null; - private WindowElement windowElement = null; private List funcOrderBy = null; + private String windowName = null; // refers to an external window definition (paritionBy, orderBy, windowElement) + private WindowDefinition windowDef = new WindowDefinition(); public AnalyticExpression() { } @@ -76,11 +74,11 @@ public void accept(ExpressionVisitor expressionVisitor) { } public List getOrderByElements() { - return orderBy.getOrderByElements(); + return windowDef.orderBy.getOrderByElements(); } public void setOrderByElements(List orderByElements) { - orderBy.setOrderByElements(orderByElements); + windowDef.orderBy.setOrderByElements(orderByElements); } public KeepExpression getKeep() { @@ -92,7 +90,7 @@ public void setKeep(KeepExpression keep) { } public ExpressionList getPartitionExpressionList() { - return partitionBy.getPartitionExpressionList(); + return windowDef.partitionBy.getPartitionExpressionList(); } public void setPartitionExpressionList(ExpressionList partitionExpressionList) { @@ -100,11 +98,11 @@ public void setPartitionExpressionList(ExpressionList partitionExpressionList) { } public void setPartitionExpressionList(ExpressionList partitionExpressionList, boolean brackets) { - partitionBy.setPartitionExpressionList(partitionExpressionList, brackets); + windowDef.partitionBy.setPartitionExpressionList(partitionExpressionList, brackets); } public boolean isPartitionByBrackets() { - return partitionBy.isBrackets(); + return windowDef.partitionBy.isBrackets(); } public String getName() { @@ -140,11 +138,11 @@ public void setDefaultValue(Expression defaultValue) { } public WindowElement getWindowElement() { - return windowElement; + return windowDef.windowElement; } public void setWindowElement(WindowElement windowElement) { - this.windowElement = windowElement; + windowDef.windowElement = windowElement; } public AnalyticType getType() { @@ -187,6 +185,22 @@ public void setIgnoreNullsOutside(boolean ignoreNullsOutside) { this.ignoreNullsOutside = ignoreNullsOutside; } + public String getWindowName() { + return windowName; + } + + public void setWindowName(String windowName) { + this.windowName = windowName; + } + + public WindowDefinition getWindowDefinition() { + return windowDef; + } + + public void setWindowDefinition(WindowDefinition windowDef) { + this.windowDef = windowDef; + } + @Override @SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity", "PMD.MissingBreakInSwitch"}) public String toString() { @@ -210,11 +224,11 @@ public String toString() { if (isIgnoreNulls()) { b.append(" IGNORE NULLS"); } - if (funcOrderBy!=null) { + if (funcOrderBy != null) { b.append(" ORDER BY "); - b.append( funcOrderBy.stream().map(OrderByElement::toString).collect(joining(", "))); + b.append(funcOrderBy.stream().map(OrderByElement::toString).collect(joining(", "))); } - + b.append(") "); if (keep != null) { b.append(keep.toString()).append(" "); @@ -232,30 +246,31 @@ public String toString() { if (isIgnoreNullsOutside()) { b.append("IGNORE NULLS "); } - + switch (type) { case FILTER_ONLY: return b.toString(); case WITHIN_GROUP: b.append("WITHIN GROUP"); break; + case WITHIN_GROUP_OVER: + b.append("WITHIN GROUP ("); + windowDef.orderBy.toStringOrderByElements(b); + b.append(") OVER ("); + windowDef.partitionBy.toStringPartitionBy(b); + b.append(")"); + break; default: b.append("OVER"); } - b.append(" ("); - partitionBy.toStringPartitionBy(b); - orderBy.toStringOrderByElements(b); - - if (windowElement != null) { - if (orderBy.getOrderByElements() != null) { - b.append(' '); - } - b.append(windowElement); + if (windowName != null) { + b.append(" ").append(windowName); + } else if (type!=AnalyticType.WITHIN_GROUP_OVER) { + b.append(" "); + b.append(windowDef.toString()); } - b.append(")"); - return b.toString(); } diff --git a/src/main/java/net/sf/jsqlparser/expression/AnalyticType.java b/src/main/java/net/sf/jsqlparser/expression/AnalyticType.java index 2f60840ff..115c45305 100644 --- a/src/main/java/net/sf/jsqlparser/expression/AnalyticType.java +++ b/src/main/java/net/sf/jsqlparser/expression/AnalyticType.java @@ -12,5 +12,7 @@ public enum AnalyticType { OVER, WITHIN_GROUP, + + WITHIN_GROUP_OVER, FILTER_ONLY } diff --git a/src/main/java/net/sf/jsqlparser/expression/DateTimeLiteralExpression.java b/src/main/java/net/sf/jsqlparser/expression/DateTimeLiteralExpression.java index 173c564f7..3d87c6203 100644 --- a/src/main/java/net/sf/jsqlparser/expression/DateTimeLiteralExpression.java +++ b/src/main/java/net/sf/jsqlparser/expression/DateTimeLiteralExpression.java @@ -53,6 +53,6 @@ public DateTimeLiteralExpression withType(DateTime type) { } public enum DateTime { - DATE, TIME, TIMESTAMP; + DATE, TIME, TIMESTAMP, TIMESTAMPTZ; } } diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java index ed4460e1c..36b7a44bb 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitor.java @@ -69,6 +69,8 @@ public interface ExpressionVisitor { void visit(Between between); + void visit (OverlapsCondition overlapsCondition); + void visit(EqualsTo equalsTo); void visit(GreaterThan greaterThan); @@ -117,6 +119,8 @@ public interface ExpressionVisitor { void visit(TryCastExpression cast); + void visit(SafeCastExpression cast); + void visit(Modulo modulo); void visit(AnalyticExpression aexpr); diff --git a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java index 6800f325b..154adfa80 100644 --- a/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/expression/ExpressionVisitorAdapter.java @@ -161,6 +161,12 @@ public void visit(Between expr) { expr.getBetweenExpressionEnd().accept(this); } + public void visit(OverlapsCondition overlapsCondition) { + overlapsCondition.getLeft().accept(this); + overlapsCondition.getRight().accept(this); + } + + @Override public void visit(EqualsTo expr) { visitBinaryExpression(expr); @@ -309,6 +315,11 @@ public void visit(TryCastExpression expr) { expr.getLeftExpression().accept(this); } + @Override + public void visit(SafeCastExpression expr) { + expr.getLeftExpression().accept(this); + } + @Override public void visit(Modulo expr) { visitBinaryExpression(expr); diff --git a/src/main/java/net/sf/jsqlparser/expression/JsonExpression.java b/src/main/java/net/sf/jsqlparser/expression/JsonExpression.java index fb5a16931..5d6aa794c 100644 --- a/src/main/java/net/sf/jsqlparser/expression/JsonExpression.java +++ b/src/main/java/net/sf/jsqlparser/expression/JsonExpression.java @@ -15,7 +15,6 @@ import net.sf.jsqlparser.parser.ASTNodeAccessImpl; public class JsonExpression extends ASTNodeAccessImpl implements Expression { - private Expression expr; private List idents = new ArrayList(); @@ -34,26 +33,19 @@ public void setExpression(Expression expr) { this.expr = expr; } -// public List getIdents() { -// return idents; -// } -// -// public void setIdents(List idents) { -// this.idents = idents; -// operators = new ArrayList(); -// for (String ident : idents) { -// operators.add("->"); -// } -// } -// -// public void addIdent(String ident) { -// addIdent(ident, "->"); -// } public void addIdent(String ident, String operator) { idents.add(ident); operators.add(operator); } + public List getIdents() { + return idents; + } + + public List getOperators() { + return operators; + } + @Override public String toString() { StringBuilder b = new StringBuilder(); diff --git a/src/main/java/net/sf/jsqlparser/expression/JsonFunctionExpression.java b/src/main/java/net/sf/jsqlparser/expression/JsonFunctionExpression.java index c0558bb9e..e23aa2751 100644 --- a/src/main/java/net/sf/jsqlparser/expression/JsonFunctionExpression.java +++ b/src/main/java/net/sf/jsqlparser/expression/JsonFunctionExpression.java @@ -10,6 +10,7 @@ package net.sf.jsqlparser.expression; +import java.io.Serializable; import java.util.Objects; /** @@ -17,7 +18,7 @@ * @author Andreas Reichel */ -public class JsonFunctionExpression { +public class JsonFunctionExpression implements Serializable { private final Expression expression; private boolean usingFormatJson = false; diff --git a/src/main/java/net/sf/jsqlparser/expression/JsonKeyValuePair.java b/src/main/java/net/sf/jsqlparser/expression/JsonKeyValuePair.java index 740b8eaf5..b85274caa 100644 --- a/src/main/java/net/sf/jsqlparser/expression/JsonKeyValuePair.java +++ b/src/main/java/net/sf/jsqlparser/expression/JsonKeyValuePair.java @@ -10,6 +10,7 @@ package net.sf.jsqlparser.expression; +import java.io.Serializable; import java.util.Objects; /** @@ -17,7 +18,7 @@ * @author Andreas Reichel */ -public class JsonKeyValuePair { +public class JsonKeyValuePair implements Serializable { private final String key; private boolean usingKeyKeyword = false; private final Object value; diff --git a/src/main/java/net/sf/jsqlparser/expression/MySQLIndexHint.java b/src/main/java/net/sf/jsqlparser/expression/MySQLIndexHint.java index fc3745774..7360a4b2e 100644 --- a/src/main/java/net/sf/jsqlparser/expression/MySQLIndexHint.java +++ b/src/main/java/net/sf/jsqlparser/expression/MySQLIndexHint.java @@ -9,9 +9,10 @@ */ package net.sf.jsqlparser.expression; +import java.io.Serializable; import java.util.List; -public class MySQLIndexHint { +public class MySQLIndexHint implements Serializable { private final String action; private final String indexQualifier; diff --git a/src/main/java/net/sf/jsqlparser/expression/OrderByClause.java b/src/main/java/net/sf/jsqlparser/expression/OrderByClause.java index 4e142f560..7c71ddfa0 100644 --- a/src/main/java/net/sf/jsqlparser/expression/OrderByClause.java +++ b/src/main/java/net/sf/jsqlparser/expression/OrderByClause.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.expression; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -16,7 +17,7 @@ import java.util.Optional; import net.sf.jsqlparser.statement.select.OrderByElement; -public class OrderByClause { +public class OrderByClause implements Serializable { private List orderByElements; public List getOrderByElements() { @@ -27,7 +28,7 @@ public void setOrderByElements(List orderByElements) { this.orderByElements = orderByElements; } - void toStringOrderByElements(StringBuilder b) { + public void toStringOrderByElements(StringBuilder b) { if (orderByElements != null && !orderByElements.isEmpty()) { b.append("ORDER BY "); for (int i = 0; i < orderByElements.size(); i++) { diff --git a/src/main/java/net/sf/jsqlparser/expression/OverlapsCondition.java b/src/main/java/net/sf/jsqlparser/expression/OverlapsCondition.java new file mode 100644 index 000000000..f9e41b4bc --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/expression/OverlapsCondition.java @@ -0,0 +1,47 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2022 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.expression; + +import net.sf.jsqlparser.expression.operators.relational.ExpressionList; +import net.sf.jsqlparser.parser.ASTNodeAccessImpl; + +public class OverlapsCondition extends ASTNodeAccessImpl implements Expression{ + + + private ExpressionList left; + private ExpressionList right; + + + public OverlapsCondition(ExpressionList left, ExpressionList right) { + this.left = left; + this.right = right; + } + + public ExpressionList getLeft() { + return left; + } + + public ExpressionList getRight() { + return right; + } + + @Override + public void accept(ExpressionVisitor expressionVisitor) { + expressionVisitor.visit(this); + } + + @Override + public String toString() { + return String.format("%s OVERLAPS %s" + , left.toString() + , right.toString() + ); + } +} diff --git a/src/main/java/net/sf/jsqlparser/expression/PartitionByClause.java b/src/main/java/net/sf/jsqlparser/expression/PartitionByClause.java index 32bff7087..0b0f70663 100644 --- a/src/main/java/net/sf/jsqlparser/expression/PartitionByClause.java +++ b/src/main/java/net/sf/jsqlparser/expression/PartitionByClause.java @@ -12,7 +12,9 @@ import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.statement.select.PlainSelect; -public class PartitionByClause { +import java.io.Serializable; + +public class PartitionByClause implements Serializable { ExpressionList partitionExpressionList; boolean brackets = false; @@ -29,7 +31,7 @@ public void setPartitionExpressionList(ExpressionList partitionExpressionList, b this.brackets = brackets; } - void toStringPartitionBy(StringBuilder b) { + public void toStringPartitionBy(StringBuilder b) { if (partitionExpressionList != null && !partitionExpressionList.getExpressions().isEmpty()) { b.append("PARTITION BY "); b.append(PlainSelect. diff --git a/src/main/java/net/sf/jsqlparser/expression/SQLServerHints.java b/src/main/java/net/sf/jsqlparser/expression/SQLServerHints.java index 28f497616..84b7c2f38 100644 --- a/src/main/java/net/sf/jsqlparser/expression/SQLServerHints.java +++ b/src/main/java/net/sf/jsqlparser/expression/SQLServerHints.java @@ -9,10 +9,11 @@ */ package net.sf.jsqlparser.expression; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; -public class SQLServerHints { +public class SQLServerHints implements Serializable { private Boolean noLock; private String indexName; diff --git a/src/main/java/net/sf/jsqlparser/expression/SafeCastExpression.java b/src/main/java/net/sf/jsqlparser/expression/SafeCastExpression.java new file mode 100644 index 000000000..28fad85d5 --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/expression/SafeCastExpression.java @@ -0,0 +1,95 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2019 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.expression; + +import net.sf.jsqlparser.parser.ASTNodeAccessImpl; +import net.sf.jsqlparser.statement.create.table.ColDataType; + +public class SafeCastExpression extends ASTNodeAccessImpl implements Expression { + + private Expression leftExpression; + private ColDataType type; + private RowConstructor rowConstructor; + private boolean useCastKeyword = true; + + public RowConstructor getRowConstructor() { + return rowConstructor; + } + + public void setRowConstructor(RowConstructor rowConstructor) { + this.rowConstructor = rowConstructor; + this.type = null; + } + + public SafeCastExpression withRowConstructor(RowConstructor rowConstructor) { + setRowConstructor(rowConstructor); + return this; + } + + public ColDataType getType() { + return type; + } + + public void setType(ColDataType type) { + this.type = type; + this.rowConstructor = null; + } + + public Expression getLeftExpression() { + return leftExpression; + } + + public void setLeftExpression(Expression expression) { + leftExpression = expression; + } + + @Override + public void accept(ExpressionVisitor expressionVisitor) { + expressionVisitor.visit(this); + } + + public boolean isUseCastKeyword() { + return useCastKeyword; + } + + public void setUseCastKeyword(boolean useCastKeyword) { + this.useCastKeyword = useCastKeyword; + } + + @Override + public String toString() { + if (useCastKeyword) { + return rowConstructor!=null + ? "SAFE_CAST(" + leftExpression + " AS " + rowConstructor.toString() + ")" + : "SAFE_CAST(" + leftExpression + " AS " + type.toString() + ")"; + } else { + return leftExpression + "::" + type.toString(); + } + } + + public SafeCastExpression withType(ColDataType type) { + this.setType(type); + return this; + } + + public SafeCastExpression withUseCastKeyword(boolean useCastKeyword) { + this.setUseCastKeyword(useCastKeyword); + return this; + } + + public SafeCastExpression withLeftExpression(Expression leftExpression) { + this.setLeftExpression(leftExpression); + return this; + } + + public E getLeftExpression(Class type) { + return type.cast(getLeftExpression()); + } +} diff --git a/src/main/java/net/sf/jsqlparser/expression/SpannerInterleaveIn.java b/src/main/java/net/sf/jsqlparser/expression/SpannerInterleaveIn.java new file mode 100644 index 000000000..59a8ec856 --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/expression/SpannerInterleaveIn.java @@ -0,0 +1,75 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2021 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.expression; + +import net.sf.jsqlparser.schema.Table; + +import java.util.Collections; +import java.util.List; + +public class SpannerInterleaveIn { + + public enum OnDelete { + CASCADE, + NO_ACTION + } + + private Table table; + private OnDelete onDelete; + + public SpannerInterleaveIn() { + + } + + public SpannerInterleaveIn(Table table, OnDelete action) { + setTable(table); + setOnDelete(action); + } + + public SpannerInterleaveIn(List nameParts) { + this(new Table(nameParts), null); + } + + public SpannerInterleaveIn(String tableName) { + this(Collections.singletonList(tableName)); + } + + public Table getTable() { + return table; + } + + public void setTable(Table table) { + this.table = table; + } + + public OnDelete getOnDelete() { + return onDelete; + } + + public void setOnDelete(OnDelete action) { + this.onDelete = action; + } + + @Override + public String toString() { + return "INTERLEAVE IN PARENT " + getTable().getName() + + (getOnDelete() == null ? "" : " ON DELETE " + (getOnDelete() == OnDelete.CASCADE ? "CASCADE" : "NO ACTION")); + } + + public SpannerInterleaveIn withTable(Table table) { + this.setTable(table); + return this; + } + + public SpannerInterleaveIn withOnDelete(OnDelete action) { + this.setOnDelete(action); + return this; + } +} \ No newline at end of file diff --git a/src/main/java/net/sf/jsqlparser/expression/StringValue.java b/src/main/java/net/sf/jsqlparser/expression/StringValue.java index 6c8c2f401..743efea46 100644 --- a/src/main/java/net/sf/jsqlparser/expression/StringValue.java +++ b/src/main/java/net/sf/jsqlparser/expression/StringValue.java @@ -23,7 +23,8 @@ public final class StringValue extends ASTNodeAccessImpl implements Expression { private String value = ""; private String prefix = null; - public static final List ALLOWED_PREFIXES = Arrays.asList("N", "U", "E", "R", "B", "RB", "_utf8"); + public static final List ALLOWED_PREFIXES = + Arrays.asList("N", "U", "E", "R", "B", "RB", "_utf8", "Q"); public StringValue() { // empty constructor @@ -31,14 +32,16 @@ public StringValue() { public StringValue(String escapedValue) { // removing "'" at the start and at the end - if (escapedValue.length() >= 2 && escapedValue.startsWith("'") && escapedValue.endsWith("'")) { + if (escapedValue.length() >= 2 && escapedValue.startsWith("'") + && escapedValue.endsWith("'")) { value = escapedValue.substring(1, escapedValue.length() - 1); return; } if (escapedValue.length() > 2) { for (String p : ALLOWED_PREFIXES) { - if (escapedValue.length() > p.length() && escapedValue.substring(0, p.length()).equalsIgnoreCase(p) + if (escapedValue.length() > p.length() + && escapedValue.substring(0, p.length()).equalsIgnoreCase(p) && escapedValue.charAt(p.length()) == '\'') { this.prefix = p; value = escapedValue.substring(p.length() + 1, escapedValue.length() - 1); diff --git a/src/main/java/net/sf/jsqlparser/expression/WindowDefinition.java b/src/main/java/net/sf/jsqlparser/expression/WindowDefinition.java new file mode 100644 index 000000000..b15ec6fcb --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/expression/WindowDefinition.java @@ -0,0 +1,93 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2022 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.expression; + +import java.io.Serializable; +import java.util.List; +import net.sf.jsqlparser.expression.operators.relational.ExpressionList; +import net.sf.jsqlparser.statement.select.OrderByElement; + +public class WindowDefinition implements Serializable { + + + final OrderByClause orderBy = new OrderByClause(); + final PartitionByClause partitionBy = new PartitionByClause(); + WindowElement windowElement = null; + private String windowName; + + public OrderByClause getOrderBy() { + return orderBy; + } + + public PartitionByClause getPartitionBy() { + return partitionBy; + } + + public WindowElement getWindowElement() { + return windowElement; + } + + public void setWindowElement(WindowElement windowElement) { + this.windowElement = windowElement; + } + + public List getOrderByElements() { + return orderBy.getOrderByElements(); + } + + public void setOrderByElements(List orderByElements) { + orderBy.setOrderByElements(orderByElements); + } + + public ExpressionList getPartitionExpressionList() { + return partitionBy.getPartitionExpressionList(); + } + + public void setPartitionExpressionList(ExpressionList partitionExpressionList) { + setPartitionExpressionList(partitionExpressionList, false); + } + + public void setPartitionExpressionList(ExpressionList partitionExpressionList, boolean brackets) { + partitionBy.setPartitionExpressionList(partitionExpressionList, brackets); + } + + public String getWindowName() { + return windowName; + } + + public void setWindowName(String windowName) { + this.windowName = windowName; + } + + public WindowDefinition withWindowName(String windowName) { + setWindowName(windowName); + return this; + } + + @Override + public String toString() { + StringBuilder b = new StringBuilder(); + if (windowName != null) { + b.append(windowName).append(" AS "); + } + b.append("("); + partitionBy.toStringPartitionBy(b); + orderBy.toStringOrderByElements(b); + + if (windowElement != null) { + if (orderBy.getOrderByElements() != null) { + b.append(' '); + } + b.append(windowElement); + } + b.append(")"); + return b.toString(); + } +} diff --git a/src/main/java/net/sf/jsqlparser/expression/WindowElement.java b/src/main/java/net/sf/jsqlparser/expression/WindowElement.java index 7270de37a..1213f0236 100644 --- a/src/main/java/net/sf/jsqlparser/expression/WindowElement.java +++ b/src/main/java/net/sf/jsqlparser/expression/WindowElement.java @@ -9,7 +9,9 @@ */ package net.sf.jsqlparser.expression; -public class WindowElement { +import java.io.Serializable; + +public class WindowElement implements Serializable { public enum Type { diff --git a/src/main/java/net/sf/jsqlparser/expression/WindowOffset.java b/src/main/java/net/sf/jsqlparser/expression/WindowOffset.java index ee7ab5cfe..e0a89d279 100644 --- a/src/main/java/net/sf/jsqlparser/expression/WindowOffset.java +++ b/src/main/java/net/sf/jsqlparser/expression/WindowOffset.java @@ -9,7 +9,9 @@ */ package net.sf.jsqlparser.expression; -public class WindowOffset { +import java.io.Serializable; + +public class WindowOffset implements Serializable { public enum Type { diff --git a/src/main/java/net/sf/jsqlparser/expression/WindowRange.java b/src/main/java/net/sf/jsqlparser/expression/WindowRange.java index 6176c0dbb..5c2568258 100644 --- a/src/main/java/net/sf/jsqlparser/expression/WindowRange.java +++ b/src/main/java/net/sf/jsqlparser/expression/WindowRange.java @@ -9,7 +9,9 @@ */ package net.sf.jsqlparser.expression; -public class WindowRange { +import java.io.Serializable; + +public class WindowRange implements Serializable { private WindowOffset start; private WindowOffset end; diff --git a/src/main/java/net/sf/jsqlparser/expression/operators/relational/ExpressionList.java b/src/main/java/net/sf/jsqlparser/expression/operators/relational/ExpressionList.java index a0e87ac54..311fe4da6 100644 --- a/src/main/java/net/sf/jsqlparser/expression/operators/relational/ExpressionList.java +++ b/src/main/java/net/sf/jsqlparser/expression/operators/relational/ExpressionList.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.expression.operators.relational; +import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -21,7 +22,7 @@ /** * A list of expressions, as in SELECT A FROM TAB WHERE B IN (expr1,expr2,expr3) */ -public class ExpressionList implements ItemsList { +public class ExpressionList implements ItemsList, Serializable { private List expressions; private boolean usingBrackets = true; diff --git a/src/main/java/net/sf/jsqlparser/parser/ASTNodeAccess.java b/src/main/java/net/sf/jsqlparser/parser/ASTNodeAccess.java index 46914102b..6b4993ed9 100644 --- a/src/main/java/net/sf/jsqlparser/parser/ASTNodeAccess.java +++ b/src/main/java/net/sf/jsqlparser/parser/ASTNodeAccess.java @@ -9,7 +9,9 @@ */ package net.sf.jsqlparser.parser; -public interface ASTNodeAccess { +import java.io.Serializable; + +public interface ASTNodeAccess extends Serializable { SimpleNode getASTNode(); diff --git a/src/main/java/net/sf/jsqlparser/parser/ASTNodeAccessImpl.java b/src/main/java/net/sf/jsqlparser/parser/ASTNodeAccessImpl.java index 2bf503ac1..b03858982 100644 --- a/src/main/java/net/sf/jsqlparser/parser/ASTNodeAccessImpl.java +++ b/src/main/java/net/sf/jsqlparser/parser/ASTNodeAccessImpl.java @@ -11,7 +11,7 @@ public class ASTNodeAccessImpl implements ASTNodeAccess { - private SimpleNode node; + private transient SimpleNode node; @Override public SimpleNode getASTNode() { diff --git a/src/main/java/net/sf/jsqlparser/parser/AbstractJSqlParser.java b/src/main/java/net/sf/jsqlparser/parser/AbstractJSqlParser.java index 75cff8d2b..5cd8a1667 100644 --- a/src/main/java/net/sf/jsqlparser/parser/AbstractJSqlParser.java +++ b/src/main/java/net/sf/jsqlparser/parser/AbstractJSqlParser.java @@ -36,6 +36,10 @@ public P withUnsupportedStatements(boolean allowUnsupportedStatements) { public P withTimeOut(int timeOutMillSeconds) { return withFeature(Feature.timeOut, timeOutMillSeconds); } + + public P withBackslashEscapeCharacter(boolean allowBackslashEscapeCharacter) { + return withFeature(Feature.allowBackslashEscapeCharacter, allowBackslashEscapeCharacter); + } public P withFeature(Feature f, boolean enabled) { getConfiguration().setValue(f, enabled); @@ -66,5 +70,4 @@ public void setErrorRecovery(boolean errorRecovery) { public List getParseErrors() { return parseErrors; } - } diff --git a/src/main/java/net/sf/jsqlparser/parser/CCJSqlParserUtil.java b/src/main/java/net/sf/jsqlparser/parser/CCJSqlParserUtil.java index 16b703576..e771d614f 100644 --- a/src/main/java/net/sf/jsqlparser/parser/CCJSqlParserUtil.java +++ b/src/main/java/net/sf/jsqlparser/parser/CCJSqlParserUtil.java @@ -370,5 +370,4 @@ public static int getNestingDepth(String sql) { } return maxlevel; } - } diff --git a/src/main/java/net/sf/jsqlparser/parser/ParserKeywordsUtils.java b/src/main/java/net/sf/jsqlparser/parser/ParserKeywordsUtils.java new file mode 100644 index 000000000..4212b2ede --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/parser/ParserKeywordsUtils.java @@ -0,0 +1,352 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2021 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.parser; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.Charset; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ParserKeywordsUtils { + public final static CharsetEncoder CHARSET_ENCODER = StandardCharsets.US_ASCII.newEncoder(); + + public final static int RESTRICTED_FUNCTION = 1; + public final static int RESTRICTED_SCHEMA = 2; + public final static int RESTRICTED_TABLE = 4; + public final static int RESTRICTED_COLUMN = 8; + public final static int RESTRICTED_EXPRESSION = 16; + public final static int RESTRICTED_ALIAS = 32; + public final static int RESTRICTED_SQL2016 = 64; + + public final static int RESTRICTED_JSQLPARSER = 128 + | RESTRICTED_FUNCTION + | RESTRICTED_SCHEMA + | RESTRICTED_TABLE + | RESTRICTED_COLUMN + | RESTRICTED_EXPRESSION + | RESTRICTED_ALIAS + | RESTRICTED_SQL2016; + + + // Classification follows http://www.h2database.com/html/advanced.html#keywords + public final static Object[][] ALL_RESERVED_KEYWORDS = { + { "ABSENT", RESTRICTED_JSQLPARSER } + , { "ALL" , RESTRICTED_SQL2016 } + , { "AND" , RESTRICTED_SQL2016 } + , { "ANY" , RESTRICTED_JSQLPARSER } + , { "AS" , RESTRICTED_SQL2016 } + , { "BETWEEN" , RESTRICTED_SQL2016 } + , { "BOTH" , RESTRICTED_SQL2016 } + , { "CASEWHEN" , RESTRICTED_ALIAS } + , { "CHECK" , RESTRICTED_SQL2016 } + , { "CONNECT" , RESTRICTED_ALIAS } + , { "CONNECT_BY_ROOT" , RESTRICTED_JSQLPARSER } + , { "CONSTRAINT" , RESTRICTED_SQL2016 } + , { "CREATE" , RESTRICTED_ALIAS } + , { "CROSS" , RESTRICTED_SQL2016 } + , { "CURRENT" , RESTRICTED_JSQLPARSER } + , { "DISTINCT" , RESTRICTED_SQL2016 } + , { "DOUBLE" , RESTRICTED_ALIAS } + , { "ELSE" , RESTRICTED_JSQLPARSER } + , { "EXCEPT" , RESTRICTED_SQL2016 } + , { "EXISTS" , RESTRICTED_SQL2016 } + , { "FETCH" , RESTRICTED_SQL2016 } + , { "FOR" , RESTRICTED_SQL2016 } + , { "FORCE" , RESTRICTED_SQL2016 } + , { "FOREIGN" , RESTRICTED_SQL2016 } + , { "FROM" , RESTRICTED_SQL2016 } + , { "FULL", RESTRICTED_SQL2016 } + , { "GROUP", RESTRICTED_SQL2016 } + , { "GROUPING" , RESTRICTED_ALIAS } + , { "HAVING" , RESTRICTED_SQL2016 } + , { "IF" , RESTRICTED_SQL2016 } + , { "IIF" , RESTRICTED_ALIAS } + , { "IGNORE" , RESTRICTED_ALIAS } + , { "ILIKE" , RESTRICTED_SQL2016 } + , { "IN" , RESTRICTED_SQL2016 } + , { "INNER" , RESTRICTED_SQL2016 } + , { "INTERSECT" , RESTRICTED_SQL2016 } + , { "INTERVAL", RESTRICTED_SQL2016 } + , { "INTO" , RESTRICTED_JSQLPARSER } + , { "IS" , RESTRICTED_SQL2016 } + , { "JOIN" , RESTRICTED_JSQLPARSER } + , { "LATERAL" , RESTRICTED_SQL2016 } + , { "LEFT", RESTRICTED_SQL2016 } + , { "LIKE" , RESTRICTED_SQL2016 } + , { "LIMIT" , RESTRICTED_SQL2016 } + , { "MINUS" , RESTRICTED_SQL2016 } + , { "NATURAL" , RESTRICTED_SQL2016 } + , { "NOCYCLE" , RESTRICTED_JSQLPARSER } + , { "NOT", RESTRICTED_SQL2016 } + , { "NULL" , RESTRICTED_SQL2016 } + , { "OFFSET" , RESTRICTED_SQL2016 } + , { "ON" , RESTRICTED_SQL2016 } + , { "ONLY" , RESTRICTED_JSQLPARSER } + , { "OPTIMIZE" , RESTRICTED_ALIAS } + , { "OR" , RESTRICTED_SQL2016 } + , { "ORDER" , RESTRICTED_SQL2016 } + , { "OUTER" , RESTRICTED_JSQLPARSER } + , { "OUTPUT" , RESTRICTED_JSQLPARSER } + , { "OPTIMIZE ", RESTRICTED_JSQLPARSER } + , { "PIVOT" , RESTRICTED_JSQLPARSER } + , { "PROCEDURE" , RESTRICTED_ALIAS } + , { "PUBLIC", RESTRICTED_ALIAS } + , { "RECURSIVE" , RESTRICTED_SQL2016 } + , { "REGEXP" , RESTRICTED_SQL2016 } + , { "RETURNING" , RESTRICTED_JSQLPARSER } + , { "RIGHT" , RESTRICTED_SQL2016 } + , { "SEL" , RESTRICTED_ALIAS } + , { "SELECT" , RESTRICTED_ALIAS } + , { "SEMI" , RESTRICTED_JSQLPARSER } + , { "SET" , RESTRICTED_JSQLPARSER } + , { "SOME" , RESTRICTED_JSQLPARSER } + , { "START" , RESTRICTED_JSQLPARSER } + , { "TABLES" , RESTRICTED_ALIAS } + , { "TOP" , RESTRICTED_SQL2016 } + , { "TRAILING", RESTRICTED_SQL2016 } + , { "UNBOUNDED" , RESTRICTED_JSQLPARSER } + , { "UNION" , RESTRICTED_SQL2016 } + , { "UNIQUE" , RESTRICTED_SQL2016 } + , { "UNPIVOT" , RESTRICTED_JSQLPARSER } + , { "USE" , RESTRICTED_JSQLPARSER } + , { "USING" , RESTRICTED_SQL2016 } + , { "SQL_CACHE" , RESTRICTED_JSQLPARSER } + , { "SQL_CALC_FOUND_ROWS" , RESTRICTED_JSQLPARSER } + , { "SQL_NO_CACHE" , RESTRICTED_JSQLPARSER } + , { "STRAIGHT_JOIN" , RESTRICTED_JSQLPARSER } + , { "VALUE", RESTRICTED_JSQLPARSER } + , { "VALUES" , RESTRICTED_SQL2016 } + , { "VARYING" , RESTRICTED_JSQLPARSER } + , { "WHEN" , RESTRICTED_SQL2016 } + , { "WHERE" , RESTRICTED_SQL2016 } + , { "WINDOW" , RESTRICTED_SQL2016 } + , { "WITH" , RESTRICTED_SQL2016 } + , { "XOR", RESTRICTED_JSQLPARSER } + , { "XMLSERIALIZE" , RESTRICTED_JSQLPARSER } + + // add keywords from the composite token definitions: + // tk= | tk= | tk= + // we will use the composite tokens instead, which are always hit first before the simple keywords + // @todo: figure out a way to remove these composite tokens, as they do more harm than good + , { "SEL", RESTRICTED_JSQLPARSER } + , { "SELECT", RESTRICTED_JSQLPARSER } + + , { "DATE", RESTRICTED_JSQLPARSER } + , { "TIME" , RESTRICTED_JSQLPARSER } + , { "TIMESTAMP", RESTRICTED_JSQLPARSER } + + , { "YEAR", RESTRICTED_JSQLPARSER } + , { "MONTH", RESTRICTED_JSQLPARSER } + , { "DAY", RESTRICTED_JSQLPARSER } + , { "HOUR", RESTRICTED_JSQLPARSER } + , { "MINUTE" , RESTRICTED_JSQLPARSER } + , { "SECOND", RESTRICTED_JSQLPARSER } + + , { "SUBSTR", RESTRICTED_JSQLPARSER } + , { "SUBSTRING", RESTRICTED_JSQLPARSER } + , { "TRIM", RESTRICTED_JSQLPARSER } + , { "POSITION", RESTRICTED_JSQLPARSER } + , { "OVERLAY", RESTRICTED_JSQLPARSER } + + , { "NEXTVAL", RESTRICTED_JSQLPARSER } + + //@todo: Object Names should not start with Hex-Prefix, we shall not find that Token + , { "0x", RESTRICTED_JSQLPARSER } + }; + + @SuppressWarnings({"PMD.ExcessiveMethodLength"}) + public static List getReservedKeywords(int restriction) { + ArrayList keywords = new ArrayList<>(); + for (Object[] data : ALL_RESERVED_KEYWORDS) { + int value = (int) data[1]; + + // test if bit is not set + if ( (value & restriction) == restriction + || (restriction & value) == value ) { + keywords.add((String) data[0]); + } + } + + return keywords; + } + + /** + * + * @param args with: Grammar File, Keyword Documentation File + * @throws Exception + */ + public static void main(String[] args) throws Exception { + if (args.length<2) { + throw new IllegalArgumentException("No filename provided as parameters ARGS[0]"); + } + + File grammarFile = new File(args[0]); + if (grammarFile.exists() && grammarFile.canRead() && grammarFile.canWrite()) { + buildGrammarForRelObjectName(grammarFile); + buildGrammarForRelObjectNameWithoutValue(grammarFile); + } else { + throw new FileNotFoundException("Can't read file " + args[0]); + } + + File keywordDocumentationFile = new File(args[1]); + keywordDocumentationFile.createNewFile(); + if (keywordDocumentationFile.canWrite()) { + writeKeywordsDocumentationFile(keywordDocumentationFile); + } else { + throw new FileNotFoundException("Can't read file " + args[1]); + } + } + + public static TreeSet getAllKeywordsUsingRegex(File file) throws IOException { + Pattern tokenBlockPattern = Pattern.compile("TOKEN\\s*:\\s*(?:/\\*.*\\*/*)\\n\\{(?:[^\\}\\{]+|\\{(?:[^\\}\\{]+|\\{[^\\}\\{]*\\})*\\})*\\}", Pattern.MULTILINE); + Pattern tokenStringValuePattern = Pattern.compile("\\\"(\\w{2,})\\\"", Pattern.MULTILINE); + + TreeSet allKeywords = new TreeSet<>(); + + Path path = file.toPath(); + Charset charset = Charset.defaultCharset(); + String content = new String(Files.readAllBytes(path), charset); + + Matcher tokenBlockmatcher = tokenBlockPattern.matcher(content); + while (tokenBlockmatcher.find()) { + String tokenBlock = tokenBlockmatcher.group(0); + Matcher tokenStringValueMatcher= tokenStringValuePattern.matcher(tokenBlock); + while (tokenStringValueMatcher.find()) { + String tokenValue=tokenStringValueMatcher.group(1); + // test if pure US-ASCII + if (CHARSET_ENCODER.canEncode(tokenValue) && tokenValue.matches("[A-Za-z]+")) { + allKeywords.add(tokenValue); + } + } + } + return allKeywords; + } + + + public static void buildGrammarForRelObjectNameWithoutValue(File file) throws Exception { + Pattern methodBlockPattern = Pattern.compile("String\\W*RelObjectNameWithoutValue\\W*\\(\\W*\\)\\W*:\\s*\\{(?:[^}{]+|\\{(?:[^}{]+|\\{[^}{]*})*})*}\\s*\\{(?:[^}{]+|\\{(?:[^}{]+|\\{[^}{]*})*})*}", Pattern.MULTILINE); + + TreeSet allKeywords = getAllKeywords(file); + + for (String reserved: getReservedKeywords(RESTRICTED_JSQLPARSER)) { + allKeywords.remove(reserved); + } + + StringBuilder builder = new StringBuilder(); + builder.append("String RelObjectNameWithoutValue() :\n" + + "{ Token tk = null; }\n" + + "{\n" + //@todo: find a way to avoid those hardcoded compound tokens + + " ( tk= | tk= | tk= | tk= | tk= | tk= | tk= \n" + + " "); + + for (String keyword: allKeywords) { + builder.append(" | tk=\"").append(keyword).append("\""); + } + + builder.append(" )\n" + + " { return tk.image; }\n" + + "}"); + + replaceInFile(file, methodBlockPattern, builder.toString()); + } + + public static void buildGrammarForRelObjectName(File file) throws Exception { + // Pattern pattern = Pattern.compile("String\\W*RelObjectName\\W*\\(\\W*\\)\\W*:\\s*\\{(?:[^}{]+|\\{(?:[^}{]+|\\{[^}{]*})*})*}\\s*\\{(?:[^}{]+|\\{(?:[^}{]+|\\{[^}{]*})*})*}", Pattern.MULTILINE); + TreeSet allKeywords = new TreeSet<>(); + for (String reserved: getReservedKeywords(RESTRICTED_ALIAS)) { + allKeywords.add(reserved); + } + + for (String reserved: getReservedKeywords(RESTRICTED_JSQLPARSER & ~RESTRICTED_ALIAS)) { + allKeywords.remove(reserved); + } + + StringBuilder builder = new StringBuilder(); + builder.append("String RelObjectName() :\n" + + "{ Token tk = null; String result = null; }\n" + + "{\n" + + " (result = RelObjectNameWithoutValue()\n" + + " "); + + for (String keyword: allKeywords) { + builder.append(" | tk=\"").append(keyword).append("\""); + } + + builder.append(" )\n" + + " { return tk!=null ? tk.image : result; }\n" + + "}"); + + // @todo: Needs fine-tuning, we are not replacing this part yet + // replaceInFile(file, pattern, builder.toString()); + } + + public static TreeSet getAllKeywords(File file) throws Exception { + return getAllKeywordsUsingRegex(file); + } + + private static void replaceInFile(File file, Pattern pattern, String replacement) throws IOException { + Path path = file.toPath(); + Charset charset = Charset.defaultCharset(); + + String content = new String(Files.readAllBytes(path), charset); + content = pattern.matcher(content).replaceAll(replacement); + Files.write(file.toPath(), content.getBytes(charset)); + } + + public static String rightPadding(String input, char ch, int length) { + return String + .format("%" + (-length) + "s", input) + .replace(' ', ch); + } + + public static void writeKeywordsDocumentationFile(File file) throws IOException { + StringBuilder builder = new StringBuilder(); + builder.append("***********************\n"); + builder.append("Restricted Keywords\n"); + builder.append("***********************\n"); + builder.append("\n"); + + builder.append("The following Keywords are **restricted** in JSQLParser-|JSQLPARSER_VERSION| and must not be used for **Naming Objects**: \n"); + builder.append("\n"); + + builder.append("+----------------------+-------------+-----------+\n"); + builder.append("| **Keyword** | JSQL Parser | SQL:2016 |\n"); + builder.append("+----------------------+-------------+-----------+\n"); + + for (Object[] keywordDefinition : ALL_RESERVED_KEYWORDS) { + builder.append("| ").append(rightPadding(keywordDefinition[0].toString(), ' ', 20)).append(" | "); + + int value = (int) keywordDefinition[1]; + int restriction = RESTRICTED_JSQLPARSER; + String s = (value & restriction) == restriction || (restriction & value) == value ? "Yes" : ""; + builder.append(rightPadding(s, ' ', 11)).append(" | "); + + restriction = RESTRICTED_SQL2016; + s = (value & restriction) == restriction || (restriction & value) == value ? "Yes" : ""; + builder.append(rightPadding(s, ' ', 9)).append(" | "); + + builder.append("\n"); + builder.append("+----------------------+-------------+-----------+\n"); + } + try (FileWriter fileWriter = new FileWriter(file)) { + fileWriter.append(builder); + fileWriter.flush(); + } + } +} diff --git a/src/main/java/net/sf/jsqlparser/parser/feature/Feature.java b/src/main/java/net/sf/jsqlparser/parser/feature/Feature.java index 1193a1f01..d9fbe1811 100644 --- a/src/main/java/net/sf/jsqlparser/parser/feature/Feature.java +++ b/src/main/java/net/sf/jsqlparser/parser/feature/Feature.java @@ -21,8 +21,8 @@ import net.sf.jsqlparser.statement.DeclareStatement; import net.sf.jsqlparser.statement.DescribeStatement; import net.sf.jsqlparser.statement.ExplainStatement; -import net.sf.jsqlparser.statement.SetStatement; import net.sf.jsqlparser.statement.ResetStatement; +import net.sf.jsqlparser.statement.SetStatement; import net.sf.jsqlparser.statement.ShowColumnsStatement; import net.sf.jsqlparser.statement.ShowStatement; import net.sf.jsqlparser.statement.UseStatement; @@ -261,6 +261,10 @@ public enum Feature { * "FOR UPDATE NOWAIT" */ selectForUpdateNoWait, + /** + * "FOR UPDATE SKIP LOCKED" + */ + selectForUpdateSkipLocked, /** @@ -327,6 +331,11 @@ public enum Feature { updateUseSelect, updateOrderBy, updateLimit, + /** + * "RETURNING expr(, expr)*" + * + * @see SelectExpressionItem + */ updateReturning, /** * SQL "DELETE" statement is allowed @@ -350,6 +359,12 @@ public enum Feature { * "ORDER BY ..." */ deleteOrderBy, + /** + * "RETURNING expr(, expr)*" + * + * @see SelectExpressionItem + */ + deleteReturningExpressionList, /** * SQL "UPSERT" statement is allowed @@ -432,6 +447,7 @@ public enum Feature { * * @see Replace */ + @Deprecated replace, /** * SQL "DROP" statement is allowed @@ -501,7 +517,7 @@ public enum Feature { */ createTableRowMovement, /** - * "CREATE TABLE (colspec) SELECT ... + * "CREATE TABLE (colspec) SELECT ... */ createTableFromSelect, /** @@ -575,6 +591,10 @@ public enum Feature { * @see ShowColumnsStatement */ showColumns, + /** + * @see ShowIndexStatement + */ + showIndex, /** * @see UseStatement */ @@ -615,7 +635,7 @@ public enum Feature { set, /** * @see ResetStatement - */ + */ reset, /** * @see Pivot @@ -724,17 +744,18 @@ public enum Feature { allowSquareBracketQuotation(false), /** - allow parsing of RDBMS specific syntax by switching off SQL Standard Compliant Syntax - */ + * allow parsing of RDBMS specific syntax by switching off SQL Standard + * Compliant Syntax + */ allowPostgresSpecificSyntax(false), // PERFORMANCE - + /** * allows complex expression parameters or named parameters for functions * will be switched off, when deep nesting of functions is detected */ - allowComplexParsing(true), + allowComplexParsing(true), /** * allows passing through Unsupported Statements as a plain List of Tokens @@ -742,7 +763,12 @@ public enum Feature { */ allowUnsupportedStatements(false), - timeOut( 6000) + timeOut( 6000), + + /** + * allows Backslash '\' as Escape Character + */ + allowBackslashEscapeCharacter(false), ; private Object value; diff --git a/src/main/java/net/sf/jsqlparser/schema/Table.java b/src/main/java/net/sf/jsqlparser/schema/Table.java index 515cd9f87..0d248910f 100644 --- a/src/main/java/net/sf/jsqlparser/schema/Table.java +++ b/src/main/java/net/sf/jsqlparser/schema/Table.java @@ -103,7 +103,25 @@ public void setSchemaName(String schemaName) { } public String getName() { - return getIndex(NAME_IDX); + String name = getIndex(NAME_IDX); + if (name!=null && name.contains("@")) { + int pos = name.lastIndexOf('@'); + if (pos>0) { + name = name.substring(0, pos ); + } + } + return name; + } + + public String getDBLinkName() { + String name = getIndex(NAME_IDX); + if (name!=null && name.contains("@")) { + int pos = name.lastIndexOf('@'); + if (pos>0 && name.length()>1) { + name = name.substring(pos+1); + } + } + return name; } public Table withName(String name) { @@ -241,4 +259,8 @@ public Table withSqlServerHints(SQLServerHints sqlServerHints) { this.setSqlServerHints(sqlServerHints); return this; } + + public List getNameParts() { + return partItems; + } } diff --git a/src/main/java/net/sf/jsqlparser/statement/Block.java b/src/main/java/net/sf/jsqlparser/statement/Block.java index 6ee605518..cbbbb3c87 100644 --- a/src/main/java/net/sf/jsqlparser/statement/Block.java +++ b/src/main/java/net/sf/jsqlparser/statement/Block.java @@ -10,6 +10,7 @@ package net.sf.jsqlparser.statement; public class Block implements Statement { + private boolean hasSemicolonAfterEnd = false; private Statements statements; @@ -21,14 +22,34 @@ public void setStatements(Statements statements) { this.statements = statements; } + public boolean hasSemicolonAfterEnd() { + return hasSemicolonAfterEnd; + } + + public void setSemicolonAfterEnd(boolean hasSemicolonAfterEnd) { + this.hasSemicolonAfterEnd = hasSemicolonAfterEnd; + } + @Override public void accept(StatementVisitor statementVisitor) { statementVisitor.visit(this); } + public StringBuilder appendTo(StringBuilder builder) { + builder.append("BEGIN\n"); + if (statements != null) { + builder.append(statements); + } + builder.append("END"); + if (hasSemicolonAfterEnd) { + builder.append(";"); + } + return builder; + } + @Override public String toString() { - return "BEGIN\n" + (statements != null ? statements.toString() : "") + "END"; + return appendTo(new StringBuilder()).toString(); } public Block withStatements(Statements statements) { diff --git a/src/main/java/net/sf/jsqlparser/statement/DeclareStatement.java b/src/main/java/net/sf/jsqlparser/statement/DeclareStatement.java index 4d3f51bf0..282220a1a 100644 --- a/src/main/java/net/sf/jsqlparser/statement/DeclareStatement.java +++ b/src/main/java/net/sf/jsqlparser/statement/DeclareStatement.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -189,7 +190,7 @@ public DeclareStatement addColumnDefinitions(Collection */ -public class OutputClause { +public class OutputClause implements Serializable { List selectItemList; UserVariable tableVariable; Table outputTable; diff --git a/src/main/java/net/sf/jsqlparser/statement/ReferentialAction.java b/src/main/java/net/sf/jsqlparser/statement/ReferentialAction.java index c266acaeb..353dafb03 100644 --- a/src/main/java/net/sf/jsqlparser/statement/ReferentialAction.java +++ b/src/main/java/net/sf/jsqlparser/statement/ReferentialAction.java @@ -9,7 +9,9 @@ */ package net.sf.jsqlparser.statement; -public class ReferentialAction { +import java.io.Serializable; + +public class ReferentialAction implements Serializable { private Type type; private Action action; diff --git a/src/main/java/net/sf/jsqlparser/statement/SetStatement.java b/src/main/java/net/sf/jsqlparser/statement/SetStatement.java index 1035ac4f7..11b597f83 100644 --- a/src/main/java/net/sf/jsqlparser/statement/SetStatement.java +++ b/src/main/java/net/sf/jsqlparser/statement/SetStatement.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; import net.sf.jsqlparser.expression.Expression; @@ -23,11 +24,11 @@ public SetStatement() { // empty constructor } - public SetStatement(String name, List value) { + public SetStatement(Object name, List value) { add(name, value, true); } - public void add(String name, List value, boolean useEqual) { + public void add(Object name, List value, boolean useEqual) { values.add(new NameExpr(name, value, useEqual)); } @@ -66,11 +67,11 @@ public SetStatement setUseEqual(boolean useEqual) { return setUseEqual(0, useEqual); } - public String getName() { + public Object getName() { return getName(0); } - public String getName(int idx) { + public Object getName(int idx) { return values.get(idx).name; } @@ -127,13 +128,13 @@ public void accept(StatementVisitor statementVisitor) { statementVisitor.visit(this); } - static class NameExpr { + static class NameExpr implements Serializable { - private String name; + private Object name; private List expressions; private boolean useEqual; - public NameExpr(String name, List expressions, boolean useEqual) { + public NameExpr(Object name, List expressions, boolean useEqual) { this.name = name; this.expressions = expressions; this.useEqual = useEqual; diff --git a/src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java b/src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java index 1326540db..86b285080 100644 --- a/src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java +++ b/src/main/java/net/sf/jsqlparser/statement/StatementVisitor.java @@ -31,6 +31,7 @@ import net.sf.jsqlparser.statement.merge.Merge; import net.sf.jsqlparser.statement.replace.Replace; import net.sf.jsqlparser.statement.select.Select; +import net.sf.jsqlparser.statement.show.ShowIndexStatement; import net.sf.jsqlparser.statement.show.ShowTablesStatement; import net.sf.jsqlparser.statement.truncate.Truncate; import net.sf.jsqlparser.statement.update.Update; @@ -82,7 +83,9 @@ public interface StatementVisitor { void visit(ResetStatement reset); void visit(ShowColumnsStatement set); - + + void visit(ShowIndexStatement showIndex); + void visit(ShowTablesStatement showTables); void visit(Merge merge); diff --git a/src/main/java/net/sf/jsqlparser/statement/StatementVisitorAdapter.java b/src/main/java/net/sf/jsqlparser/statement/StatementVisitorAdapter.java index 1ce1330fe..5c19b505c 100644 --- a/src/main/java/net/sf/jsqlparser/statement/StatementVisitorAdapter.java +++ b/src/main/java/net/sf/jsqlparser/statement/StatementVisitorAdapter.java @@ -31,6 +31,7 @@ import net.sf.jsqlparser.statement.merge.Merge; import net.sf.jsqlparser.statement.replace.Replace; import net.sf.jsqlparser.statement.select.Select; +import net.sf.jsqlparser.statement.show.ShowIndexStatement; import net.sf.jsqlparser.statement.show.ShowTablesStatement; import net.sf.jsqlparser.statement.truncate.Truncate; import net.sf.jsqlparser.statement.update.Update; @@ -172,6 +173,10 @@ public void visit(ShowStatement aThis) { public void visit(ShowColumnsStatement set) { } + @Override + public void visit(ShowIndexStatement set) { + } + @Override public void visit(ShowTablesStatement showTables) { } diff --git a/src/main/java/net/sf/jsqlparser/statement/Statements.java b/src/main/java/net/sf/jsqlparser/statement/Statements.java index 21c130842..12a1aaff3 100644 --- a/src/main/java/net/sf/jsqlparser/statement/Statements.java +++ b/src/main/java/net/sf/jsqlparser/statement/Statements.java @@ -9,13 +9,14 @@ */ package net.sf.jsqlparser.statement; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Optional; -public class Statements { +public class Statements implements Serializable { private List statements; @@ -35,8 +36,8 @@ public void accept(StatementVisitor statementVisitor) { public String toString() { StringBuilder b = new StringBuilder(); for (Statement stmt : statements) { - if (stmt instanceof IfElseStatement) { - // IfElseStatements print the Semicolons by themselves + // IfElseStatements and Blocks control the Semicolons by themselves + if (stmt instanceof IfElseStatement || stmt instanceof Block) { b.append(stmt).append("\n"); } else { b.append(stmt).append(";\n"); diff --git a/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java b/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java index b537b4f03..2902c0833 100644 --- a/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java +++ b/src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement.alter; +import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; @@ -28,7 +29,7 @@ import net.sf.jsqlparser.statement.select.PlainSelect; @SuppressWarnings({"PMD.CyclomaticComplexity"}) -public class AlterExpression { +public class AlterExpression implements Serializable { private AlterOperation operation; private String optionalSpecifier; @@ -65,10 +66,21 @@ public class AlterExpression { private boolean hasColumn = false; + + private boolean useBrackets=false; + public boolean hasColumn() { return hasColumn; } + public boolean useBrackets() { + return useBrackets; + } + + public void useBrackets(boolean useBrackets) { + this.useBrackets = useBrackets; + } + public void hasColumn(boolean hasColumn) { this.hasColumn = hasColumn; } @@ -382,7 +394,7 @@ public void setUk(boolean uk) { public String toString() { StringBuilder b = new StringBuilder(); - + if (operation== AlterOperation.UNSPECIFIC) { b.append(optionalSpecifier); } else if (operation== AlterOperation.RENAME_TABLE) { @@ -432,7 +444,13 @@ public String toString() { b.append("COLUMN "); } } + if (useBrackets && colDataTypeList.size() == 1){ + b.append(" ( "); + } b.append(PlainSelect.getStringList(colDataTypeList)); + if (useBrackets && colDataTypeList.size() == 1 ){ + b.append(" ) "); + } if (colDataTypeList.size() > 1) { b.append(")"); } @@ -707,7 +725,7 @@ public ColumnDataType withColumnSpecs(List columnSpecs) { } } - public static final class ColumnDropNotNull { + public static final class ColumnDropNotNull implements Serializable { private final String columnName; private final boolean withNot; @@ -735,7 +753,7 @@ public String toString() { } } - public static final class ColumnDropDefault { + public static final class ColumnDropDefault implements Serializable { private final String columnName; diff --git a/src/main/java/net/sf/jsqlparser/statement/create/table/ColDataType.java b/src/main/java/net/sf/jsqlparser/statement/create/table/ColDataType.java index b1d08ade4..548fc447f 100644 --- a/src/main/java/net/sf/jsqlparser/statement/create/table/ColDataType.java +++ b/src/main/java/net/sf/jsqlparser/statement/create/table/ColDataType.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement.create.table; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -17,7 +18,7 @@ import static java.util.stream.Collectors.joining; import net.sf.jsqlparser.statement.select.PlainSelect; -public class ColDataType { +public class ColDataType implements Serializable { private String dataType; private List argumentsStringList; diff --git a/src/main/java/net/sf/jsqlparser/statement/create/table/ColumnDefinition.java b/src/main/java/net/sf/jsqlparser/statement/create/table/ColumnDefinition.java index 793e5adc2..89b27ee38 100644 --- a/src/main/java/net/sf/jsqlparser/statement/create/table/ColumnDefinition.java +++ b/src/main/java/net/sf/jsqlparser/statement/create/table/ColumnDefinition.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement.create.table; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -20,7 +21,7 @@ /** * Globally used definition class for columns. */ -public class ColumnDefinition { +public class ColumnDefinition implements Serializable { private String columnName; private ColDataType colDataType; diff --git a/src/main/java/net/sf/jsqlparser/statement/create/table/CreateTable.java b/src/main/java/net/sf/jsqlparser/statement/create/table/CreateTable.java index 8fb5b4cc1..d3793589e 100644 --- a/src/main/java/net/sf/jsqlparser/statement/create/table/CreateTable.java +++ b/src/main/java/net/sf/jsqlparser/statement/create/table/CreateTable.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Optional; +import net.sf.jsqlparser.expression.SpannerInterleaveIn; import net.sf.jsqlparser.schema.Table; import net.sf.jsqlparser.statement.Statement; import net.sf.jsqlparser.statement.StatementVisitor; @@ -38,6 +39,8 @@ public class CreateTable implements Statement { private RowMovement rowMovement; + private SpannerInterleaveIn interleaveIn = null; + @Override public void accept(StatementVisitor statementVisitor) { statementVisitor.visit(this); @@ -199,6 +202,9 @@ public String toString() { if (likeTable != null) { sql += " LIKE " + (selectParenthesis ? "(" : "") + likeTable.toString() + (selectParenthesis ? ")" : ""); } + if (interleaveIn != null) { + sql += ", " + interleaveIn; + } return sql; } @@ -299,4 +305,17 @@ public CreateTable addIndexes(Collection indexes) { collection.addAll(indexes); return this.withIndexes(collection); } + + public SpannerInterleaveIn getSpannerInterleaveIn() { + return interleaveIn; + } + + public void setSpannerInterleaveIn(SpannerInterleaveIn spannerInterleaveIn) { + this.interleaveIn = spannerInterleaveIn; + } + + public CreateTable withSpannerInterleaveIn(SpannerInterleaveIn spannerInterleaveIn) { + this.interleaveIn = spannerInterleaveIn; + return this; + } } diff --git a/src/main/java/net/sf/jsqlparser/statement/create/table/Index.java b/src/main/java/net/sf/jsqlparser/statement/create/table/Index.java index f61747fd0..091dfb7af 100644 --- a/src/main/java/net/sf/jsqlparser/statement/create/table/Index.java +++ b/src/main/java/net/sf/jsqlparser/statement/create/table/Index.java @@ -10,6 +10,8 @@ package net.sf.jsqlparser.statement.create.table; import static java.util.stream.Collectors.toList; + +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -17,7 +19,7 @@ import java.util.Optional; import net.sf.jsqlparser.statement.select.PlainSelect; -public class Index { +public class Index implements Serializable { private String type; private String using; @@ -157,7 +159,7 @@ public Index withName(String name) { return this; } - public static class ColumnParams { + public static class ColumnParams implements Serializable { public final String columnName; public final List params; diff --git a/src/main/java/net/sf/jsqlparser/statement/create/table/RowMovement.java b/src/main/java/net/sf/jsqlparser/statement/create/table/RowMovement.java index 4cb56685f..a9934dcdf 100644 --- a/src/main/java/net/sf/jsqlparser/statement/create/table/RowMovement.java +++ b/src/main/java/net/sf/jsqlparser/statement/create/table/RowMovement.java @@ -9,10 +9,12 @@ */ package net.sf.jsqlparser.statement.create.table; +import java.io.Serializable; + /** * Holds data for the {@code row_movement} clause: https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7002.htm#i2204697 */ -public class RowMovement { +public class RowMovement implements Serializable { private RowMovementMode mode; diff --git a/src/main/java/net/sf/jsqlparser/statement/create/view/AutoRefreshOption.java b/src/main/java/net/sf/jsqlparser/statement/create/view/AutoRefreshOption.java new file mode 100644 index 000000000..ba33f18c9 --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/statement/create/view/AutoRefreshOption.java @@ -0,0 +1,18 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2019 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement.create.view; + +public enum AutoRefreshOption { + NONE, + + YES, + + NO +} diff --git a/src/main/java/net/sf/jsqlparser/statement/create/view/CreateView.java b/src/main/java/net/sf/jsqlparser/statement/create/view/CreateView.java index 913f14dc1..a623beb41 100644 --- a/src/main/java/net/sf/jsqlparser/statement/create/view/CreateView.java +++ b/src/main/java/net/sf/jsqlparser/statement/create/view/CreateView.java @@ -29,7 +29,9 @@ public class CreateView implements Statement { private boolean materialized = false; private ForceOption force = ForceOption.NONE; private TemporaryOption temp = TemporaryOption.NONE; + private AutoRefreshOption autoRefresh = AutoRefreshOption.NONE; private boolean withReadOnly = false; + private boolean ifNotExists = false; @Override public void accept(StatementVisitor statementVisitor) { @@ -95,6 +97,14 @@ public void setTemporary(TemporaryOption temp) { this.temp = temp; } + public AutoRefreshOption getAutoRefresh() { + return autoRefresh; + } + + public void setAutoRefresh(AutoRefreshOption autoRefresh) { + this.autoRefresh = autoRefresh; + } + public boolean isWithReadOnly() { return withReadOnly; } @@ -103,22 +113,21 @@ public void setWithReadOnly(boolean withReadOnly) { this.withReadOnly = withReadOnly; } + public boolean isIfNotExists() { + return ifNotExists; + } + + public void setIfNotExists(boolean ifNotExists) { + this.ifNotExists = ifNotExists; + } + @Override public String toString() { StringBuilder sql = new StringBuilder("CREATE "); if (isOrReplace()) { sql.append("OR REPLACE "); } - switch (force) { - case FORCE: - sql.append("FORCE "); - break; - case NO_FORCE: - sql.append("NO FORCE "); - break; - default: - // nothing - } + appendForceOptionIfApplicable(sql); if (temp != TemporaryOption.NONE) { sql.append(temp.name()).append(" "); @@ -129,6 +138,12 @@ public String toString() { } sql.append("VIEW "); sql.append(view); + if (ifNotExists) { + sql.append(" IF NOT EXISTS"); + } + if (autoRefresh != AutoRefreshOption.NONE) { + sql.append(" AUTO REFRESH ").append(autoRefresh.name()); + } if (columnNames != null) { sql.append(PlainSelect.getStringList(columnNames, true, true)); } @@ -139,6 +154,19 @@ public String toString() { return sql.toString(); } + private void appendForceOptionIfApplicable(StringBuilder sql) { + switch (force) { + case FORCE: + sql.append("FORCE "); + break; + case NO_FORCE: + sql.append("NO FORCE "); + break; + default: + // nothing + } + } + public CreateView withView(Table view) { this.setView(view); return this; diff --git a/src/main/java/net/sf/jsqlparser/statement/drop/Drop.java b/src/main/java/net/sf/jsqlparser/statement/drop/Drop.java index 8a39353bb..402574d26 100644 --- a/src/main/java/net/sf/jsqlparser/statement/drop/Drop.java +++ b/src/main/java/net/sf/jsqlparser/statement/drop/Drop.java @@ -28,6 +28,9 @@ public class Drop implements Statement { private List parameters; private Map> typeToParameters = new HashMap<>(); private boolean ifExists = false; + private boolean materialized = false; + + private boolean isUsingTemporary; @Override public void accept(StatementVisitor statementVisitor) { @@ -66,6 +69,27 @@ public void setIfExists(boolean ifExists) { this.ifExists = ifExists; } + public boolean isUsingTemporary() { + return isUsingTemporary; + } + + public void setUsingTemporary(boolean useTemporary) { + this.isUsingTemporary=useTemporary; + } + + public Drop withUsingTemporary(boolean useTemporary) { + setUsingTemporary(useTemporary); + return this; + } + + public boolean isMaterialized() { + return materialized; + } + + public void setMaterialized(boolean materialized) { + this.materialized = materialized; + } + public Map> getTypeToParameters() { return typeToParameters; } @@ -76,7 +100,10 @@ public void setTypeToParameters(Map> typeToParameters) { @Override public String toString() { - String sql = "DROP " + type + " " + String sql = "DROP " + + (isUsingTemporary ? "TEMPORARY " : "") + + (materialized ? "MATERIALIZED " : "") + + type + " " + (ifExists ? "IF EXISTS " : "") + name.toString(); if (type.equals("FUNCTION")) { @@ -84,7 +111,7 @@ public String toString() { } if (parameters != null && !parameters.isEmpty()) { - sql += " " + PlainSelect.getStringList(parameters); + sql += " " + PlainSelect.getStringList(parameters, false, false); } return sql; @@ -106,6 +133,11 @@ public Drop withIfExists(boolean ifExists) { return this; } + public Drop withMaterialized(boolean materialized) { + this.setMaterialized(materialized); + return this; + } + public Drop withType(String type) { this.setType(type); return this; diff --git a/src/main/java/net/sf/jsqlparser/statement/insert/InsertConflictAction.java b/src/main/java/net/sf/jsqlparser/statement/insert/InsertConflictAction.java index 32d9313eb..9542a7b75 100644 --- a/src/main/java/net/sf/jsqlparser/statement/insert/InsertConflictAction.java +++ b/src/main/java/net/sf/jsqlparser/statement/insert/InsertConflictAction.java @@ -13,6 +13,7 @@ import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.statement.update.UpdateSet; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Objects; @@ -31,16 +32,20 @@ * */ -public class InsertConflictAction { +public class InsertConflictAction implements Serializable { ConflictActionType conflictActionType; private final ArrayList updateSets = new ArrayList<>(); - Expression whereExpression; + Expression whereExpression; public InsertConflictAction(ConflictActionType conflictActionType) { this.conflictActionType = Objects.requireNonNull(conflictActionType, "The Conflict Action Type is mandatory and must not be Null."); } + public ArrayList getUpdateSets() { + return updateSets; + } + public ConflictActionType getConflictActionType() { return conflictActionType; } diff --git a/src/main/java/net/sf/jsqlparser/statement/insert/InsertConflictTarget.java b/src/main/java/net/sf/jsqlparser/statement/insert/InsertConflictTarget.java index 0f8e9808f..4366507d2 100644 --- a/src/main/java/net/sf/jsqlparser/statement/insert/InsertConflictTarget.java +++ b/src/main/java/net/sf/jsqlparser/statement/insert/InsertConflictTarget.java @@ -11,6 +11,8 @@ import net.sf.jsqlparser.expression.Expression; +import java.io.Serializable; + /** * https://www.postgresql.org/docs/current/sql-insert.html *
@@ -21,7 +23,7 @@
  * 
* Currently, COLLATE is not supported yet. */ -public class InsertConflictTarget { +public class InsertConflictTarget implements Serializable { String indexColumnName; Expression indexExpression; diff --git a/src/main/java/net/sf/jsqlparser/statement/merge/MergeInsert.java b/src/main/java/net/sf/jsqlparser/statement/merge/MergeInsert.java index c241e8eed..45b21c593 100644 --- a/src/main/java/net/sf/jsqlparser/statement/merge/MergeInsert.java +++ b/src/main/java/net/sf/jsqlparser/statement/merge/MergeInsert.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement.merge; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -18,7 +19,7 @@ import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.statement.select.PlainSelect; -public class MergeInsert { +public class MergeInsert implements Serializable { private List columns = null; private List values = null; diff --git a/src/main/java/net/sf/jsqlparser/statement/merge/MergeUpdate.java b/src/main/java/net/sf/jsqlparser/statement/merge/MergeUpdate.java index c3e66da12..799e664f4 100644 --- a/src/main/java/net/sf/jsqlparser/statement/merge/MergeUpdate.java +++ b/src/main/java/net/sf/jsqlparser/statement/merge/MergeUpdate.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement.merge; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -17,7 +18,7 @@ import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.schema.Column; -public class MergeUpdate { +public class MergeUpdate implements Serializable { private List columns = null; private List values = null; diff --git a/src/main/java/net/sf/jsqlparser/statement/replace/Replace.java b/src/main/java/net/sf/jsqlparser/statement/replace/Replace.java index e62b7ddb7..3c1f6a289 100644 --- a/src/main/java/net/sf/jsqlparser/statement/replace/Replace.java +++ b/src/main/java/net/sf/jsqlparser/statement/replace/Replace.java @@ -9,179 +9,75 @@ */ package net.sf.jsqlparser.statement.replace; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.operators.relational.ExpressionList; +import net.sf.jsqlparser.statement.upsert.Upsert; + import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Optional; -import net.sf.jsqlparser.expression.Expression; -import net.sf.jsqlparser.expression.operators.relational.ItemsList; -import net.sf.jsqlparser.schema.Column; -import net.sf.jsqlparser.schema.Table; -import net.sf.jsqlparser.statement.Statement; -import net.sf.jsqlparser.statement.StatementVisitor; -import net.sf.jsqlparser.statement.select.PlainSelect; - -public class Replace implements Statement { - - private Table table; - private List columns; - private ItemsList itemsList; - private List expressions; - private boolean useValues = true; - private boolean useIntoTables = false; - - @Override - public void accept(StatementVisitor statementVisitor) { - statementVisitor.visit(this); - } - public Table getTable() { - return table; - } +/** + * Not Standard compliant REPLACE Statement + * @deprecated + * This class has been merged into the UPSERT statement and should not longer been used. + *

Use {@link Upsert} instead. + * + */ - public void setTable(Table name) { - table = name; - } +@Deprecated +public class Replace extends Upsert { + @Deprecated public boolean isUseIntoTables() { - return useIntoTables; + return super.isUsingInto(); } + @Deprecated public void setUseIntoTables(boolean useIntoTables) { - this.useIntoTables = useIntoTables; - } - - public List getColumns() { - return columns; - } - - public ItemsList getItemsList() { - return itemsList; - } - - public void setColumns(List list) { - columns = list; - } - - public void setItemsList(ItemsList list) { - itemsList = list; + super.setUsingInto( useIntoTables ); } + @Deprecated /** * A list of {@link net.sf.jsqlparser.expression.Expression}s (from a "REPLACE mytab SET * col1=exp1, col2=exp2").
* it is null in case of a "REPLACE mytab (col1, col2) [...]" */ public List getExpressions() { - return expressions; + return super.getSetExpressions(); } + @Deprecated public void setExpressions(List list) { - expressions = list; - } - - public boolean isUseValues() { - return useValues; - } - - public void setUseValues(boolean useValues) { - this.useValues = useValues; - } - - @Override - public String toString() { - StringBuilder sql = new StringBuilder(); - sql.append("REPLACE "); - if (isUseIntoTables()) { - sql.append("INTO "); - } - sql.append(table); - - if (expressions != null && columns != null) { - // the SET col1=exp1, col2=exp2 case - sql.append(" SET "); - // each element from expressions match up with a column from columns. - for (int i = 0, s = columns.size(); i < s; i++) { - sql.append(columns.get(i)).append("=").append(expressions.get(i)); - sql.append( i < s - 1 - ? ", " - : "" ); - } - } else if (columns != null) { - // the REPLACE mytab (col1, col2) [...] case - sql.append(" ").append(PlainSelect.getStringList(columns, true, true)); - } - - if (itemsList != null) { - // REPLACE mytab SELECT * FROM mytab2 - // or VALUES ('as', ?, 565) - - if (useValues) { - sql.append(" VALUES"); - } - - sql.append(" ").append(itemsList); - } - - return sql.toString(); - } - - public Replace withUseValues(boolean useValues) { - this.setUseValues(useValues); - return this; + super.setItemsList( new ExpressionList(list) ); } + @Deprecated public Replace withUseIntoTables(boolean useIntoTables) { - this.setUseIntoTables(useIntoTables); - return this; - } - - public Replace withTable(Table table) { - this.setTable(table); - return this; - } - - public Replace withColumns(List columns) { - this.setColumns(columns); - return this; - } - - public Replace withItemsList(ItemsList itemsList) { - this.setItemsList(itemsList); + super.setUsingInto(useIntoTables); return this; } + @Deprecated public Replace withExpressions(List expressions) { - this.setExpressions(expressions); + super.setItemsList( new ExpressionList(expressions) ); return this; } - public Replace addColumns(Column... columns) { - List collection = Optional.ofNullable(getColumns()).orElseGet(ArrayList::new); - Collections.addAll(collection, columns); - return this.withColumns(collection); - } - - public Replace addColumns(Collection columns) { - List collection = Optional.ofNullable(getColumns()).orElseGet(ArrayList::new); - collection.addAll(columns); - return this.withColumns(collection); - } - + @Deprecated public Replace addExpressions(Expression... expressions) { - List collection = Optional.ofNullable(getExpressions()).orElseGet(ArrayList::new); + List collection = Optional.ofNullable( super.getSetExpressions() ).orElseGet(ArrayList::new); Collections.addAll(collection, expressions); return this.withExpressions(collection); } + @Deprecated public Replace addExpressions(Collection expressions) { - List collection = Optional.ofNullable(getExpressions()).orElseGet(ArrayList::new); + List collection = Optional.ofNullable( super.getSetExpressions() ).orElseGet(ArrayList::new); collection.addAll(expressions); return this.withExpressions(collection); } - - public E getItemsList(Class type) { - return type.cast(getItemsList()); - } } diff --git a/src/main/java/net/sf/jsqlparser/statement/select/Distinct.java b/src/main/java/net/sf/jsqlparser/statement/select/Distinct.java index 8cc89d5fd..6a1113bcd 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/Distinct.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/Distinct.java @@ -9,13 +9,14 @@ */ package net.sf.jsqlparser.statement.select; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Optional; -public class Distinct { +public class Distinct implements Serializable { private List onSelectItems; private boolean useUnique = false; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/ExpressionListItem.java b/src/main/java/net/sf/jsqlparser/statement/select/ExpressionListItem.java index 2bbe4dea9..0a8fee08c 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/ExpressionListItem.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/ExpressionListItem.java @@ -12,7 +12,9 @@ import net.sf.jsqlparser.expression.Alias; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; -public class ExpressionListItem { +import java.io.Serializable; + +public class ExpressionListItem implements Serializable { private ExpressionList expressionList; private Alias alias; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/Fetch.java b/src/main/java/net/sf/jsqlparser/statement/select/Fetch.java index 9f625a162..80468b81b 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/Fetch.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/Fetch.java @@ -11,7 +11,9 @@ import net.sf.jsqlparser.expression.JdbcParameter; -public class Fetch { +import java.io.Serializable; + +public class Fetch implements Serializable { private long rowCount; private JdbcParameter fetchJdbcParameter = null; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/First.java b/src/main/java/net/sf/jsqlparser/statement/select/First.java index 4ef0a3e8b..8a54cdf47 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/First.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/First.java @@ -11,7 +11,9 @@ import net.sf.jsqlparser.expression.JdbcParameter; -public class First { +import java.io.Serializable; + +public class First implements Serializable { public enum Keyword { FIRST, diff --git a/src/main/java/net/sf/jsqlparser/statement/select/GroupByElement.java b/src/main/java/net/sf/jsqlparser/statement/select/GroupByElement.java index 15c4f17c5..19400ce12 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/GroupByElement.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/GroupByElement.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement.select; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -17,7 +18,7 @@ import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; -public class GroupByElement { +public class GroupByElement implements Serializable { // ExpressionList has 'usingBrackets = true' and so we need to switch it off explicitly private ExpressionList groupByExpressions = new ExpressionList().withUsingBrackets(false); private List groupingSets = new ArrayList(); diff --git a/src/main/java/net/sf/jsqlparser/statement/select/Join.java b/src/main/java/net/sf/jsqlparser/statement/select/Join.java index 7c4200bef..e56b37cee 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/Join.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/Join.java @@ -21,6 +21,7 @@ public class Join extends ASTNodeAccessImpl { private boolean right = false; private boolean left = false; private boolean natural = false; + private boolean global = false; private boolean full = false; private boolean inner = false; private boolean simple = false; @@ -166,6 +167,10 @@ public boolean isNatural() { return natural; } + public boolean isGlobal() { + return global; + } + public Join withNatural(boolean b) { this.setNatural(b); return this; @@ -175,6 +180,10 @@ public void setNatural(boolean b) { natural = b; } + public void setGlobal(boolean b) { + global = b; + } + /** * Whether is a "FULL" join * @@ -299,6 +308,10 @@ public void setJoinWindow(KSQLJoinWindow joinWindow) { public String toString() { StringBuilder builder = new StringBuilder(); + if ( isGlobal() ) { + builder.append("GLOBAL "); + } + if (isSimple() && isOuter()) { builder.append("OUTER ").append(rightItem); } else if (isSimple()) { diff --git a/src/main/java/net/sf/jsqlparser/statement/select/Offset.java b/src/main/java/net/sf/jsqlparser/statement/select/Offset.java index 22556d4d8..c9b1337e7 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/Offset.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/Offset.java @@ -11,7 +11,9 @@ import net.sf.jsqlparser.expression.Expression; -public class Offset { +import java.io.Serializable; + +public class Offset implements Serializable { private Expression offsetExpression = null; private String offsetParam = null; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/OptimizeFor.java b/src/main/java/net/sf/jsqlparser/statement/select/OptimizeFor.java index 9c8bbb6d2..3e34219ba 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/OptimizeFor.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/OptimizeFor.java @@ -9,10 +9,12 @@ */ package net.sf.jsqlparser.statement.select; +import java.io.Serializable; + /** * A optimize for clause. */ -public class OptimizeFor { +public class OptimizeFor implements Serializable { private long rowCount; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/OrderByElement.java b/src/main/java/net/sf/jsqlparser/statement/select/OrderByElement.java index df07cf4bb..d9d1c6f85 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/OrderByElement.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/OrderByElement.java @@ -11,7 +11,9 @@ import net.sf.jsqlparser.expression.Expression; -public class OrderByElement { +import java.io.Serializable; + +public class OrderByElement implements Serializable { public enum NullOrdering { NULLS_FIRST, diff --git a/src/main/java/net/sf/jsqlparser/statement/select/Pivot.java b/src/main/java/net/sf/jsqlparser/statement/select/Pivot.java index f3318ee5f..f95474854 100755 --- a/src/main/java/net/sf/jsqlparser/statement/select/Pivot.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/Pivot.java @@ -9,6 +9,7 @@ */ package net.sf.jsqlparser.statement.select; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -17,7 +18,7 @@ import net.sf.jsqlparser.expression.Alias; import net.sf.jsqlparser.schema.Column; -public class Pivot { +public class Pivot implements Serializable { private List functionItems; private List forColumns; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/PlainSelect.java b/src/main/java/net/sf/jsqlparser/statement/select/PlainSelect.java index 6fc59b926..af61ef60b 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/PlainSelect.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/PlainSelect.java @@ -15,9 +15,11 @@ import java.util.Iterator; import java.util.List; import java.util.Optional; +import static java.util.stream.Collectors.joining; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.OracleHierarchicalExpression; import net.sf.jsqlparser.expression.OracleHint; +import net.sf.jsqlparser.expression.WindowDefinition; import net.sf.jsqlparser.parser.ASTNodeAccessImpl; import net.sf.jsqlparser.schema.Table; @@ -46,6 +48,7 @@ public class PlainSelect extends ASTNodeAccessImpl implements SelectBody { private boolean oracleSiblings = false; private boolean forUpdate = false; private Table forUpdateTable = null; + private boolean skipLocked; private boolean useBrackets = false; private Wait wait; private boolean mySqlSqlCalcFoundRows = false; @@ -55,6 +58,7 @@ public class PlainSelect extends ASTNodeAccessImpl implements SelectBody { private boolean noWait = false; private boolean emitChanges = false; private WithIsolation withIsolation; + private List windowDefinitions; public boolean isUseBrackets() { return useBrackets; @@ -230,8 +234,7 @@ public void setHaving(Expression expression) { } /** - * A list of {@link Expression}s of the GROUP BY clause. It is null in case - * there is no GROUP BY clause + * A list of {@link Expression}s of the GROUP BY clause. It is null in case there is no GROUP BY clause * * @return a list of {@link Expression}s */ @@ -331,7 +334,6 @@ public boolean isEmitChanges() { return emitChanges; } - public WithIsolation getWithIsolation() { return withIsolation; } @@ -340,8 +342,24 @@ public void setWithIsolation(WithIsolation withIsolation) { this.withIsolation = withIsolation; } + public List getWindowDefinitions() { + return windowDefinitions; + } + + public void setWindowDefinitions(List windowDefinitions) { + this.windowDefinitions = windowDefinitions; + } + + public boolean isSkipLocked() { + return skipLocked; + } + + public void setSkipLocked(boolean skipLocked) { + this.skipLocked = skipLocked; + } + @Override - @SuppressWarnings({"PMD.CyclomaticComplexity" , "PMD.ExcessiveMethodLength", "PMD.NPathComplexity"}) + @SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.ExcessiveMethodLength", "PMD.NPathComplexity"}) public String toString() { StringBuilder sql = new StringBuilder(); if (useBrackets) { @@ -418,8 +436,14 @@ public String toString() { if (having != null) { sql.append(" HAVING ").append(having); } + + if (windowDefinitions != null) { + sql.append(" WINDOW "); + sql.append(windowDefinitions.stream().map(WindowDefinition::toString).collect(joining(", "))); + } + sql.append(orderByToString(oracleSiblings, orderByElements)); - if (emitChanges){ + if (emitChanges) { sql.append(" EMIT CHANGES"); } if (limit != null) { @@ -449,6 +473,8 @@ public String toString() { if (isNoWait()) { sql.append(" NOWAIT"); + } else if (isSkipLocked()) { + sql.append(" SKIP LOCKED"); } } if (optimizeFor != null) { @@ -471,7 +497,7 @@ public String toString() { } if (withIsolation != null) { sql.append(withIsolation); - } + } } if (forXmlPath != null) { sql.append(" FOR XML PATH(").append(forXmlPath).append(")"); @@ -509,8 +535,8 @@ public static String getFormatedList(List list, String expression, boolean us } /** - * List the toString out put of the objects in the List comma separated. If the - * List is null or empty an empty string is returned. + * List the toString out put of the objects in the List comma separated. If the List is null or empty an empty + * string is returned. * * The same as getStringList(list, true, false) * @@ -523,11 +549,11 @@ public static String getStringList(List list) { } /** - * List the toString out put of the objects in the List that can be comma - * separated. If the List is null or empty an empty string is returned. + * List the toString out put of the objects in the List that can be comma separated. If the List is null or empty an + * empty string is returned. * - * @param list list of objects with toString methods - * @param useComma true if the list has to be comma separated + * @param list list of objects with toString methods + * @param useComma true if the list has to be comma separated * @param useBrackets true if the list has to be enclosed in brackets * @return comma separated list of the elements in the list */ @@ -536,17 +562,17 @@ public static String getStringList(List list, boolean useComma, boolean useBr } /** - * Append the toString out put of the objects in the List (that can be comma - * separated). If the List is null or empty an empty string is returned. + * Append the toString out put of the objects in the List (that can be comma separated). If the List is null or + * empty an empty string is returned. * - * @param list list of objects with toString methods - * @param useComma true if the list has to be comma separated + * @param list list of objects with toString methods + * @param useComma true if the list has to be comma separated * @param useBrackets true if the list has to be enclosed in brackets * @return comma separated list of the elements in the list */ public static StringBuilder appendStringListTo(StringBuilder builder, List list, boolean useComma, boolean useBrackets) { if (list != null) { - String comma = useComma ? "," : ""; + String comma = useComma ? ", " : " "; if (useBrackets) { builder.append("("); @@ -554,9 +580,9 @@ public static StringBuilder appendStringListTo(StringBuilder builder, List li int size = list.size(); for (int i = 0; i < size; i++) { - builder.append(list.get(i)).append( i < size - 1 - ? comma + " " - : "" ); + builder.append(list.get(i)).append(i < size - 1 + ? comma + : ""); } if (useBrackets) { @@ -705,6 +731,11 @@ public PlainSelect withNoWait(boolean noWait) { return this; } + public PlainSelect withSkipLocked(boolean skipLocked) { + this.setSkipLocked(skipLocked); + return this; + } + public PlainSelect withHaving(Expression having) { this.setHaving(having); return this; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/Skip.java b/src/main/java/net/sf/jsqlparser/statement/select/Skip.java index f7af8f1f4..0031898d4 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/Skip.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/Skip.java @@ -11,7 +11,9 @@ import net.sf.jsqlparser.expression.JdbcParameter; -public class Skip { +import java.io.Serializable; + +public class Skip implements Serializable { private Long rowCount; private JdbcParameter jdbcParameter; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/Top.java b/src/main/java/net/sf/jsqlparser/statement/select/Top.java index 1c51cebe3..ad57c2a56 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/Top.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/Top.java @@ -11,7 +11,9 @@ import net.sf.jsqlparser.expression.Expression; -public class Top { +import java.io.Serializable; + +public class Top implements Serializable { private boolean hasParenthesis = false; private boolean isPercentage = false; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/UnPivot.java b/src/main/java/net/sf/jsqlparser/statement/select/UnPivot.java index 699bfc5ac..3ae7acf50 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/UnPivot.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/UnPivot.java @@ -12,9 +12,10 @@ import net.sf.jsqlparser.expression.Alias; import net.sf.jsqlparser.schema.Column; +import java.io.Serializable; import java.util.List; -public class UnPivot { +public class UnPivot implements Serializable { private boolean includeNulls = false; private boolean includeNullsSpecified = false; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/ValuesList.java b/src/main/java/net/sf/jsqlparser/statement/select/ValuesList.java index 70b9c9c6e..27c64c036 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/ValuesList.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/ValuesList.java @@ -88,7 +88,7 @@ public String toString() { StringBuilder b = new StringBuilder(); b.append("(VALUES "); - for (Iterator it = getMultiExpressionList().getExprList().iterator(); it. + for (Iterator it = getMultiExpressionList().getExpressionLists().iterator(); it. hasNext();) { b.append(PlainSelect.getStringList(it.next().getExpressions(), true, !isNoBrackets())); if (it.hasNext()) { @@ -97,7 +97,7 @@ public String toString() { } b.append(")"); if (alias != null) { - b.append(alias.toString()); + b.append(alias); if (columnNames != null) { b.append("("); diff --git a/src/main/java/net/sf/jsqlparser/statement/select/Wait.java b/src/main/java/net/sf/jsqlparser/statement/select/Wait.java index 5045449a3..0d94e22a0 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/Wait.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/Wait.java @@ -9,7 +9,9 @@ */ package net.sf.jsqlparser.statement.select; -public class Wait { +import java.io.Serializable; + +public class Wait implements Serializable { private long timeout; diff --git a/src/main/java/net/sf/jsqlparser/statement/select/WithIsolation.java b/src/main/java/net/sf/jsqlparser/statement/select/WithIsolation.java index 2fde93e2f..7aef6ef4e 100644 --- a/src/main/java/net/sf/jsqlparser/statement/select/WithIsolation.java +++ b/src/main/java/net/sf/jsqlparser/statement/select/WithIsolation.java @@ -10,7 +10,9 @@ package net.sf.jsqlparser.statement.select; -public class WithIsolation { +import java.io.Serializable; + +public class WithIsolation implements Serializable { private String isolation = "UR"; diff --git a/src/main/java/net/sf/jsqlparser/statement/show/ShowIndexStatement.java b/src/main/java/net/sf/jsqlparser/statement/show/ShowIndexStatement.java new file mode 100644 index 000000000..39a35d07c --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/statement/show/ShowIndexStatement.java @@ -0,0 +1,54 @@ + /*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2019 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement.show; + +import net.sf.jsqlparser.statement.Statement; +import net.sf.jsqlparser.statement.StatementVisitor; + +/** +* +* @author Jayant Kumar Yadav +*/ + +public class ShowIndexStatement implements Statement { + + private String tableName; + + public ShowIndexStatement() { + // empty constructor + } + + public ShowIndexStatement(String tableName) { + this.tableName = tableName; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + @Override + public String toString() { + return "SHOW INDEX FROM " + tableName; + } + + @Override + public void accept(StatementVisitor statementVisitor) { + statementVisitor.visit(this); + } + + public ShowIndexStatement withTableName(String tableName) { + this.setTableName(tableName); + return this; + } +} \ No newline at end of file diff --git a/src/main/java/net/sf/jsqlparser/statement/update/UpdateSet.java b/src/main/java/net/sf/jsqlparser/statement/update/UpdateSet.java index a25df6e5e..3cb26eaea 100644 --- a/src/main/java/net/sf/jsqlparser/statement/update/UpdateSet.java +++ b/src/main/java/net/sf/jsqlparser/statement/update/UpdateSet.java @@ -13,11 +13,12 @@ import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.schema.Column; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Objects; -public class UpdateSet { +public class UpdateSet implements Serializable { protected boolean usingBracketsForColumns = false; protected boolean usingBracketsForValues = false; protected ArrayList columns = new ArrayList<>(); diff --git a/src/main/java/net/sf/jsqlparser/statement/upsert/Upsert.java b/src/main/java/net/sf/jsqlparser/statement/upsert/Upsert.java index e68969691..ed602836e 100644 --- a/src/main/java/net/sf/jsqlparser/statement/upsert/Upsert.java +++ b/src/main/java/net/sf/jsqlparser/statement/upsert/Upsert.java @@ -9,12 +9,8 @@ */ package net.sf.jsqlparser.statement.upsert; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Optional; import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.expression.operators.relational.ItemsList; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; @@ -23,6 +19,12 @@ import net.sf.jsqlparser.statement.select.PlainSelect; import net.sf.jsqlparser.statement.select.Select; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + public class Upsert implements Statement { private Table table; @@ -35,10 +37,40 @@ public class Upsert implements Statement { private List duplicateUpdateColumns; private List duplicateUpdateExpressionList; + private UpsertType upsertType = UpsertType.UPSERT; + + private boolean isUsingInto; + @Override public void accept(StatementVisitor statementVisitor) { statementVisitor.visit(this); } + + public UpsertType getUpsertType() { + return upsertType; + } + + public void setUpsertType(UpsertType upsertType) { + this.upsertType=upsertType; + } + + public Upsert withUpsertType(UpsertType upsertType) { + setUpsertType(upsertType); + return this; + } + + public boolean isUsingInto() { + return isUsingInto; + } + + public void setUsingInto(boolean useInto) { + this.isUsingInto = useInto; + } + + public Upsert withUsingInto(boolean useInto) { + setUsingInto(useInto); + return this; + } public void setTable(Table name) { table = name; @@ -63,6 +95,15 @@ public void setItemsList(ItemsList list) { public ItemsList getItemsList() { return itemsList; } + + public List getSetExpressions() { + List expressions = null; + if (itemsList instanceof ExpressionList) { + ExpressionList expressionList = (ExpressionList) itemsList; + expressions= expressionList.getExpressions(); + } + return expressions; + } public void setUseValues(boolean useValues) { this.useValues = useValues; @@ -113,30 +154,70 @@ public List getDuplicateUpdateExpressionList() { } @Override - @SuppressWarnings({"PMD.CyclomaticComplexity"}) + @SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"}) public String toString() { StringBuilder sb = new StringBuilder(); - - sb.append("UPSERT INTO "); - sb.append(table).append(" "); - if (columns != null) { - sb.append(PlainSelect.getStringList(columns, true, true)).append(" "); - } - if (useValues) { - sb.append("VALUES "); + + switch (upsertType) { + case REPLACE: + case REPLACE_SET: + sb.append("REPLACE "); + break; + case INSERT_OR_ABORT: + sb.append("INSERT OR ABORT "); + break; + case INSERT_OR_FAIL: + sb.append("INSERT OR FAIL "); + break; + case INSERT_OR_IGNORE: + sb.append("INSERT OR IGNORE "); + break; + case INSERT_OR_REPLACE: + sb.append("INSERT OR REPLACE "); + break; + case INSERT_OR_ROLLBACK: + sb.append("INSERT OR ROLLBACK "); + break; + case UPSERT: + default: + sb.append("UPSERT "); } - if (itemsList != null) { - sb.append(itemsList); + if (isUsingInto) { + sb.append("INTO "); + } + sb.append(table).append(" "); + + if (upsertType==UpsertType.REPLACE_SET) { + sb.append("SET "); + // each element from expressions match up with a column from columns. + List expressions = getSetExpressions(); + for (int i = 0, s = columns.size(); i < s; i++) { + sb.append(columns.get(i)).append("=").append(expressions.get(i)); + sb.append( i < s - 1 + ? ", " + : "" ); + } } else { - if (useSelectBrackets) { - sb.append("("); + if (columns != null) { + sb.append(PlainSelect.getStringList(columns, true, true)).append(" "); } - if (select != null) { - sb.append(select); + if (useValues) { + sb.append("VALUES "); } - if (useSelectBrackets) { - sb.append(")"); + + if (itemsList != null) { + sb.append(itemsList); + } else { + if (useSelectBrackets) { + sb.append("("); + } + if (select != null) { + sb.append(select); + } + if (useSelectBrackets) { + sb.append(")"); + } } } diff --git a/src/main/java/net/sf/jsqlparser/statement/upsert/UpsertType.java b/src/main/java/net/sf/jsqlparser/statement/upsert/UpsertType.java new file mode 100644 index 000000000..63f34785a --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/statement/upsert/UpsertType.java @@ -0,0 +1,21 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2023 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement.upsert; + +public enum UpsertType { + UPSERT + , REPLACE + , REPLACE_SET + , INSERT_OR_ABORT + , INSERT_OR_FAIL + , INSERT_OR_IGNORE + , INSERT_OR_REPLACE + , INSERT_OR_ROLLBACK +} diff --git a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java index 945b163a1..566f06f74 100644 --- a/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java +++ b/src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java @@ -13,15 +13,119 @@ import java.util.List; import java.util.Map; -import net.sf.jsqlparser.expression.*; -import net.sf.jsqlparser.expression.operators.arithmetic.*; +import net.sf.jsqlparser.expression.AllValue; +import net.sf.jsqlparser.expression.AnalyticExpression; +import net.sf.jsqlparser.expression.AnyComparisonExpression; +import net.sf.jsqlparser.expression.ArrayConstructor; +import net.sf.jsqlparser.expression.ArrayExpression; +import net.sf.jsqlparser.expression.BinaryExpression; +import net.sf.jsqlparser.expression.CaseExpression; +import net.sf.jsqlparser.expression.CastExpression; +import net.sf.jsqlparser.expression.CollateExpression; +import net.sf.jsqlparser.expression.ConnectByRootOperator; +import net.sf.jsqlparser.expression.DateTimeLiteralExpression; +import net.sf.jsqlparser.expression.DateValue; +import net.sf.jsqlparser.expression.DoubleValue; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.ExpressionVisitor; +import net.sf.jsqlparser.expression.ExtractExpression; +import net.sf.jsqlparser.expression.Function; +import net.sf.jsqlparser.expression.HexValue; +import net.sf.jsqlparser.expression.IntervalExpression; +import net.sf.jsqlparser.expression.JdbcNamedParameter; +import net.sf.jsqlparser.expression.JdbcParameter; +import net.sf.jsqlparser.expression.JsonAggregateFunction; +import net.sf.jsqlparser.expression.JsonExpression; +import net.sf.jsqlparser.expression.JsonFunction; +import net.sf.jsqlparser.expression.JsonFunctionExpression; +import net.sf.jsqlparser.expression.KeepExpression; +import net.sf.jsqlparser.expression.LongValue; +import net.sf.jsqlparser.expression.MySQLGroupConcat; +import net.sf.jsqlparser.expression.NextValExpression; +import net.sf.jsqlparser.expression.NotExpression; +import net.sf.jsqlparser.expression.NullValue; +import net.sf.jsqlparser.expression.NumericBind; +import net.sf.jsqlparser.expression.OracleHierarchicalExpression; +import net.sf.jsqlparser.expression.OracleHint; +import net.sf.jsqlparser.expression.OracleNamedFunctionParameter; +import net.sf.jsqlparser.expression.OverlapsCondition; +import net.sf.jsqlparser.expression.Parenthesis; +import net.sf.jsqlparser.expression.RowConstructor; +import net.sf.jsqlparser.expression.RowGetExpression; +import net.sf.jsqlparser.expression.SafeCastExpression; +import net.sf.jsqlparser.expression.SignedExpression; +import net.sf.jsqlparser.expression.StringValue; +import net.sf.jsqlparser.expression.TimeKeyExpression; +import net.sf.jsqlparser.expression.TimeValue; +import net.sf.jsqlparser.expression.TimestampValue; +import net.sf.jsqlparser.expression.TimezoneExpression; +import net.sf.jsqlparser.expression.TryCastExpression; +import net.sf.jsqlparser.expression.UserVariable; +import net.sf.jsqlparser.expression.ValueListExpression; +import net.sf.jsqlparser.expression.VariableAssignment; +import net.sf.jsqlparser.expression.WhenClause; +import net.sf.jsqlparser.expression.XMLSerializeExpr; +import net.sf.jsqlparser.expression.operators.arithmetic.Addition; +import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseAnd; +import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseLeftShift; +import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseOr; +import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseRightShift; +import net.sf.jsqlparser.expression.operators.arithmetic.BitwiseXor; +import net.sf.jsqlparser.expression.operators.arithmetic.Concat; +import net.sf.jsqlparser.expression.operators.arithmetic.Division; +import net.sf.jsqlparser.expression.operators.arithmetic.IntegerDivision; +import net.sf.jsqlparser.expression.operators.arithmetic.Modulo; +import net.sf.jsqlparser.expression.operators.arithmetic.Multiplication; +import net.sf.jsqlparser.expression.operators.arithmetic.Subtraction; import net.sf.jsqlparser.expression.operators.conditional.AndExpression; import net.sf.jsqlparser.expression.operators.conditional.OrExpression; import net.sf.jsqlparser.expression.operators.conditional.XorExpression; -import net.sf.jsqlparser.expression.operators.relational.*; +import net.sf.jsqlparser.expression.operators.relational.Between; +import net.sf.jsqlparser.expression.operators.relational.EqualsTo; +import net.sf.jsqlparser.expression.operators.relational.ExistsExpression; +import net.sf.jsqlparser.expression.operators.relational.ExpressionList; +import net.sf.jsqlparser.expression.operators.relational.FullTextSearch; +import net.sf.jsqlparser.expression.operators.relational.GeometryDistance; +import net.sf.jsqlparser.expression.operators.relational.GreaterThan; +import net.sf.jsqlparser.expression.operators.relational.GreaterThanEquals; +import net.sf.jsqlparser.expression.operators.relational.InExpression; +import net.sf.jsqlparser.expression.operators.relational.IsBooleanExpression; +import net.sf.jsqlparser.expression.operators.relational.IsDistinctExpression; +import net.sf.jsqlparser.expression.operators.relational.IsNullExpression; +import net.sf.jsqlparser.expression.operators.relational.ItemsListVisitor; +import net.sf.jsqlparser.expression.operators.relational.JsonOperator; +import net.sf.jsqlparser.expression.operators.relational.LikeExpression; +import net.sf.jsqlparser.expression.operators.relational.Matches; +import net.sf.jsqlparser.expression.operators.relational.MinorThan; +import net.sf.jsqlparser.expression.operators.relational.MinorThanEquals; +import net.sf.jsqlparser.expression.operators.relational.MultiExpressionList; +import net.sf.jsqlparser.expression.operators.relational.NamedExpressionList; +import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo; +import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperator; +import net.sf.jsqlparser.expression.operators.relational.RegExpMySQLOperator; +import net.sf.jsqlparser.expression.operators.relational.SimilarToExpression; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.schema.Table; -import net.sf.jsqlparser.statement.*; +import net.sf.jsqlparser.statement.Block; +import net.sf.jsqlparser.statement.Commit; +import net.sf.jsqlparser.statement.CreateFunctionalStatement; +import net.sf.jsqlparser.statement.DeclareStatement; +import net.sf.jsqlparser.statement.DescribeStatement; +import net.sf.jsqlparser.statement.ExplainStatement; +import net.sf.jsqlparser.statement.IfElseStatement; +import net.sf.jsqlparser.statement.PurgeObjectType; +import net.sf.jsqlparser.statement.PurgeStatement; +import net.sf.jsqlparser.statement.ResetStatement; +import net.sf.jsqlparser.statement.RollbackStatement; +import net.sf.jsqlparser.statement.SavepointStatement; +import net.sf.jsqlparser.statement.SetStatement; +import net.sf.jsqlparser.statement.ShowColumnsStatement; +import net.sf.jsqlparser.statement.ShowStatement; +import net.sf.jsqlparser.statement.Statement; +import net.sf.jsqlparser.statement.StatementVisitor; +import net.sf.jsqlparser.statement.Statements; +import net.sf.jsqlparser.statement.UnsupportedStatement; +import net.sf.jsqlparser.statement.UseStatement; import net.sf.jsqlparser.statement.alter.Alter; import net.sf.jsqlparser.statement.alter.AlterSession; import net.sf.jsqlparser.statement.alter.AlterSystemStatement; @@ -62,6 +166,7 @@ import net.sf.jsqlparser.statement.select.TableFunction; import net.sf.jsqlparser.statement.select.ValuesList; import net.sf.jsqlparser.statement.select.WithItem; +import net.sf.jsqlparser.statement.show.ShowIndexStatement; import net.sf.jsqlparser.statement.show.ShowTablesStatement; import net.sf.jsqlparser.statement.truncate.Truncate; import net.sf.jsqlparser.statement.update.Update; @@ -189,6 +294,12 @@ public void visit(Between between) { between.getBetweenExpressionEnd().accept(this); } + @Override + public void visit(OverlapsCondition overlapsCondition) { + overlapsCondition.getLeft().accept(this); + overlapsCondition.getRight().accept(this); + } + @Override public void visit(Column tableColumn) { if (allowColumnProcessing && tableColumn.getTable() != null && tableColumn.getTable().getName() != null) { @@ -468,6 +579,11 @@ public void visit(TryCastExpression cast) { cast.getLeftExpression().accept(this); } + @Override + public void visit(SafeCastExpression cast) { + cast.getLeftExpression().accept(this); + } + @Override public void visit(Modulo modulo) { visitBinaryExpression(modulo); @@ -753,6 +869,11 @@ public void visit(ShowColumnsStatement set) { throw new UnsupportedOperationException(NOT_SUPPORTED_YET); } + @Override + public void visit(ShowIndexStatement showIndex) { + throw new UnsupportedOperationException(NOT_SUPPORTED_YET); + } + @Override public void visit(RowConstructor rowConstructor) { for (Expression expr : rowConstructor.getExprList().getExpressions()) { diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/CreateTableDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/CreateTableDeParser.java index 4036d9ad0..d930e944c 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/CreateTableDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/CreateTableDeParser.java @@ -120,6 +120,9 @@ public void deParse(CreateTable createTable) { buffer.append(")"); } } + if (createTable.getSpannerInterleaveIn() != null) { + buffer.append(", ").append(createTable.getSpannerInterleaveIn()); + } } } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/CreateViewDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/CreateViewDeParser.java index fd9dd958c..8eb03ae53 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/CreateViewDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/CreateViewDeParser.java @@ -11,6 +11,7 @@ import net.sf.jsqlparser.statement.create.view.CreateView; import net.sf.jsqlparser.statement.create.view.TemporaryOption; +import net.sf.jsqlparser.statement.create.view.AutoRefreshOption; import net.sf.jsqlparser.statement.select.PlainSelect; import net.sf.jsqlparser.statement.select.Select; import net.sf.jsqlparser.statement.select.SelectVisitor; @@ -42,16 +43,16 @@ public void deParse(CreateView createView) { buffer.append("OR REPLACE "); } switch (createView.getForce()) { - case FORCE: - buffer.append("FORCE "); - break; - case NO_FORCE: - buffer.append("NO FORCE "); - break; - case NONE: - break; - default: - // nothing + case FORCE: + buffer.append("FORCE "); + break; + case NO_FORCE: + buffer.append("NO FORCE "); + break; + case NONE: + break; + default: + // nothing } if (createView.getTemporary() != TemporaryOption.NONE) { buffer.append(createView.getTemporary().name()).append(" "); @@ -60,6 +61,12 @@ public void deParse(CreateView createView) { buffer.append("MATERIALIZED "); } buffer.append("VIEW ").append(createView.getView().getFullyQualifiedName()); + if (createView.isIfNotExists()) { + buffer.append(" IF NOT EXISTS"); + } + if (createView.getAutoRefresh() != AutoRefreshOption.NONE) { + buffer.append(" AUTO REFRESH ").append(createView.getAutoRefresh().name()); + } if (createView.getColumnNames() != null) { buffer.append(PlainSelect.getStringList(createView.getColumnNames(), true, true)); } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/DropDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/DropDeParser.java index 0ec7c9a19..090a2cad1 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/DropDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/DropDeParser.java @@ -21,6 +21,12 @@ public DropDeParser(StringBuilder buffer) { @Override public void deParse(Drop drop) { buffer.append("DROP "); + if (drop.isUsingTemporary()) { + buffer.append("TEMPORARY "); + } + if (drop.isMaterialized()) { + buffer.append("MATERIALIZED "); + } buffer.append(drop.getType()); if (drop.isIfExists()) { buffer.append(" IF EXISTS"); @@ -33,7 +39,7 @@ public void deParse(Drop drop) { } if (drop.getParameters() != null && !drop.getParameters().isEmpty()) { - buffer.append(" ").append(PlainSelect.getStringList(drop.getParameters())); + buffer.append(" ").append(PlainSelect.getStringList(drop.getParameters(), false, false)); } } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index 0cef345fe..33cd00aab 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -107,6 +107,11 @@ public void visit(Between between) { } + @Override + public void visit(OverlapsCondition overlapsCondition) { + buffer.append(overlapsCondition.toString()); + } + @Override public void visit(EqualsTo equalsTo) { visitOldOracleJoinBinaryExpression(equalsTo, " = "); @@ -324,6 +329,7 @@ public void visit(OrExpression orExpression) { visitBinaryExpression(orExpression, " OR "); } + @Override public void visit(XorExpression xorExpression) { visitBinaryExpression(xorExpression, " XOR "); @@ -459,19 +465,7 @@ public void visit(Function function) { @Override public void visit(ExpressionList expressionList) { - if (expressionList.isUsingBrackets()) { - buffer.append("("); - } - for (Iterator iter = expressionList.getExpressions().iterator(); iter.hasNext();) { - Expression expression = iter.next(); - expression.accept(this); - if (iter.hasNext()) { - buffer.append(", "); - } - } - if (expressionList.isUsingBrackets()) { - buffer.append(")"); - } + new ExpressionListDeParser(this, buffer, expressionList.isUsingBrackets(), true).deParse(expressionList.getExpressions()); } @Override @@ -550,7 +544,7 @@ public void visit(WhenClause whenClause) { public void visit(AnyComparisonExpression anyComparisonExpression) { buffer.append(anyComparisonExpression.getAnyType().name()).append(" ( "); SubSelect subSelect = anyComparisonExpression.getSubSelect(); - if (subSelect!=null) { + if (subSelect != null) { subSelect.accept((ExpressionVisitor) this); } else { ExpressionList expressionList = (ExpressionList) anyComparisonExpression.getItemsList(); @@ -558,7 +552,7 @@ public void visit(AnyComparisonExpression anyComparisonExpression) { buffer.append( PlainSelect.getStringList(expressionList.getExpressions(), true, anyComparisonExpression.isUsingBracketsForValues())); } - buffer.append(" ) "); + buffer.append(" ) "); } @Override @@ -592,7 +586,7 @@ public void visit(CastExpression cast) { buffer.append("CAST("); cast.getLeftExpression().accept(this); buffer.append(" AS "); - buffer.append( cast.getRowConstructor()!=null ? cast.getRowConstructor() : cast.getType() ); + buffer.append(cast.getRowConstructor() != null ? cast.getRowConstructor() : cast.getType()); buffer.append(")"); } else { cast.getLeftExpression().accept(this); @@ -607,7 +601,7 @@ public void visit(TryCastExpression cast) { buffer.append("TRY_CAST("); cast.getLeftExpression().accept(this); buffer.append(" AS "); - buffer.append( cast.getRowConstructor()!=null ? cast.getRowConstructor() : cast.getType() ); + buffer.append(cast.getRowConstructor() != null ? cast.getRowConstructor() : cast.getType()); buffer.append(")"); } else { cast.getLeftExpression().accept(this); @@ -616,6 +610,22 @@ public void visit(TryCastExpression cast) { } } + @Override + public void visit(SafeCastExpression cast) { + if (cast.isUseCastKeyword()) { + buffer.append("SAFE_CAST("); + cast.getLeftExpression().accept(this); + buffer.append(" AS "); + buffer.append(cast.getRowConstructor() != null ? cast.getRowConstructor() : cast.getType()); + buffer.append(")"); + } else { + cast.getLeftExpression().accept(this); + buffer.append("::"); + buffer.append(cast.getType()); + } + + } + @Override public void visit(Modulo modulo) { visitBinaryExpression(modulo, " % "); @@ -659,9 +669,9 @@ public void visit(AnalyticExpression aexpr) { } if (aexpr.getFuncOrderBy() != null) { buffer.append(" ORDER BY "); - buffer.append( aexpr.getFuncOrderBy().stream().map(OrderByElement::toString).collect(joining(", "))); + buffer.append(aexpr.getFuncOrderBy().stream().map(OrderByElement::toString).collect(joining(", "))); } - + buffer.append(") "); if (keep != null) { keep.accept(this); @@ -676,7 +686,7 @@ public void visit(AnalyticExpression aexpr) { buffer.append(" "); } } - + if (aexpr.isIgnoreNullsOutside()) { buffer.append("IGNORE NULLS "); } @@ -687,48 +697,60 @@ public void visit(AnalyticExpression aexpr) { case WITHIN_GROUP: buffer.append("WITHIN GROUP"); break; + case WITHIN_GROUP_OVER: + buffer.append("WITHIN GROUP ("); + aexpr.getWindowDefinition().getOrderBy().toStringOrderByElements(buffer); + buffer.append(") OVER ("); + aexpr.getWindowDefinition().getPartitionBy().toStringPartitionBy(buffer); + buffer.append(")"); + break; default: buffer.append("OVER"); } - buffer.append(" ("); - if (partitionExpressionList != null && !partitionExpressionList.getExpressions().isEmpty()) { - buffer.append("PARTITION BY "); - if (aexpr.isPartitionByBrackets()) { - buffer.append("("); - } - List expressions = partitionExpressionList.getExpressions(); - for (int i = 0; i < expressions.size(); i++) { - if (i > 0) { - buffer.append(", "); + if (aexpr.getWindowName() != null) { + buffer.append(" ").append(aexpr.getWindowName()); + } else if (aexpr.getType()!=AnalyticType.WITHIN_GROUP_OVER) { + buffer.append(" ("); + + if (partitionExpressionList != null && !partitionExpressionList.getExpressions().isEmpty()) { + buffer.append("PARTITION BY "); + if (aexpr.isPartitionByBrackets()) { + buffer.append("("); } - expressions.get(i).accept(this); - } - if (aexpr.isPartitionByBrackets()) { - buffer.append(")"); + List expressions = partitionExpressionList.getExpressions(); + for (int i = 0; i < expressions.size(); i++) { + if (i > 0) { + buffer.append(", "); + } + expressions.get(i).accept(this); + } + if (aexpr.isPartitionByBrackets()) { + buffer.append(")"); + } + buffer.append(" "); } - buffer.append(" "); - } - if (orderByElements != null && !orderByElements.isEmpty()) { - buffer.append("ORDER BY "); - orderByDeParser.setExpressionVisitor(this); - orderByDeParser.setBuffer(buffer); - for (int i = 0; i < orderByElements.size(); i++) { - if (i > 0) { - buffer.append(", "); + if (orderByElements != null && !orderByElements.isEmpty()) { + buffer.append("ORDER BY "); + orderByDeParser.setExpressionVisitor(this); + orderByDeParser.setBuffer(buffer); + for (int i = 0; i < orderByElements.size(); i++) { + if (i > 0) { + buffer.append(", "); + } + orderByDeParser.deParseElement(orderByElements.get(i)); } - orderByDeParser.deParseElement(orderByElements.get(i)); } - } - if (windowElement != null) { - if (orderByElements != null && !orderByElements.isEmpty()) { - buffer.append(' '); + if (windowElement != null) { + if (orderByElements != null && !orderByElements.isEmpty()) { + buffer.append(' '); + } + buffer.append(windowElement); } - buffer.append(windowElement); - } - buffer.append(")"); + buffer.append(")"); + } } @Override @@ -806,7 +828,8 @@ public void visit(MySQLGroupConcat groupConcat) { @Override public void visit(ValueListExpression valueList) { - buffer.append(valueList.toString()); + ExpressionList expressionList = valueList.getExpressionList(); + expressionList.accept(this); } @Override @@ -815,12 +838,12 @@ public void visit(RowConstructor rowConstructor) { buffer.append(rowConstructor.getName()); } buffer.append("("); - - if (rowConstructor.getColumnDefinitions().size()>0) { + + if (rowConstructor.getColumnDefinitions().size() > 0) { buffer.append("("); int i = 0; - for (ColumnDefinition columnDefinition:rowConstructor.getColumnDefinitions()) { - buffer.append(i>0 ? ", " : "").append(columnDefinition.toString()); + for (ColumnDefinition columnDefinition : rowConstructor.getColumnDefinitions()) { + buffer.append(i > 0 ? ", " : "").append(columnDefinition.toString()); i++; } buffer.append(")"); @@ -861,7 +884,7 @@ public void visit(DateTimeLiteralExpression literal) { @Override public void visit(NextValExpression nextVal) { - buffer.append(nextVal.isUsingNextValueFor() ? "NEXT VALUE FOR " : "NEXTVAL FOR ").append(nextVal.getName()); + buffer.append(nextVal.isUsingNextValueFor() ? "NEXT VALUE FOR " : "NEXTVAL FOR ").append(nextVal.getName()); } @Override @@ -929,7 +952,7 @@ public void visit(XMLSerializeExpr expr) { buffer.append("xmlserialize(xmlagg(xmltext("); expr.getExpression().accept(this); buffer.append(")"); - if (expr.getOrderByElements() != null){ + if (expr.getOrderByElements() != null) { buffer.append(" ORDER BY "); for (Iterator i = expr.getOrderByElements().iterator(); i.hasNext();) { buffer.append(i.next().toString()); @@ -958,9 +981,9 @@ public void visit(JsonAggregateFunction expression) { @Override public void visit(JsonFunction expression) { - expression.append(buffer); + expression.append(buffer); } - + @Override public void visit(ConnectByRootOperator connectByRootOperator) { buffer.append("CONNECT_BY_ROOT "); @@ -970,9 +993,9 @@ public void visit(ConnectByRootOperator connectByRootOperator) { @Override public void visit(OracleNamedFunctionParameter oracleNamedFunctionParameter) { buffer - .append(oracleNamedFunctionParameter.getName()) - .append(" => "); - + .append(oracleNamedFunctionParameter.getName()) + .append(" => "); + oracleNamedFunctionParameter.getExpression().accept(this); } @@ -993,9 +1016,9 @@ public void visit(AllValue allValue) { @Override public void visit(IsDistinctExpression isDistinctExpression) { - buffer.append(isDistinctExpression.getLeftExpression() + - isDistinctExpression.getStringExpression() + - isDistinctExpression.getRightExpression()); + buffer.append(isDistinctExpression.getLeftExpression() + + isDistinctExpression.getStringExpression() + + isDistinctExpression.getRightExpression()); } @Override diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionListDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionListDeParser.java new file mode 100644 index 000000000..0a39e6cdd --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionListDeParser.java @@ -0,0 +1,52 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2019 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.util.deparser; + +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.ExpressionVisitor; + +import java.util.Collection; + +public class ExpressionListDeParser extends AbstractDeParser> { + + private final ExpressionVisitor expressionVisitor; + private final boolean useBrackets; + private final boolean useComma; + + public ExpressionListDeParser(ExpressionVisitor expressionVisitor, StringBuilder builder, boolean useBrackets, boolean useComma) { + super(builder); + this.expressionVisitor = expressionVisitor; + this.useBrackets = useBrackets; + this.useComma = useComma; + } + + @Override + public void deParse(Collection expressions) { + if (expressions != null) { + String comma = useComma ? ", " : " "; + if (useBrackets) { + buffer.append("("); + } + int i=0; + int size = expressions.size() - 1; + for (Expression expression: expressions) { + expression.accept(expressionVisitor); + if (i iter = expressionList.getExpressions().iterator(); iter.hasNext();) { - Expression expression = iter.next(); - expression.accept(expressionVisitor); - if (iter.hasNext()) { - buffer.append(", "); - } - } - buffer.append(")"); + new ExpressionListDeParser(expressionVisitor, buffer, expressionList.isUsingBrackets(), true).deParse(expressionList.getExpressions()); } @Override @@ -165,20 +160,15 @@ public void visit(NamedExpressionList NamedExpressionList) { @Override public void visit(MultiExpressionList multiExprList) { - buffer.append(" VALUES "); - for (Iterator it = multiExprList.getExprList().iterator(); it.hasNext();) { - buffer.append("("); - for (Iterator iter = it.next().getExpressions().iterator(); iter.hasNext();) { - Expression expression = iter.next(); - expression.accept(expressionVisitor); - if (iter.hasNext()) { - buffer.append(", "); - } - } - buffer.append(")"); - if (it.hasNext()) { + List expressionLists = multiExprList.getExpressionLists(); + int n = expressionLists.size() - 1; + int i = 0; + for (ExpressionList expressionList : expressionLists) { + new ExpressionListDeParser(expressionVisitor, buffer, expressionList.isUsingBrackets(), true).deParse(expressionList.getExpressions()); + if (i 1)) + unPivotClause != null && unPivotClause.size() > 1)) .append(" FOR ").append(PlainSelect.getStringList(unpivotForClause, true, - unpivotForClause != null && unpivotForClause.size() > 1)) + unpivotForClause != null && unpivotForClause.size() > 1)) .append(" IN ").append(PlainSelect.getStringList(unpivot.getUnPivotInClause(), true, true)).append(")"); if (unpivot.getAlias() != null) { buffer.append(unpivot.getAlias().toString()); @@ -395,6 +401,10 @@ public void visit(SubJoin subjoin) { @SuppressWarnings({"PMD.CyclomaticComplexity"}) public void deparseJoin(Join join) { + if ( join.isGlobal() ) { + buffer.append(" GLOBAL "); + } + if (join.isSimple() && join.isOuter()) { buffer.append(", OUTER "); } else if (join.isSimple()) { @@ -443,7 +453,7 @@ public void deparseJoin(Join join) { buffer.append(" ON "); onExpression.accept(expressionVisitor); } - if (join.getUsingColumns().size()>0) { + if (join.getUsingColumns().size() > 0) { buffer.append(" USING ("); for (Iterator iterator = join.getUsingColumns().iterator(); iterator.hasNext();) { Column column = iterator.next(); @@ -529,7 +539,32 @@ public void visit(LateralSubSelect lateralSubSelect) { @Override public void visit(ValuesList valuesList) { - buffer.append(valuesList.toString()); + buffer.append("(VALUES "); + List expressionLists = valuesList.getMultiExpressionList().getExpressionLists(); + int n = expressionLists.size() - 1; + int i = 0; + for (ExpressionList expressionList : expressionLists) { + new ExpressionListDeParser(expressionVisitor, buffer, !valuesList.isNoBrackets(), true).deParse(expressionList.getExpressions()); + if (i it = valuesList.getColumnNames().iterator(); it.hasNext();) { + buffer.append(it.next()); + if (it.hasNext()) { + buffer.append(", "); + } + } + buffer.append(")"); + } + } } @Override @@ -546,7 +581,7 @@ public void visit(TableFunction tableFunction) { public void visit(ParenthesisFromItem parenthesis) { buffer.append("("); parenthesis.getFromItem().accept(this); - + buffer.append(")"); if (parenthesis.getAlias() != null) { buffer.append(parenthesis.getAlias().toString()); @@ -571,16 +606,41 @@ void deParse(PlainSelect statement) { @Override public void visit(ExpressionList expressionList) { - buffer.append(expressionList.toString()); + new ExpressionListDeParser(expressionVisitor, buffer, expressionList.isUsingBrackets(), true).deParse(expressionList.getExpressions()); } @Override public void visit(NamedExpressionList namedExpressionList) { buffer.append(namedExpressionList.toString()); + + buffer.append("("); + List expressions = namedExpressionList.getExpressions(); + List names = namedExpressionList.getNames(); + for (int i = 0; i < expressions.size(); i++) { + Expression expression = expressions.get(i); + String name = names.get(i); + if (i > 0) { + buffer.append(" "); + } + if (!name.equals("")) { + buffer.append(name).append(" "); + } + expression.accept(expressionVisitor); + } + buffer.append(")"); } @Override public void visit(MultiExpressionList multiExprList) { - buffer.append(multiExprList.toString()); + List expressionLists = multiExprList.getExpressionLists(); + int n = expressionLists.size() - 1; + int i = 0; + for (ExpressionList expressionList : expressionLists) { + new ExpressionListDeParser(expressionVisitor, buffer, expressionList.isUsingBrackets(), true).deParse(expressionList.getExpressions()); + if (i { + + public ShowIndexStatementDeParser(StringBuilder buffer) { + super(buffer); + } + + @Override + public void deParse(ShowIndexStatement show) { + buffer.append("SHOW INDEX FROM ").append(show.getTableName()); + } + +} \ No newline at end of file diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/StatementDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/StatementDeParser.java index f10651f22..5c5a99cc7 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/StatementDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/StatementDeParser.java @@ -54,6 +54,7 @@ import net.sf.jsqlparser.statement.replace.Replace; import net.sf.jsqlparser.statement.select.Select; import net.sf.jsqlparser.statement.select.WithItem; +import net.sf.jsqlparser.statement.show.ShowIndexStatement; import net.sf.jsqlparser.statement.show.ShowTablesStatement; import net.sf.jsqlparser.statement.truncate.Truncate; import net.sf.jsqlparser.statement.update.Update; @@ -278,6 +279,11 @@ public void visit(UseStatement use) { public void visit(ShowColumnsStatement show) { new ShowColumnsStatementDeParser(buffer).deParse(show); } + + @Override + public void visit(ShowIndexStatement showIndexes) { + new ShowIndexStatementDeParser(buffer).deParse(showIndexes); + } @Override public void visit(ShowTablesStatement showTables) { @@ -294,6 +300,9 @@ public void visit(Block block) { } } buffer.append("END"); + if (block.hasSemicolonAfterEnd()) { + buffer.append(";"); + } } @Override diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/UpsertDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/UpsertDeParser.java index 32311c47b..05e42053e 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/UpsertDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/UpsertDeParser.java @@ -9,8 +9,6 @@ */ package net.sf.jsqlparser.util.deparser; -import java.util.Iterator; - import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.ExpressionVisitor; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; @@ -22,6 +20,10 @@ import net.sf.jsqlparser.statement.select.SubSelect; import net.sf.jsqlparser.statement.select.WithItem; import net.sf.jsqlparser.statement.upsert.Upsert; +import net.sf.jsqlparser.statement.upsert.UpsertType; + +import java.util.Iterator; +import java.util.List; @SuppressWarnings({"PMD.UncommentedEmptyMethodBody"}) public class UpsertDeParser extends AbstractDeParser implements ItemsListVisitor { @@ -36,26 +38,69 @@ public UpsertDeParser(ExpressionVisitor expressionVisitor, SelectVisitor selectV } @Override + @SuppressWarnings({"PMD.CyclomaticComplexity", "PMD.NPathComplexity"}) public void deParse(Upsert upsert) { - buffer.append("UPSERT INTO "); - - buffer.append(upsert.getTable().getFullyQualifiedName()); - if (upsert.getColumns() != null) { - appendColumns(upsert); + switch (upsert.getUpsertType()) { + case REPLACE: + case REPLACE_SET: + buffer.append("REPLACE "); + break; + case INSERT_OR_ABORT: + buffer.append("INSERT OR ABORT "); + break; + case INSERT_OR_FAIL: + buffer.append("INSERT OR FAIL "); + break; + case INSERT_OR_IGNORE: + buffer.append("INSERT OR IGNORE "); + break; + case INSERT_OR_REPLACE: + buffer.append("INSERT OR REPLACE "); + break; + case INSERT_OR_ROLLBACK: + buffer.append("INSERT OR ROLLBACK "); + break; + case UPSERT: + default: + buffer.append("UPSERT "); } - if (upsert.getItemsList() != null) { - upsert.getItemsList().accept(this); + if (upsert.isUsingInto()) { + buffer.append("INTO "); } + buffer.append(upsert.getTable().getFullyQualifiedName()); - if (upsert.getSelect() != null) { - appendSelect(upsert); - } + if (upsert.getUpsertType() == UpsertType.REPLACE_SET) { + appendReplaceSetClause(upsert); + } else { + if (upsert.getColumns() != null) { + appendColumns(upsert); + } + + if (upsert.getItemsList() != null) { + upsert.getItemsList().accept(this); + } + + if (upsert.getSelect() != null) { + appendSelect(upsert); + } - if (upsert.isUseDuplicate()) { - appendDuplicate(upsert); + if (upsert.isUseDuplicate()) { + appendDuplicate(upsert); + } } + } + private void appendReplaceSetClause(Upsert upsert) { + buffer.append(" SET "); + // each element from expressions match up with a column from columns. + List expressions = upsert.getSetExpressions(); + for (int i = 0, s = upsert.getColumns().size(); i < s; i++) { + buffer.append(upsert.getColumns().get(i)).append("=").append(expressions.get(i)); + buffer.append( i < s - 1 + ? ", " + : "" ); + } } private void appendColumns(Upsert upsert) { diff --git a/src/main/java/net/sf/jsqlparser/util/validation/feature/FeaturesAllowed.java b/src/main/java/net/sf/jsqlparser/util/validation/feature/FeaturesAllowed.java index 6ec4c7ba1..04c9a1277 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/feature/FeaturesAllowed.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/feature/FeaturesAllowed.java @@ -110,7 +110,8 @@ public class FeaturesAllowed implements FeatureSetValidation, ModifyableFeatureS * all {@link Feature}' for SQL UPDATE including {@link #SELECT} */ public static final FeaturesAllowed DELETE = new FeaturesAllowed("DELETE", Feature.delete, Feature.deleteJoin, - Feature.deleteLimit, Feature.deleteOrderBy, Feature.deleteTables, Feature.truncate) + Feature.deleteLimit, Feature.deleteOrderBy, Feature.deleteTables, Feature.deleteReturningExpressionList, + Feature.truncate) .add(SELECT).unmodifyable(); /** diff --git a/src/main/java/net/sf/jsqlparser/util/validation/feature/MariaDbVersion.java b/src/main/java/net/sf/jsqlparser/util/validation/feature/MariaDbVersion.java index 6a1cba1a4..185da5664 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/feature/MariaDbVersion.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/feature/MariaDbVersion.java @@ -9,12 +9,12 @@ */ package net.sf.jsqlparser.util.validation.feature; +import net.sf.jsqlparser.parser.feature.Feature; + import java.util.Collections; import java.util.EnumSet; import java.util.Set; -import net.sf.jsqlparser.parser.feature.Feature; - /** * Please add Features supported and place a link to public documentation * @@ -35,7 +35,10 @@ public enum MariaDbVersion implements Version { Feature.selectHaving, Feature.limit, Feature.limitOffset, Feature.offset, Feature.offsetParam, Feature.orderBy, - Feature.selectForUpdate, Feature.selectForUpdateWait, Feature.selectForUpdateNoWait, + Feature.selectForUpdate, + Feature.selectForUpdateWait, + Feature.selectForUpdateNoWait, + Feature.selectForUpdateSkipLocked, // https://mariadb.com/kb/en/join-syntax/ Feature.join, Feature.joinSimple, Feature.joinRight, Feature.joinNatural, Feature.joinLeft, @@ -96,7 +99,7 @@ public enum MariaDbVersion implements Version { Feature.dropViewIfExists, Feature.dropSchemaIfExists, Feature.dropSequenceIfExists, // https://mariadb.com/kb/en/replace/ - Feature.replace, + Feature.upsert, // https://mariadb.com/kb/en/alter/ Feature.alterTable, @@ -130,6 +133,8 @@ public enum MariaDbVersion implements Version { Feature.showTables, // https://mariadb.com/kb/en/show-columns/ Feature.showColumns, + // https://mariadb.com/kb/en/show-index/ + Feature.showIndex, // https://mariadb.com/kb/en/use/ Feature.use, // https://mariadb.com/kb/en/grant/ diff --git a/src/main/java/net/sf/jsqlparser/util/validation/feature/MySqlVersion.java b/src/main/java/net/sf/jsqlparser/util/validation/feature/MySqlVersion.java index c13abaa3e..01bbce4c1 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/feature/MySqlVersion.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/feature/MySqlVersion.java @@ -9,10 +9,11 @@ */ package net.sf.jsqlparser.util.validation.feature; +import net.sf.jsqlparser.parser.feature.Feature; + import java.util.Collections; import java.util.EnumSet; import java.util.Set; -import net.sf.jsqlparser.parser.feature.Feature; /** * Please add Features supported and place a link to public documentation @@ -33,7 +34,10 @@ public enum MySqlVersion implements Version { Feature.select, Feature.selectGroupBy, Feature.selectHaving, Feature.limit, Feature.limitOffset, Feature.offset, Feature.offsetParam, Feature.orderBy, - Feature.selectForUpdate, Feature.selectForUpdateOfTable, Feature.selectForUpdateNoWait, + Feature.selectForUpdate, + Feature.selectForUpdateOfTable, + Feature.selectForUpdateNoWait, + Feature.selectForUpdateSkipLocked, Feature.distinct, Feature.setOperation, @@ -62,7 +66,7 @@ public enum MySqlVersion implements Version { Feature.update, Feature.updateJoins, Feature.updateOrderBy, Feature.updateLimit, // https://dev.mysql.com/doc/refman/8.0/en/replace.html - Feature.replace, + Feature.upsert, // https://dev.mysql.com/doc/refman/8.0/en/delete.html Feature.delete, Feature.deleteJoin, Feature.deleteTables, Feature.deleteLimit, @@ -114,6 +118,8 @@ public enum MySqlVersion implements Version { Feature.showTables, // https://dev.mysql.com/doc/refman/8.0/en/show-columns.html Feature.showColumns, + // https://dev.mysql.com/doc/refman/8.0/en/show-index.html + Feature.showIndex, // https://dev.mysql.com/doc/refman/8.0/en/grant.html Feature.grant, // https://dev.mysql.com/doc/refman/8.0/en/use.html diff --git a/src/main/java/net/sf/jsqlparser/util/validation/feature/OracleVersion.java b/src/main/java/net/sf/jsqlparser/util/validation/feature/OracleVersion.java index 3c970bf65..26d4e678e 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/feature/OracleVersion.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/feature/OracleVersion.java @@ -83,7 +83,9 @@ public enum OracleVersion implements Version { // https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SELECT.html // see "for_update_clause" Feature.selectForUpdate, - Feature.selectForUpdateWait, Feature.selectForUpdateNoWait, + Feature.selectForUpdateWait, + Feature.selectForUpdateNoWait, + Feature.selectForUpdateSkipLocked, // https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/INSERT.html Feature.insert, @@ -100,6 +102,7 @@ public enum OracleVersion implements Version { // https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/DELETE.html Feature.delete, + Feature.deleteReturningExpressionList, // https://www.oracletutorial.com/oracle-basics/oracle-truncate-table/ Feature.truncate, diff --git a/src/main/java/net/sf/jsqlparser/util/validation/feature/PostgresqlVersion.java b/src/main/java/net/sf/jsqlparser/util/validation/feature/PostgresqlVersion.java index 32e62cca7..c5d3d898a 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/feature/PostgresqlVersion.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/feature/PostgresqlVersion.java @@ -76,6 +76,7 @@ public enum PostgresqlVersion implements Version { Feature.selectForUpdate, Feature.selectForUpdateOfTable, Feature.selectForUpdateNoWait, + Feature.selectForUpdateSkipLocked, // https://www.postgresql.org/docs/current/queries-union.html Feature.setOperation, @@ -98,7 +99,7 @@ public enum PostgresqlVersion implements Version { // https://www.postgresql.org/docs/current/sql-createindex.html Feature.createIndex, // https://www.postgresql.org/docs/current/sql-createtable.html - Feature.createTable, Feature.createTableUnlogged, + Feature.createTable, Feature.createTableUnlogged, Feature.createTableCreateOptionStrings, Feature.createTableTableOptionStrings, Feature.createTableFromSelect, Feature.createTableIfNotExists, // https://www.postgresql.org/docs/current/sql-createview.html @@ -111,12 +112,14 @@ public enum PostgresqlVersion implements Version { Feature.insertValues, Feature.values, Feature.insertFromSelect, - Feature.insertReturningAll, Feature.insertReturningExpressionList, + Feature.insertReturningAll, + Feature.insertReturningExpressionList, // https://www.postgresql.org/docs/current/sql-update.html Feature.update, Feature.updateReturning, // https://www.postgresql.org/docs/current/sql-delete.html Feature.delete, + Feature.deleteReturningExpressionList, // https://www.postgresql.org/docs/current/sql-truncate.html Feature.truncate, @@ -150,7 +153,10 @@ public enum PostgresqlVersion implements Version { // https://www.postgresql.org/docs/current/sql-commit.html Feature.commit )), - V11("11", V10.copy().getFeatures()), V12("12", V11.copy().getFeatures()); + V11("11", V10.copy().getFeatures()), + V12("12", V11.copy().getFeatures()), + V13("13", V12.copy().getFeatures()), + V14("14", V13.copy().getFeatures()); private Set features; private String versionString; diff --git a/src/main/java/net/sf/jsqlparser/util/validation/validator/DeleteValidator.java b/src/main/java/net/sf/jsqlparser/util/validation/validator/DeleteValidator.java index 7e07eb546..564278dfe 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/validator/DeleteValidator.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/validator/DeleteValidator.java @@ -28,7 +28,7 @@ public void validate(Delete delete) { validateOptionalFeature(c, delete.getJoins(), Feature.deleteJoin); validateOptionalFeature(c, delete.getLimit(), Feature.deleteLimit); validateOptionalFeature(c, delete.getOrderByElements(), Feature.deleteOrderBy); - validateOptionalFeature(c, delete.getReturningExpressionList(), Feature.insertReturningExpressionList); + validateOptionalFeature(c, delete.getReturningExpressionList(), Feature.deleteReturningExpressionList); } SelectValidator v = getValidator(SelectValidator.class); diff --git a/src/main/java/net/sf/jsqlparser/util/validation/validator/ExpressionValidator.java b/src/main/java/net/sf/jsqlparser/util/validation/validator/ExpressionValidator.java index d517c4b00..35c8c0687 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/validator/ExpressionValidator.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/validator/ExpressionValidator.java @@ -79,6 +79,13 @@ public void visit(Between between) { between.getBetweenExpressionEnd().accept(this); } + @Override + public void visit(OverlapsCondition overlapsCondition) { + validateOptionalExpressionList(overlapsCondition.getLeft()); + validateOptionalExpressionList(overlapsCondition.getRight()); + } + + @Override public void visit(EqualsTo equalsTo) { visitOldOracleJoinBinaryExpression(equalsTo, " = "); @@ -355,6 +362,12 @@ public void visit(TryCastExpression cast) { cast.getLeftExpression().accept(this); } + @Override + public void visit(SafeCastExpression cast) { + cast.getLeftExpression().accept(this); + + } + @Override public void visit(Modulo modulo) { visitBinaryExpression(modulo, " % "); diff --git a/src/main/java/net/sf/jsqlparser/util/validation/validator/ReplaceValidator.java b/src/main/java/net/sf/jsqlparser/util/validation/validator/ReplaceValidator.java index 48904dc14..0c1323339 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/validator/ReplaceValidator.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/validator/ReplaceValidator.java @@ -9,25 +9,10 @@ */ package net.sf.jsqlparser.util.validation.validator; -import net.sf.jsqlparser.parser.feature.Feature; -import net.sf.jsqlparser.statement.replace.Replace; -import net.sf.jsqlparser.util.validation.ValidationCapability; - +@Deprecated /** * @author gitmotte */ -public class ReplaceValidator extends AbstractValidator { - - - @Override - public void validate(Replace replace) { - for (ValidationCapability c : getCapabilities()) { - validateFeature(c, Feature.replace); - } - validateOptionalFromItem(replace.getTable()); - validateOptionalItemsList(replace.getItemsList()); - validateOptionalExpressions(replace.getExpressions()); - validateOptionalExpressions(replace.getColumns()); - } +public class ReplaceValidator extends UpsertValidator { } diff --git a/src/main/java/net/sf/jsqlparser/util/validation/validator/SelectValidator.java b/src/main/java/net/sf/jsqlparser/util/validation/validator/SelectValidator.java index 52e15262d..8c5df9c1b 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/validator/SelectValidator.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/validator/SelectValidator.java @@ -86,6 +86,7 @@ public void visit(PlainSelect plainSelect) { validateOptionalFeature(c, plainSelect.getForUpdateTable(), Feature.selectForUpdateOfTable); validateOptionalFeature(c, plainSelect.getWait(), Feature.selectForUpdateWait); validateFeature(c, plainSelect.isNoWait(), Feature.selectForUpdateNoWait); + validateFeature(c, plainSelect.isSkipLocked(), Feature.selectForUpdateSkipLocked); } validateOptionalFeature(c, plainSelect.getForXmlPath(), Feature.selectForXmlPath); diff --git a/src/main/java/net/sf/jsqlparser/util/validation/validator/ShowIndexStatementValidator.java b/src/main/java/net/sf/jsqlparser/util/validation/validator/ShowIndexStatementValidator.java new file mode 100644 index 000000000..624ee3828 --- /dev/null +++ b/src/main/java/net/sf/jsqlparser/util/validation/validator/ShowIndexStatementValidator.java @@ -0,0 +1,27 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2019 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.util.validation.validator; + +import net.sf.jsqlparser.parser.feature.Feature; +import net.sf.jsqlparser.statement.show.ShowIndexStatement; +import net.sf.jsqlparser.util.validation.metadata.NamedObject; + +/** +* +* @author Jayant Kumar Yadav +*/ + +public class ShowIndexStatementValidator extends AbstractValidator { + + @Override + public void validate(ShowIndexStatement show) { + validateFeatureAndName(Feature.showIndex, NamedObject.table, show.getTableName()); + } +} \ No newline at end of file diff --git a/src/main/java/net/sf/jsqlparser/util/validation/validator/StatementValidator.java b/src/main/java/net/sf/jsqlparser/util/validation/validator/StatementValidator.java index f6cfc121d..895ac2037 100644 --- a/src/main/java/net/sf/jsqlparser/util/validation/validator/StatementValidator.java +++ b/src/main/java/net/sf/jsqlparser/util/validation/validator/StatementValidator.java @@ -53,6 +53,7 @@ import net.sf.jsqlparser.statement.merge.Merge; import net.sf.jsqlparser.statement.replace.Replace; import net.sf.jsqlparser.statement.select.Select; +import net.sf.jsqlparser.statement.show.ShowIndexStatement; import net.sf.jsqlparser.statement.show.ShowTablesStatement; import net.sf.jsqlparser.statement.truncate.Truncate; import net.sf.jsqlparser.statement.update.Update; @@ -182,7 +183,12 @@ public void visit(ShowStatement show) { public void visit(ShowColumnsStatement show) { getValidator(ShowColumnsStatementValidator.class).validate(show); } - + + @Override + public void visit(ShowIndexStatement show) { + getValidator(ShowIndexStatementValidator.class).validate(show); + } + @Override public void visit(ShowTablesStatement showTables) { getValidator(ShowTablesStatementValidator.class).validate(showTables); diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 16cdb9469..fd7a8ada0 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -25,12 +25,16 @@ options { TRACK_TOKENS = true; VISITOR = true; GRAMMAR_ENCODING = "UTF-8"; + KEEP_LINE_COLUMN = true; } PARSER_BEGIN(CCJSqlParser) package net.sf.jsqlparser.parser; +import java.lang.reflect.Field; +import java.lang.Integer; + import net.sf.jsqlparser.parser.feature.*; import net.sf.jsqlparser.expression.*; import net.sf.jsqlparser.expression.operators.arithmetic.*; @@ -120,6 +124,8 @@ SKIP: } +// http://www.h2database.com/html/advanced.html#keywords + TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ { @@ -143,12 +149,14 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | | | | | | +| | | | @@ -157,7 +165,6 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | /* H2 casewhen function */ | -| | | | @@ -182,7 +189,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | -| +| | | | @@ -251,6 +258,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | | | @@ -273,6 +281,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | | | @@ -285,12 +294,6 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | - -/* @todo: - this collides with SELECT 'yelp'::name ... -| -*/ - | | | @@ -320,8 +323,10 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | | +| | | | @@ -342,11 +347,14 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | | | | | +| +| | | | @@ -356,6 +364,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | | | @@ -364,8 +373,6 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | -| -| | | | @@ -375,6 +382,8 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| +| | | | @@ -396,6 +405,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | | | @@ -436,12 +446,13 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */ | | | +| | } -TOKEN : /* Stuff */ +TOKEN : /* Statement Separators */ { - + } TOKEN : /* Operators */ @@ -481,23 +492,76 @@ SPECIAL_TOKEN: TOKEN: { ()*> -| <#LETTER: ["$","A"-"Z","_","#","a"-"z","\u00a2"-"\u00a5","\u00aa","\u00b5","\u00ba","\u00c0"-"\u00d6","\u00d8"-"\u00f6","\u00f8"-"\u021f","\u0222"-"\u0233","\u0250"-"\u02ad","\u02b0"-"\u02b8","\u02bb"-"\u02c1","\u02d0"-"\u02d1","\u02e0"-"\u02e4","\u02ee","\u037a","\u0386","\u0388"-"\u038a","\u038c","\u038e"-"\u03a1","\u03a3"-"\u03ce","\u03d0"-"\u03d7","\u03da"-"\u03f3","\u0400"-"\u0481","\u048c"-"\u04c4","\u04c7"-"\u04c8","\u04cb"-"\u04cc","\u04d0"-"\u04f5","\u04f8"-"\u04f9","\u0531"-"\u0556","\u0559","\u0561"-"\u0587","\u05d0"-"\u05ea","\u05f0"-"\u05f2","\u0621"-"\u063a","\u0640"-"\u064a","\u0671"-"\u06d3","\u06d5","\u06e5"-"\u06e6","\u06fa"-"\u06fc","\u0710","\u0712"-"\u072c","\u0780"-"\u07a5","\u0905"-"\u0939","\u093d","\u0950","\u0958"-"\u0961","\u0985"-"\u098c","\u098f"-"\u0990","\u0993"-"\u09a8","\u09aa"-"\u09b0","\u09b2","\u09b6"-"\u09b9","\u09dc"-"\u09dd","\u09df"-"\u09e1","\u09f0"-"\u09f3","\u0a05"-"\u0a0a","\u0a0f"-"\u0a10","\u0a13"-"\u0a28","\u0a2a"-"\u0a30","\u0a32"-"\u0a33","\u0a35"-"\u0a36","\u0a38"-"\u0a39","\u0a59"-"\u0a5c","\u0a5e","\u0a72"-"\u0a74","\u0a85"-"\u0a8b","\u0a8d","\u0a8f"-"\u0a91","\u0a93"-"\u0aa8","\u0aaa"-"\u0ab0","\u0ab2"-"\u0ab3","\u0ab5"-"\u0ab9","\u0abd","\u0ad0","\u0ae0","\u0b05"-"\u0b0c","\u0b0f"-"\u0b10","\u0b13"-"\u0b28","\u0b2a"-"\u0b30","\u0b32"-"\u0b33","\u0b36"-"\u0b39","\u0b3d","\u0b5c"-"\u0b5d","\u0b5f"-"\u0b61","\u0b85"-"\u0b8a","\u0b8e"-"\u0b90","\u0b92"-"\u0b95","\u0b99"-"\u0b9a","\u0b9c","\u0b9e"-"\u0b9f","\u0ba3"-"\u0ba4","\u0ba8"-"\u0baa","\u0bae"-"\u0bb5","\u0bb7"-"\u0bb9","\u0c05"-"\u0c0c","\u0c0e"-"\u0c10","\u0c12"-"\u0c28","\u0c2a"-"\u0c33","\u0c35"-"\u0c39","\u0c60"-"\u0c61","\u0c85"-"\u0c8c","\u0c8e"-"\u0c90","\u0c92"-"\u0ca8","\u0caa"-"\u0cb3","\u0cb5"-"\u0cb9","\u0cde","\u0ce0"-"\u0ce1","\u0d05"-"\u0d0c","\u0d0e"-"\u0d10","\u0d12"-"\u0d28","\u0d2a"-"\u0d39","\u0d60"-"\u0d61","\u0d85"-"\u0d96","\u0d9a"-"\u0db1","\u0db3"-"\u0dbb","\u0dbd","\u0dc0"-"\u0dc6","\u0e01"-"\u0e30","\u0e32"-"\u0e33","\u0e3f"-"\u0e46","\u0e81"-"\u0e82","\u0e84","\u0e87"-"\u0e88","\u0e8a","\u0e8d","\u0e94"-"\u0e97","\u0e99"-"\u0e9f","\u0ea1"-"\u0ea3","\u0ea5","\u0ea7","\u0eaa"-"\u0eab","\u0ead"-"\u0eb0","\u0eb2"-"\u0eb3","\u0ebd","\u0ec0"-"\u0ec4","\u0ec6","\u0edc"-"\u0edd","\u0f00","\u0f40"-"\u0f47","\u0f49"-"\u0f6a","\u0f88"-"\u0f8b","\u1000"-"\u1021","\u1023"-"\u1027","\u1029"-"\u102a","\u1050"-"\u1055","\u10a0"-"\u10c5","\u10d0"-"\u10f6","\u1100"-"\u1159","\u115f"-"\u11a2","\u11a8"-"\u11f9","\u1200"-"\u1206","\u1208"-"\u1246","\u1248","\u124a"-"\u124d","\u1250"-"\u1256","\u1258","\u125a"-"\u125d","\u1260"-"\u1286","\u1288","\u128a"-"\u128d","\u1290"-"\u12ae","\u12b0","\u12b2"-"\u12b5","\u12b8"-"\u12be","\u12c0","\u12c2"-"\u12c5","\u12c8"-"\u12ce","\u12d0"-"\u12d6","\u12d8"-"\u12ee","\u12f0"-"\u130e","\u1310","\u1312"-"\u1315","\u1318"-"\u131e","\u1320"-"\u1346","\u1348"-"\u135a","\u13a0"-"\u13f4","\u1401"-"\u166c","\u166f"-"\u1676","\u1681"-"\u169a","\u16a0"-"\u16ea","\u1780"-"\u17b3","\u17db","\u1820"-"\u1877","\u1880"-"\u18a8","\u1e00"-"\u1e9b","\u1ea0"-"\u1ef9","\u1f00"-"\u1f15","\u1f18"-"\u1f1d","\u1f20"-"\u1f45","\u1f48"-"\u1f4d","\u1f50"-"\u1f57","\u1f59","\u1f5b","\u1f5d","\u1f5f"-"\u1f7d","\u1f80"-"\u1fb4","\u1fb6"-"\u1fbc","\u1fbe","\u1fc2"-"\u1fc4","\u1fc6"-"\u1fcc","\u1fd0"-"\u1fd3","\u1fd6"-"\u1fdb","\u1fe0"-"\u1fec","\u1ff2"-"\u1ff4","\u1ff6"-"\u1ffc","\u203f"-"\u2040","\u207f","\u20a0"-"\u20af","\u2102","\u2107","\u210a"-"\u2113","\u2115","\u2119"-"\u211d","\u2124","\u2126","\u2128","\u212a"-"\u212d","\u212f"-"\u2131","\u2133"-"\u2139","\u2160"-"\u2183","\u3005"-"\u3007","\u3021"-"\u3029","\u3031"-"\u3035","\u3038"-"\u303a","\u3041"-"\u3094","\u309d"-"\u309e","\u30a1"-"\u30fe","\u3105"-"\u312c","\u3131"-"\u318e","\u31a0"-"\u31b7","\u3400"-"\u4db5","\u4e00"-"\u9fa5","\ua000"-"\ua48c","\uac00"-"\ud7a3","\uf900"-"\ufa2d","\ufb00"-"\ufb06","\ufb13"-"\ufb17","\ufb1d","\ufb1f"-"\ufb28","\ufb2a"-"\ufb36","\ufb38"-"\ufb3c","\ufb3e","\ufb40"-"\ufb41","\ufb43"-"\ufb44","\ufb46"-"\ufbb1","\ufbd3"-"\ufd3d","\ufd50"-"\ufd8f","\ufd92"-"\ufdc7","\ufdf0"-"\ufdfb","\ufe33"-"\ufe34","\ufe4d"-"\ufe4f","\ufe69","\ufe70"-"\ufe72","\ufe74","\ufe76"-"\ufefc","\uff04","\uff21"-"\uff3a","\uff3f","\uff41"-"\uff5a","\uff65"-"\uffbe","\uffc2"-"\uffc7","\uffca"-"\uffcf","\uffd2"-"\uffd7","\uffda"-"\uffdc","\uffe0"-"\uffe1","\uffe5"-"\uffe6"]> -| <#PART_LETTER: ["\u0000"-"\b","\u000e"-"\u001b","$","#","@","0"-"9","A"-"Z","_","a"-"z","\u007f"-"\u009f","\u00a2"-"\u00a5","\u00aa","\u00b5","\u00ba","\u00c0"-"\u00d6","\u00d8"-"\u00f6","\u00f8"-"\u021f","\u0222"-"\u0233","\u0250"-"\u02ad","\u02b0"-"\u02b8","\u02bb"-"\u02c1","\u02d0"-"\u02d1","\u02e0"-"\u02e4","\u02ee","\u0300"-"\u034e","\u0360"-"\u0362","\u037a","\u0386","\u0388"-"\u038a","\u038c","\u038e"-"\u03a1","\u03a3"-"\u03ce","\u03d0"-"\u03d7","\u03da"-"\u03f3","\u0400"-"\u0481","\u0483"-"\u0486","\u048c"-"\u04c4","\u04c7"-"\u04c8","\u04cb"-"\u04cc","\u04d0"-"\u04f5","\u04f8"-"\u04f9","\u0531"-"\u0556","\u0559","\u0561"-"\u0587","\u0591"-"\u05a1","\u05a3"-"\u05b9","\u05bb"-"\u05bd","\u05bf","\u05c1"-"\u05c2","\u05c4","\u05d0"-"\u05ea","\u05f0"-"\u05f2","\u0621"-"\u063a","\u0640"-"\u0655","\u0660"-"\u0669","\u0670"-"\u06d3","\u06d5"-"\u06dc","\u06df"-"\u06e8","\u06ea"-"\u06ed","\u06f0"-"\u06fc","\u070f"-"\u072c","\u0730"-"\u074a","\u0780"-"\u07b0","\u0901"-"\u0903","\u0905"-"\u0939","\u093c"-"\u094d","\u0950"-"\u0954","\u0958"-"\u0963","\u0966"-"\u096f","\u0981"-"\u0983","\u0985"-"\u098c","\u098f"-"\u0990","\u0993"-"\u09a8","\u09aa"-"\u09b0","\u09b2","\u09b6"-"\u09b9","\u09bc","\u09be"-"\u09c4","\u09c7"-"\u09c8","\u09cb"-"\u09cd","\u09d7","\u09dc"-"\u09dd","\u09df"-"\u09e3","\u09e6"-"\u09f3","\u0a02","\u0a05"-"\u0a0a","\u0a0f"-"\u0a10","\u0a13"-"\u0a28","\u0a2a"-"\u0a30","\u0a32"-"\u0a33","\u0a35"-"\u0a36","\u0a38"-"\u0a39","\u0a3c","\u0a3e"-"\u0a42","\u0a47"-"\u0a48","\u0a4b"-"\u0a4d","\u0a59"-"\u0a5c","\u0a5e","\u0a66"-"\u0a74","\u0a81"-"\u0a83","\u0a85"-"\u0a8b","\u0a8d","\u0a8f"-"\u0a91","\u0a93"-"\u0aa8","\u0aaa"-"\u0ab0","\u0ab2"-"\u0ab3","\u0ab5"-"\u0ab9","\u0abc"-"\u0ac5","\u0ac7"-"\u0ac9","\u0acb"-"\u0acd","\u0ad0","\u0ae0","\u0ae6"-"\u0aef","\u0b01"-"\u0b03","\u0b05"-"\u0b0c","\u0b0f"-"\u0b10","\u0b13"-"\u0b28","\u0b2a"-"\u0b30","\u0b32"-"\u0b33","\u0b36"-"\u0b39","\u0b3c"-"\u0b43","\u0b47"-"\u0b48","\u0b4b"-"\u0b4d","\u0b56"-"\u0b57","\u0b5c"-"\u0b5d","\u0b5f"-"\u0b61","\u0b66"-"\u0b6f","\u0b82"-"\u0b83","\u0b85"-"\u0b8a","\u0b8e"-"\u0b90","\u0b92"-"\u0b95","\u0b99"-"\u0b9a","\u0b9c","\u0b9e"-"\u0b9f","\u0ba3"-"\u0ba4","\u0ba8"-"\u0baa","\u0bae"-"\u0bb5","\u0bb7"-"\u0bb9","\u0bbe"-"\u0bc2","\u0bc6"-"\u0bc8","\u0bca"-"\u0bcd","\u0bd7","\u0be7"-"\u0bef","\u0c01"-"\u0c03","\u0c05"-"\u0c0c","\u0c0e"-"\u0c10","\u0c12"-"\u0c28","\u0c2a"-"\u0c33","\u0c35"-"\u0c39","\u0c3e"-"\u0c44","\u0c46"-"\u0c48","\u0c4a"-"\u0c4d","\u0c55"-"\u0c56","\u0c60"-"\u0c61","\u0c66"-"\u0c6f","\u0c82"-"\u0c83","\u0c85"-"\u0c8c","\u0c8e"-"\u0c90","\u0c92"-"\u0ca8","\u0caa"-"\u0cb3","\u0cb5"-"\u0cb9","\u0cbe"-"\u0cc4","\u0cc6"-"\u0cc8","\u0cca"-"\u0ccd","\u0cd5"-"\u0cd6","\u0cde","\u0ce0"-"\u0ce1","\u0ce6"-"\u0cef","\u0d02"-"\u0d03","\u0d05"-"\u0d0c","\u0d0e"-"\u0d10","\u0d12"-"\u0d28","\u0d2a"-"\u0d39","\u0d3e"-"\u0d43","\u0d46"-"\u0d48","\u0d4a"-"\u0d4d","\u0d57","\u0d60"-"\u0d61","\u0d66"-"\u0d6f","\u0d82"-"\u0d83","\u0d85"-"\u0d96","\u0d9a"-"\u0db1","\u0db3"-"\u0dbb","\u0dbd","\u0dc0"-"\u0dc6","\u0dca","\u0dcf"-"\u0dd4","\u0dd6","\u0dd8"-"\u0ddf","\u0df2"-"\u0df3","\u0e01"-"\u0e3a","\u0e3f"-"\u0e4e","\u0e50"-"\u0e59","\u0e81"-"\u0e82","\u0e84","\u0e87"-"\u0e88","\u0e8a","\u0e8d","\u0e94"-"\u0e97","\u0e99"-"\u0e9f","\u0ea1"-"\u0ea3","\u0ea5","\u0ea7","\u0eaa"-"\u0eab","\u0ead"-"\u0eb9","\u0ebb"-"\u0ebd","\u0ec0"-"\u0ec4","\u0ec6","\u0ec8"-"\u0ecd","\u0ed0"-"\u0ed9","\u0edc"-"\u0edd","\u0f00","\u0f18"-"\u0f19","\u0f20"-"\u0f29","\u0f35","\u0f37","\u0f39","\u0f3e"-"\u0f47","\u0f49"-"\u0f6a","\u0f71"-"\u0f84","\u0f86"-"\u0f8b","\u0f90"-"\u0f97","\u0f99"-"\u0fbc","\u0fc6","\u1000"-"\u1021","\u1023"-"\u1027","\u1029"-"\u102a","\u102c"-"\u1032","\u1036"-"\u1039","\u1040"-"\u1049","\u1050"-"\u1059","\u10a0"-"\u10c5","\u10d0"-"\u10f6","\u1100"-"\u1159","\u115f"-"\u11a2","\u11a8"-"\u11f9","\u1200"-"\u1206","\u1208"-"\u1246","\u1248","\u124a"-"\u124d","\u1250"-"\u1256","\u1258","\u125a"-"\u125d","\u1260"-"\u1286","\u1288","\u128a"-"\u128d","\u1290"-"\u12ae","\u12b0","\u12b2"-"\u12b5","\u12b8"-"\u12be","\u12c0","\u12c2"-"\u12c5","\u12c8"-"\u12ce","\u12d0"-"\u12d6","\u12d8"-"\u12ee","\u12f0"-"\u130e","\u1310","\u1312"-"\u1315","\u1318"-"\u131e","\u1320"-"\u1346","\u1348"-"\u135a","\u1369"-"\u1371","\u13a0"-"\u13f4","\u1401"-"\u166c","\u166f"-"\u1676","\u1681"-"\u169a","\u16a0"-"\u16ea","\u1780"-"\u17d3","\u17db","\u17e0"-"\u17e9","\u180b"-"\u180e","\u1810"-"\u1819","\u1820"-"\u1877","\u1880"-"\u18a9","\u1e00"-"\u1e9b","\u1ea0"-"\u1ef9","\u1f00"-"\u1f15","\u1f18"-"\u1f1d","\u1f20"-"\u1f45","\u1f48"-"\u1f4d","\u1f50"-"\u1f57","\u1f59","\u1f5b","\u1f5d","\u1f5f"-"\u1f7d","\u1f80"-"\u1fb4","\u1fb6"-"\u1fbc","\u1fbe","\u1fc2"-"\u1fc4","\u1fc6"-"\u1fcc","\u1fd0"-"\u1fd3","\u1fd6"-"\u1fdb","\u1fe0"-"\u1fec","\u1ff2"-"\u1ff4","\u1ff6"-"\u1ffc","\u200c"-"\u200f","\u202a"-"\u202e","\u203f"-"\u2040","\u206a"-"\u206f","\u207f","\u20a0"-"\u20af","\u20d0"-"\u20dc","\u20e1","\u2102","\u2107","\u210a"-"\u2113","\u2115","\u2119"-"\u211d","\u2124","\u2126","\u2128","\u212a"-"\u212d","\u212f"-"\u2131","\u2133"-"\u2139","\u2160"-"\u2183","\u3005"-"\u3007","\u3021"-"\u302f","\u3031"-"\u3035","\u3038"-"\u303a","\u3041"-"\u3094","\u3099"-"\u309a","\u309d"-"\u309e","\u30a1"-"\u30fe","\u3105"-"\u312c","\u3131"-"\u318e","\u31a0"-"\u31b7","\u3400"-"\u4db5","\u4e00"-"\u9fa5","\ua000"-"\ua48c","\uac00"-"\ud7a3","\uf900"-"\ufa2d","\ufb00"-"\ufb06","\ufb13"-"\ufb17","\ufb1d"-"\ufb28","\ufb2a"-"\ufb36","\ufb38"-"\ufb3c","\ufb3e","\ufb40"-"\ufb41","\ufb43"-"\ufb44","\ufb46"-"\ufbb1","\ufbd3"-"\ufd3d","\ufd50"-"\ufd8f","\ufd92"-"\ufdc7","\ufdf0"-"\ufdfb","\ufe20"-"\ufe23","\ufe33"-"\ufe34","\ufe4d"-"\ufe4f","\ufe69","\ufe70"-"\ufe72","\ufe74","\ufe76"-"\ufefc","\ufeff","\uff04","\uff10"-"\uff19","\uff21"-"\uff3a","\uff3f","\uff41"-"\uff5a","\uff65"-"\uffbe","\uffc2"-"\uffc7","\uffca"-"\uffcf","\uffd2"-"\uffd7","\uffda"-"\uffdc","\uffe0"-"\uffe1","\uffe5"-"\uffe6","\ufff9"-"\ufffb"]> -| < S_CHAR_LITERAL: (["U","E","N","R","B"]|"RB"|"_utf8")? (("'" ( | ~["'", "\\", "\n", "\r"] )* "'") | ("'" ("''" | ~["'"])* "'")) > -| < S_QUOTED_IDENTIFIER: "\"" (~["\n","\r","\""])* "\"" | "$$" (~["\n","\r","\""])* "$$" | ("`" (~["\n","\r","`"])+ "`") | ( "[" (~["\n","\r","]"])* "]" ) > - { if ( !configuration.getAsBoolean(Feature.allowSquareBracketQuotation) && matchedToken.image.charAt(0) == '[' ) { - matchedToken.image = "["; - for (int i=0;i + | | [ "$" , "#", "_" ] // Not SQL:2016 compliant! + > +| <#PART_LETTER: | | [ "$" , "#", "_" , "@" ] > + +// Unicode characters and categories are defined here: https://www.unicode.org/Public/UNIDATA/UnicodeData.txt +// SQL:2016 states: +// An is any character in the Unicode General Category classes “Lu”, “Ll”, “Lt”, “Lm”, “Lo”, or “Nl”. +// An is U+00B7, “Middle Dot”, or any character in the Unicode General Category classes “Mn”, “Mc”, “Nd”, “Pc”, or “Cf”. + +// unicode_identifier_start +| <#UnicodeIdentifierStart: ("\u00B7" | | | | | | ) > +| <#Ll: ["a"-"z","µ","ß"-"ö","ø"-"ÿ","ā","ă","ą","ć","ĉ","ċ","č","ď","đ","ē","ĕ","ė","ę","ě","ĝ","ğ","ġ","ģ","ĥ","ħ","ĩ","ī","ĭ","į","ı","ij","ĵ","ķ"-"ĸ","ĺ","ļ","ľ","ŀ","ł","ń","ņ","ň"-"ʼn","ŋ","ō","ŏ","ő","œ","ŕ","ŗ","ř","ś","ŝ","ş","š","ţ","ť","ŧ","ũ","ū","ŭ","ů","ű","ų","ŵ","ŷ","ź","ż","ž"-"ƀ","ƃ","ƅ","ƈ","ƌ"-"ƍ","ƒ","ƕ","ƙ"-"ƛ","ƞ","ơ","ƣ","ƥ","ƨ","ƪ"-"ƫ","ƭ","ư","ƴ","ƶ","ƹ"-"ƺ","ƽ"-"ƿ","dž","lj","nj","ǎ","ǐ","ǒ","ǔ","ǖ","ǘ","ǚ","ǜ"-"ǝ","ǟ","ǡ","ǣ","ǥ","ǧ","ǩ","ǫ","ǭ","ǯ"-"ǰ","dz","ǵ","ǹ","ǻ","ǽ","ǿ","ȁ","ȃ","ȅ","ȇ","ȉ","ȋ","ȍ","ȏ","ȑ","ȓ","ȕ","ȗ","ș","ț","ȝ","ȟ","ȡ","ȣ","ȥ","ȧ","ȩ","ȫ","ȭ","ȯ","ȱ","ȳ"-"ȹ","ȼ","ȿ"-"ɀ","ɂ","ɇ","ɉ","ɋ","ɍ","ɏ"-"ʓ","ʕ"-"ʯ","ͱ","ͳ","ͷ","ͻ"-"ͽ","ΐ","ά"-"ώ","ϐ"-"ϑ","ϕ"-"ϗ","ϙ","ϛ","ϝ","ϟ","ϡ","ϣ","ϥ","ϧ","ϩ","ϫ","ϭ","ϯ"-"ϳ","ϵ","ϸ","ϻ"-"ϼ","а"-"џ","ѡ","ѣ","ѥ","ѧ","ѩ","ѫ","ѭ","ѯ","ѱ","ѳ","ѵ","ѷ","ѹ","ѻ","ѽ","ѿ","ҁ","ҋ","ҍ","ҏ","ґ","ғ","ҕ","җ","ҙ","қ","ҝ","ҟ","ҡ","ң","ҥ","ҧ","ҩ","ҫ","ҭ","ү","ұ","ҳ","ҵ","ҷ","ҹ","һ","ҽ","ҿ","ӂ","ӄ","ӆ","ӈ","ӊ","ӌ","ӎ"-"ӏ","ӑ","ӓ","ӕ","ӗ","ә","ӛ","ӝ","ӟ","ӡ","ӣ","ӥ","ӧ","ө","ӫ","ӭ","ӯ","ӱ","ӳ","ӵ","ӷ","ӹ","ӻ","ӽ","ӿ","ԁ","ԃ","ԅ","ԇ","ԉ","ԋ","ԍ","ԏ","ԑ","ԓ","ԕ","ԗ","ԙ","ԛ","ԝ","ԟ","ԡ","ԣ","ԥ","ԧ","ԩ","ԫ","ԭ","ԯ","ՠ"-"ֈ","ა"-"ჺ","ჽ"-"ჿ","ᏸ"-"ᏽ","ᲀ"-"ᲈ","ᴀ"-"ᴫ","ᵫ"-"ᵷ","ᵹ"-"ᶚ","ḁ","ḃ","ḅ","ḇ","ḉ","ḋ","ḍ","ḏ","ḑ","ḓ","ḕ","ḗ","ḙ","ḛ","ḝ","ḟ","ḡ","ḣ","ḥ","ḧ","ḩ","ḫ","ḭ","ḯ","ḱ","ḳ","ḵ","ḷ","ḹ","ḻ","ḽ","ḿ","ṁ","ṃ","ṅ","ṇ","ṉ","ṋ","ṍ","ṏ","ṑ","ṓ","ṕ","ṗ","ṙ","ṛ","ṝ","ṟ","ṡ","ṣ","ṥ","ṧ","ṩ","ṫ","ṭ","ṯ","ṱ","ṳ","ṵ","ṷ","ṹ","ṻ","ṽ","ṿ","ẁ","ẃ","ẅ","ẇ","ẉ","ẋ","ẍ","ẏ","ẑ","ẓ","ẕ"-"ẝ","ẟ","ạ","ả","ấ","ầ","ẩ","ẫ","ậ","ắ","ằ","ẳ","ẵ","ặ","ẹ","ẻ","ẽ","ế","ề","ể","ễ","ệ","ỉ","ị","ọ","ỏ","ố","ồ","ổ","ỗ","ộ","ớ","ờ","ở","ỡ","ợ","ụ","ủ","ứ","ừ","ử","ữ","ự","ỳ","ỵ","ỷ","ỹ","ỻ","ỽ","ỿ"-"ἇ","ἐ"-"ἕ","ἠ"-"ἧ","ἰ"-"ἷ","ὀ"-"ὅ","ὐ"-"ὗ","ὠ"-"ὧ","ὰ"-"ώ","ᾀ"-"ᾇ","ᾐ"-"ᾗ","ᾠ"-"ᾧ","ᾰ"-"ᾴ","ᾶ"-"ᾷ","ι","ῂ"-"ῄ","ῆ"-"ῇ","ῐ"-"ΐ","ῖ"-"ῗ","ῠ"-"ῧ","ῲ"-"ῴ","ῶ"-"ῷ","ℊ","ℎ"-"ℏ","ℓ","ℯ","ℴ","ℹ","ℼ"-"ℽ","ⅆ"-"ⅉ","ⅎ","ↄ","ⰰ"-"ⱟ","ⱡ","ⱥ"-"ⱦ","ⱨ","ⱪ","ⱬ","ⱱ","ⱳ"-"ⱴ","ⱶ"-"ⱻ","ⲁ","ⲃ","ⲅ","ⲇ","ⲉ","ⲋ","ⲍ","ⲏ","ⲑ","ⲓ","ⲕ","ⲗ","ⲙ","ⲛ","ⲝ","ⲟ","ⲡ","ⲣ","ⲥ","ⲧ","ⲩ","ⲫ","ⲭ","ⲯ","ⲱ","ⲳ","ⲵ","ⲷ","ⲹ","ⲻ","ⲽ","ⲿ","ⳁ","ⳃ","ⳅ","ⳇ","ⳉ","ⳋ","ⳍ","ⳏ","ⳑ","ⳓ","ⳕ","ⳗ","ⳙ","ⳛ","ⳝ","ⳟ","ⳡ","ⳣ"-"ⳤ","ⳬ","ⳮ","ⳳ","ⴀ"-"ⴥ","ⴧ","ⴭ","ꙁ","ꙃ","ꙅ","ꙇ","ꙉ","ꙋ","ꙍ","ꙏ","ꙑ","ꙓ","ꙕ","ꙗ","ꙙ","ꙛ","ꙝ","ꙟ","ꙡ","ꙣ","ꙥ","ꙧ","ꙩ","ꙫ","ꙭ","ꚁ","ꚃ","ꚅ","ꚇ","ꚉ","ꚋ","ꚍ","ꚏ","ꚑ","ꚓ","ꚕ","ꚗ","ꚙ","ꚛ","ꜣ","ꜥ","ꜧ","ꜩ","ꜫ","ꜭ","ꜯ"-"ꜱ","ꜳ","ꜵ","ꜷ","ꜹ","ꜻ","ꜽ","ꜿ","ꝁ","ꝃ","ꝅ","ꝇ","ꝉ","ꝋ","ꝍ","ꝏ","ꝑ","ꝓ","ꝕ","ꝗ","ꝙ","ꝛ","ꝝ","ꝟ","ꝡ","ꝣ","ꝥ","ꝧ","ꝩ","ꝫ","ꝭ","ꝯ","ꝱ"-"ꝸ","ꝺ","ꝼ","ꝿ","ꞁ","ꞃ","ꞅ","ꞇ","ꞌ","ꞎ","ꞑ","ꞓ"-"ꞕ","ꞗ","ꞙ","ꞛ","ꞝ","ꞟ","ꞡ","ꞣ","ꞥ","ꞧ","ꞩ","ꞯ","ꞵ","ꞷ","ꞹ","ꞻ","ꞽ","ꞿ","ꟁ","ꟃ","ꟈ","ꟊ","ꟑ","ꟓ","ꟕ","ꟗ","ꟙ","ꟶ","ꟺ","ꬰ"-"ꭚ","ꭠ"-"ꭨ","ꭰ"-"ꮿ","ff"-"st","ﬓ"-"ﬗ","a"-"z"]> +| <#Lm: ["ʰ"-"ˁ","ˆ"-"ˑ","ˠ"-"ˤ","ˬ","ˮ","ʹ","ͺ","ՙ","ـ","ۥ"-"ۦ","ߴ"-"ߵ","ߺ","ࠚ","ࠤ","ࠨ","ࣉ","ॱ","ๆ","ໆ","ჼ","ៗ","ᡃ","ᪧ","ᱸ"-"ᱽ","ᴬ"-"ᵪ","ᵸ","ᶛ"-"ᶿ","ⁱ","ⁿ","ₐ"-"ₜ","ⱼ"-"ⱽ","ⵯ","ⸯ","々","〱"-"〵","〻","ゝ"-"ゞ","ー"-"ヾ","ꀕ","ꓸ"-"ꓽ","ꘌ","ꙿ","ꚜ"-"ꚝ","ꜗ"-"ꜟ","ꝰ","ꞈ","ꟲ"-"ꟴ","ꟸ"-"ꟹ","ꧏ","ꧦ","ꩰ","ꫝ","ꫳ"-"ꫴ","ꭜ"-"ꭟ","ꭩ","ー","゙"-"゚"]> +| <#Lo: ["ª","º","ƻ","ǀ"-"ǃ","ʔ","א"-"ת","ׯ"-"ײ","ؠ"-"ؿ","ف"-"ي","ٮ"-"ٯ","ٱ"-"ۓ","ە","ۮ"-"ۯ","ۺ"-"ۼ","ۿ","ܐ","ܒ"-"ܯ","ݍ"-"ޥ","ޱ","ߊ"-"ߪ","ࠀ"-"ࠕ","ࡀ"-"ࡘ","ࡠ"-"ࡪ","ࡰ"-"ࢇ","ࢉ"-"ࢎ","ࢠ"-"ࣈ","ऄ"-"ह","ऽ","ॐ","क़"-"ॡ","ॲ"-"ঀ","অ"-"ঌ","এ"-"ঐ","ও"-"ন","প"-"র","ল","শ"-"হ","ঽ","ৎ","ড়"-"ঢ়","য়"-"ৡ","ৰ"-"ৱ","ৼ","ਅ"-"ਊ","ਏ"-"ਐ","ਓ"-"ਨ","ਪ"-"ਰ","ਲ"-"ਲ਼","ਵ"-"ਸ਼","ਸ"-"ਹ","ਖ਼"-"ੜ","ਫ਼","ੲ"-"ੴ","અ"-"ઍ","એ"-"ઑ","ઓ"-"ન","પ"-"ર","લ"-"ળ","વ"-"હ","ઽ","ૐ","ૠ"-"ૡ","ૹ","ଅ"-"ଌ","ଏ"-"ଐ","ଓ"-"ନ","ପ"-"ର","ଲ"-"ଳ","ଵ"-"ହ","ଽ","ଡ଼"-"ଢ଼","ୟ"-"ୡ","ୱ","ஃ","அ"-"ஊ","எ"-"ஐ","ஒ"-"க","ங"-"ச","ஜ","ஞ"-"ட","ண"-"த","ந"-"ப","ம"-"ஹ","ௐ","అ"-"ఌ","ఎ"-"ఐ","ఒ"-"న","ప"-"హ","ఽ","ౘ"-"ౚ","ౝ","ౠ"-"ౡ","ಀ","ಅ"-"ಌ","ಎ"-"ಐ","ಒ"-"ನ","ಪ"-"ಳ","ವ"-"ಹ","ಽ","ೝ"-"ೞ","ೠ"-"ೡ","ೱ"-"ೲ","ഄ"-"ഌ","എ"-"ഐ","ഒ"-"ഺ","ഽ","ൎ","ൔ"-"ൖ","ൟ"-"ൡ","ൺ"-"ൿ","අ"-"ඖ","ක"-"න","ඳ"-"ර","ල","ව"-"ෆ","ก"-"ะ","า"-"ำ","เ"-"ๅ","ກ"-"ຂ","ຄ","ຆ"-"ຊ","ຌ"-"ຣ","ລ","ວ"-"ະ","າ"-"ຳ","ຽ","ເ"-"ໄ","ໜ"-"ໟ","ༀ","ཀ"-"ཇ","ཉ"-"ཬ","ྈ"-"ྌ","က"-"ဪ","ဿ","ၐ"-"ၕ","ၚ"-"ၝ","ၡ","ၥ"-"ၦ","ၮ"-"ၰ","ၵ"-"ႁ","ႎ","ᄀ"-"ቈ","ቊ"-"ቍ","ቐ"-"ቖ","ቘ","ቚ"-"ቝ","በ"-"ኈ","ኊ"-"ኍ","ነ"-"ኰ","ኲ"-"ኵ","ኸ"-"ኾ","ዀ","ዂ"-"ዅ","ወ"-"ዖ","ዘ"-"ጐ","ጒ"-"ጕ","ጘ"-"ፚ","ᎀ"-"ᎏ","ᐁ"-"ᙬ","ᙯ"-"ᙿ","ᚁ"-"ᚚ","ᚠ"-"ᛪ","ᛱ"-"ᛸ","ᜀ"-"ᜑ","ᜟ"-"ᜱ","ᝀ"-"ᝑ","ᝠ"-"ᝬ","ᝮ"-"ᝰ","ក"-"ឳ","ៜ","ᠠ"-"ᡂ","ᡄ"-"ᡸ","ᢀ"-"ᢄ","ᢇ"-"ᢨ","ᢪ","ᢰ"-"ᣵ","ᤀ"-"ᤞ","ᥐ"-"ᥭ","ᥰ"-"ᥴ","ᦀ"-"ᦫ","ᦰ"-"ᧉ","ᨀ"-"ᨖ","ᨠ"-"ᩔ","ᬅ"-"ᬳ","ᭅ"-"ᭌ","ᮃ"-"ᮠ","ᮮ"-"ᮯ","ᮺ"-"ᯥ","ᰀ"-"ᰣ","ᱍ"-"ᱏ","ᱚ"-"ᱷ","ᳩ"-"ᳬ","ᳮ"-"ᳳ","ᳵ"-"ᳶ","ᳺ","ℵ"-"ℸ","ⴰ"-"ⵧ","ⶀ"-"ⶖ","ⶠ"-"ⶦ","ⶨ"-"ⶮ","ⶰ"-"ⶶ","ⶸ"-"ⶾ","ⷀ"-"ⷆ","ⷈ"-"ⷎ","ⷐ"-"ⷖ","ⷘ"-"ⷞ","〆","〼","ぁ"-"ゖ","ゟ","ァ"-"ヺ","ヿ","ㄅ"-"ㄯ","ㄱ"-"ㆎ","ㆠ"-"ㆿ","ㇰ"-"ㇿ","䶿","鿿"-"ꀔ","ꀖ"-"ꒌ","ꓐ"-"ꓷ","ꔀ"-"ꘋ","ꘐ"-"ꘟ","ꘪ"-"ꘫ","ꙮ","ꚠ"-"ꛥ","ꞏ","ꟷ","ꟻ"-"ꠁ","ꠃ"-"ꠅ","ꠇ"-"ꠊ","ꠌ"-"ꠢ","ꡀ"-"ꡳ","ꢂ"-"ꢳ","ꣲ"-"ꣷ","ꣻ","ꣽ"-"ꣾ","ꤊ"-"ꤥ","ꤰ"-"ꥆ","ꥠ"-"ꥼ","ꦄ"-"ꦲ","ꧠ"-"ꧤ","ꧧ"-"ꧯ","ꧺ"-"ꧾ","ꨀ"-"ꨨ","ꩀ"-"ꩂ","ꩄ"-"ꩋ","ꩠ"-"ꩯ","ꩱ"-"ꩶ","ꩺ","ꩾ"-"ꪯ","ꪱ","ꪵ"-"ꪶ","ꪹ"-"ꪽ","ꫀ","ꫂ","ꫛ"-"ꫜ","ꫠ"-"ꫪ","ꫲ","ꬁ"-"ꬆ","ꬉ"-"ꬎ","ꬑ"-"ꬖ","ꬠ"-"ꬦ","ꬨ"-"ꬮ","ꯀ"-"ꯢ","힣","ힰ"-"ퟆ","ퟋ"-"ퟻ","豈"-"舘","並"-"龎","יִ","ײַ"-"ﬨ","שׁ"-"זּ","טּ"-"לּ","מּ","נּ"-"סּ","ףּ"-"פּ","צּ"-"ﮱ","ﯓ"-"ﴽ","ﵐ"-"ﶏ","ﶒ"-"ﷇ","ﷰ"-"ﷻ","ﹰ"-"ﹴ","ﹶ"-"ﻼ","ヲ"-"ッ","ア"-"ン","ᅠ"-"ᄒ","ᅡ"-"ᅦ","ᅧ"-"ᅬ","ᅭ"-"ᅲ","ᅳ"-"ᅵ"]> +| <#Lt: ["Dž","Lj","Nj","Dz","ᾈ"-"ᾏ","ᾘ"-"ᾟ","ᾨ"-"ᾯ","ᾼ","ῌ","ῼ"]> +| <#Lu: ["A"-"Z","À"-"Ö","Ø"-"Þ","Ā","Ă","Ą","Ć","Ĉ","Ċ","Č","Ď","Đ","Ē","Ĕ","Ė","Ę","Ě","Ĝ","Ğ","Ġ","Ģ","Ĥ","Ħ","Ĩ","Ī","Ĭ","Į","İ","IJ","Ĵ","Ķ","Ĺ","Ļ","Ľ","Ŀ","Ł","Ń","Ņ","Ň","Ŋ","Ō","Ŏ","Ő","Œ","Ŕ","Ŗ","Ř","Ś","Ŝ","Ş","Š","Ţ","Ť","Ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","Ŵ","Ŷ","Ÿ"-"Ź","Ż","Ž","Ɓ"-"Ƃ","Ƅ","Ɔ"-"Ƈ","Ɖ"-"Ƌ","Ǝ"-"Ƒ","Ɠ"-"Ɣ","Ɩ"-"Ƙ","Ɯ"-"Ɲ","Ɵ"-"Ơ","Ƣ","Ƥ","Ʀ"-"Ƨ","Ʃ","Ƭ","Ʈ"-"Ư","Ʊ"-"Ƴ","Ƶ","Ʒ"-"Ƹ","Ƽ","DŽ","LJ","NJ","Ǎ","Ǐ","Ǒ","Ǔ","Ǖ","Ǘ","Ǚ","Ǜ","Ǟ","Ǡ","Ǣ","Ǥ","Ǧ","Ǩ","Ǫ","Ǭ","Ǯ","DZ","Ǵ","Ƕ"-"Ǹ","Ǻ","Ǽ","Ǿ","Ȁ","Ȃ","Ȅ","Ȇ","Ȉ","Ȋ","Ȍ","Ȏ","Ȑ","Ȓ","Ȕ","Ȗ","Ș","Ț","Ȝ","Ȟ","Ƞ","Ȣ","Ȥ","Ȧ","Ȩ","Ȫ","Ȭ","Ȯ","Ȱ","Ȳ","Ⱥ"-"Ȼ","Ƚ"-"Ⱦ","Ɂ","Ƀ"-"Ɇ","Ɉ","Ɋ","Ɍ","Ɏ","Ͱ","Ͳ","Ͷ","Ϳ","Ά","Έ"-"Ί","Ό","Ύ"-"Ώ","Α"-"Ρ","Σ"-"Ϋ","Ϗ","ϒ"-"ϔ","Ϙ","Ϛ","Ϝ","Ϟ","Ϡ","Ϣ","Ϥ","Ϧ","Ϩ","Ϫ","Ϭ","Ϯ","ϴ","Ϸ","Ϲ"-"Ϻ","Ͻ"-"Я","Ѡ","Ѣ","Ѥ","Ѧ","Ѩ","Ѫ","Ѭ","Ѯ","Ѱ","Ѳ","Ѵ","Ѷ","Ѹ","Ѻ","Ѽ","Ѿ","Ҁ","Ҋ","Ҍ","Ҏ","Ґ","Ғ","Ҕ","Җ","Ҙ","Қ","Ҝ","Ҟ","Ҡ","Ң","Ҥ","Ҧ","Ҩ","Ҫ","Ҭ","Ү","Ұ","Ҳ","Ҵ","Ҷ","Ҹ","Һ","Ҽ","Ҿ","Ӏ"-"Ӂ","Ӄ","Ӆ","Ӈ","Ӊ","Ӌ","Ӎ","Ӑ","Ӓ","Ӕ","Ӗ","Ә","Ӛ","Ӝ","Ӟ","Ӡ","Ӣ","Ӥ","Ӧ","Ө","Ӫ","Ӭ","Ӯ","Ӱ","Ӳ","Ӵ","Ӷ","Ӹ","Ӻ","Ӽ","Ӿ","Ԁ","Ԃ","Ԅ","Ԇ","Ԉ","Ԋ","Ԍ","Ԏ","Ԑ","Ԓ","Ԕ","Ԗ","Ԙ","Ԛ","Ԝ","Ԟ","Ԡ","Ԣ","Ԥ","Ԧ","Ԩ","Ԫ","Ԭ","Ԯ","Ա"-"Ֆ","Ⴀ"-"Ⴥ","Ⴧ","Ⴭ","Ꭰ"-"Ᏽ","Ა"-"Ჺ","Ჽ"-"Ჿ","Ḁ","Ḃ","Ḅ","Ḇ","Ḉ","Ḋ","Ḍ","Ḏ","Ḑ","Ḓ","Ḕ","Ḗ","Ḙ","Ḛ","Ḝ","Ḟ","Ḡ","Ḣ","Ḥ","Ḧ","Ḩ","Ḫ","Ḭ","Ḯ","Ḱ","Ḳ","Ḵ","Ḷ","Ḹ","Ḻ","Ḽ","Ḿ","Ṁ","Ṃ","Ṅ","Ṇ","Ṉ","Ṋ","Ṍ","Ṏ","Ṑ","Ṓ","Ṕ","Ṗ","Ṙ","Ṛ","Ṝ","Ṟ","Ṡ","Ṣ","Ṥ","Ṧ","Ṩ","Ṫ","Ṭ","Ṯ","Ṱ","Ṳ","Ṵ","Ṷ","Ṹ","Ṻ","Ṽ","Ṿ","Ẁ","Ẃ","Ẅ","Ẇ","Ẉ","Ẋ","Ẍ","Ẏ","Ẑ","Ẓ","Ẕ","ẞ","Ạ","Ả","Ấ","Ầ","Ẩ","Ẫ","Ậ","Ắ","Ằ","Ẳ","Ẵ","Ặ","Ẹ","Ẻ","Ẽ","Ế","Ề","Ể","Ễ","Ệ","Ỉ","Ị","Ọ","Ỏ","Ố","Ồ","Ổ","Ỗ","Ộ","Ớ","Ờ","Ở","Ỡ","Ợ","Ụ","Ủ","Ứ","Ừ","Ử","Ữ","Ự","Ỳ","Ỵ","Ỷ","Ỹ","Ỻ","Ỽ","Ỿ","Ἀ"-"Ἇ","Ἐ"-"Ἕ","Ἠ"-"Ἧ","Ἰ"-"Ἷ","Ὀ"-"Ὅ","Ὑ","Ὓ","Ὕ","Ὗ","Ὠ"-"Ὧ","Ᾰ"-"Ά","Ὲ"-"Ή","Ῐ"-"Ί","Ῠ"-"Ῥ","Ὸ"-"Ώ","ℂ","ℇ","ℋ"-"ℍ","ℐ"-"ℒ","ℕ","ℙ"-"ℝ","ℤ","Ω","ℨ","K"-"ℭ","ℰ"-"ℳ","ℾ"-"ℿ","ⅅ","Ↄ","Ⰰ"-"Ⱟ","Ⱡ","Ɫ"-"Ɽ","Ⱨ","Ⱪ","Ⱬ","Ɑ"-"Ɒ","Ⱳ","Ⱶ","Ȿ"-"Ⲁ","Ⲃ","Ⲅ","Ⲇ","Ⲉ","Ⲋ","Ⲍ","Ⲏ","Ⲑ","Ⲓ","Ⲕ","Ⲗ","Ⲙ","Ⲛ","Ⲝ","Ⲟ","Ⲡ","Ⲣ","Ⲥ","Ⲧ","Ⲩ","Ⲫ","Ⲭ","Ⲯ","Ⲱ","Ⲳ","Ⲵ","Ⲷ","Ⲹ","Ⲻ","Ⲽ","Ⲿ","Ⳁ","Ⳃ","Ⳅ","Ⳇ","Ⳉ","Ⳋ","Ⳍ","Ⳏ","Ⳑ","Ⳓ","Ⳕ","Ⳗ","Ⳙ","Ⳛ","Ⳝ","Ⳟ","Ⳡ","Ⳣ","Ⳬ","Ⳮ","Ⳳ","Ꙁ","Ꙃ","Ꙅ","Ꙇ","Ꙉ","Ꙋ","Ꙍ","Ꙏ","Ꙑ","Ꙓ","Ꙕ","Ꙗ","Ꙙ","Ꙛ","Ꙝ","Ꙟ","Ꙡ","Ꙣ","Ꙥ","Ꙧ","Ꙩ","Ꙫ","Ꙭ","Ꚁ","Ꚃ","Ꚅ","Ꚇ","Ꚉ","Ꚋ","Ꚍ","Ꚏ","Ꚑ","Ꚓ","Ꚕ","Ꚗ","Ꚙ","Ꚛ","Ꜣ","Ꜥ","Ꜧ","Ꜩ","Ꜫ","Ꜭ","Ꜯ","Ꜳ","Ꜵ","Ꜷ","Ꜹ","Ꜻ","Ꜽ","Ꜿ","Ꝁ","Ꝃ","Ꝅ","Ꝇ","Ꝉ","Ꝋ","Ꝍ","Ꝏ","Ꝑ","Ꝓ","Ꝕ","Ꝗ","Ꝙ","Ꝛ","Ꝝ","Ꝟ","Ꝡ","Ꝣ","Ꝥ","Ꝧ","Ꝩ","Ꝫ","Ꝭ","Ꝯ","Ꝺ","Ꝼ","Ᵹ"-"Ꝿ","Ꞁ","Ꞃ","Ꞅ","Ꞇ","Ꞌ","Ɥ","Ꞑ","Ꞓ","Ꞗ","Ꞙ","Ꞛ","Ꞝ","Ꞟ","Ꞡ","Ꞣ","Ꞥ","Ꞧ","Ꞩ","Ɦ"-"Ɪ","Ʞ"-"Ꞵ","Ꞷ","Ꞹ","Ꞻ","Ꞽ","Ꞿ","Ꟁ","Ꟃ","Ꞔ"-"Ꟈ","Ꟊ","Ꟑ","Ꟗ","Ꟙ","Ꟶ","A"-"Z"]> +| <#Nl: ["ᛮ"-"ᛰ","Ⅰ"-"ↂ","ↅ"-"ↈ","〇","〡"-"〩","〸"-"〺","ꛦ"-"ꛯ"]> + +// unicode_identifier_extend +| <#UnicodeIdentifierExtend: (||||)> +| <#Cf: ["­","؀"-"؅","؜","۝","܏","࢐"-"࢑","࣢","᠎","​"-"‏","‪"-"‮","⁠"-"⁤","⁦"-"","",""-""]> +| <#Mc: ["ः","ऻ","ा"-"ी","ॉ"-"ौ","ॎ"-"ॏ","ং"-"ঃ","া"-"ী","ে"-"ৈ","ো"-"ৌ","ৗ","ਃ","ਾ"-"ੀ","ઃ","ા"-"ી","ૉ","ો"-"ૌ","ଂ"-"ଃ","ା","ୀ","େ"-"ୈ","ୋ"-"ୌ","ୗ","ா"-"ி","ு"-"ூ","ெ"-"ை","ொ"-"ௌ","ௗ","ఁ"-"ః","ు"-"ౄ","ಂ"-"ಃ","ಾ","ೀ"-"ೄ","ೇ"-"ೈ","ೊ"-"ೋ","ೕ"-"ೖ","ೳ","ം"-"ഃ","ാ"-"ീ","െ"-"ൈ","ൊ"-"ൌ","ൗ","ං"-"ඃ","ා"-"ෑ","ෘ"-"ෟ","ෲ"-"ෳ","༾"-"༿","ཿ","ါ"-"ာ","ေ","း","ျ"-"ြ","ၖ"-"ၗ","ၢ"-"ၤ","ၧ"-"ၭ","ႃ"-"ႄ","ႇ"-"ႌ","ႏ","ႚ"-"ႜ","᜕","᜴","ា","ើ"-"ៅ","ះ"-"ៈ","ᤣ"-"ᤦ","ᤩ"-"ᤫ","ᤰ"-"ᤱ","ᤳ"-"ᤸ","ᨙ"-"ᨚ","ᩕ","ᩗ","ᩡ","ᩣ"-"ᩤ","ᩭ"-"ᩲ","ᬄ","ᬵ","ᬻ","ᬽ"-"ᭁ","ᭃ"-"᭄","ᮂ","ᮡ","ᮦ"-"ᮧ","᮪","ᯧ","ᯪ"-"ᯬ","ᯮ","᯲"-"᯳","ᰤ"-"ᰫ","ᰴ"-"ᰵ","᳡","᳷","〮"-"〯","ꠣ"-"ꠤ","ꠧ","ꢀ"-"ꢁ","ꢴ"-"ꣃ","ꥒ"-"꥓","ꦃ","ꦴ"-"ꦵ","ꦺ"-"ꦻ","ꦾ"-"꧀","ꨯ"-"ꨰ","ꨳ"-"ꨴ","ꩍ","ꩻ","ꩽ","ꫫ","ꫮ"-"ꫯ","ꫵ","ꯣ"-"ꯤ","ꯦ"-"ꯧ","ꯩ"-"ꯪ","꯬"]> +| <#Mn: ["̀"-"ͯ","҃"-"҇","֑"-"ֽ","ֿ","ׁ"-"ׂ","ׄ"-"ׅ","ׇ","ؐ"-"ؚ","ً"-"ٟ","ٰ","ۖ"-"ۜ","۟"-"ۤ","ۧ"-"ۨ","۪"-"ۭ","ܑ","ܰ"-"݊","ަ"-"ް","߫"-"߳","߽","ࠖ"-"࠙","ࠛ"-"ࠣ","ࠥ"-"ࠧ","ࠩ"-"࠭","࡙"-"࡛","࢘"-"࢟","࣊"-"࣡","ࣣ"-"ं","ऺ","़","ु"-"ै","्","॑"-"ॗ","ॢ"-"ॣ","ঁ","়","ু"-"ৄ","্","ৢ"-"ৣ","৾","ਁ"-"ਂ","਼","ੁ"-"ੂ","ੇ"-"ੈ","ੋ"-"੍","ੑ","ੰ"-"ੱ","ੵ","ઁ"-"ં","઼","ુ"-"ૅ","ે"-"ૈ","્","ૢ"-"ૣ","ૺ"-"૿","ଁ","଼","ି","ୁ"-"ୄ","୍","୕"-"ୖ","ୢ"-"ୣ","ஂ","ீ","்","ఀ","ఄ","఼","ా"-"ీ","ె"-"ై","ొ"-"్","ౕ"-"ౖ","ౢ"-"ౣ","ಁ","಼","ಿ","ೆ","ೌ"-"್","ೢ"-"ೣ","ഀ"-"ഁ","഻"-"഼","ു"-"ൄ","്","ൢ"-"ൣ","ඁ","්","ි"-"ු","ූ","ั","ิ"-"ฺ","็"-"๎","ັ","ິ"-"ຼ","່"-"໎","༘"-"༙","༵","༷","༹","ཱ"-"ཾ","ྀ"-"྄","྆"-"྇","ྍ"-"ྗ","ྙ"-"ྼ","࿆","ိ"-"ူ","ဲ"-"့","္"-"်","ွ"-"ှ","ၘ"-"ၙ","ၞ"-"ၠ","ၱ"-"ၴ","ႂ","ႅ"-"ႆ","ႍ","ႝ","፝"-"፟","ᜒ"-"᜔","ᜲ"-"ᜳ","ᝒ"-"ᝓ","ᝲ"-"ᝳ","឴"-"឵","ិ"-"ួ","ំ","៉"-"៓","៝","᠋"-"᠍","᠏","ᢅ"-"ᢆ","ᢩ","ᤠ"-"ᤢ","ᤧ"-"ᤨ","ᤲ","᤹"-"᤻","ᨗ"-"ᨘ","ᨛ","ᩖ","ᩘ"-"ᩞ","᩠","ᩢ","ᩥ"-"ᩬ","ᩳ"-"᩼","᩿","᪰"-"᪽","ᪿ"-"ᫎ","ᬀ"-"ᬃ","᬴","ᬶ"-"ᬺ","ᬼ","ᭂ","᭫"-"᭳","ᮀ"-"ᮁ","ᮢ"-"ᮥ","ᮨ"-"ᮩ","᮫"-"ᮭ","᯦","ᯨ"-"ᯩ","ᯭ","ᯯ"-"ᯱ","ᰬ"-"ᰳ","ᰶ"-"᰷","᳐"-"᳒","᳔"-"᳠","᳢"-"᳨","᳭","᳴","᳸"-"᳹","᷀"-"᷿","⃐"-"⃜","⃡","⃥"-"⃰","⳯"-"⳱","⵿","ⷠ"-"ⷿ","〪"-"〭","゙"-"゚","꙯","ꙴ"-"꙽","ꚞ"-"ꚟ","꛰"-"꛱","ꠂ","꠆","ꠋ","ꠥ"-"ꠦ","꠬","꣄"-"ꣅ","꣠"-"꣱","ꣿ","ꤦ"-"꤭","ꥇ"-"ꥑ","ꦀ"-"ꦂ","꦳","ꦶ"-"ꦹ","ꦼ"-"ꦽ","ꧥ","ꨩ"-"ꨮ","ꨱ"-"ꨲ","ꨵ"-"ꨶ","ꩃ","ꩌ","ꩼ","ꪰ","ꪲ"-"ꪴ","ꪷ"-"ꪸ","ꪾ"-"꪿","꫁","ꫬ"-"ꫭ","꫶","ꯥ","ꯨ","꯭","ﬞ","︀"-"️","︠"-"︯"]> +| <#Nd: ["0"-"9","٠"-"٩","۰"-"۹","߀"-"߉","०"-"९","০"-"৯","੦"-"੯","૦"-"૯","୦"-"୯","௦"-"௯","౦"-"౯","೦"-"೯","൦"-"൯","෦"-"෯","๐"-"๙","໐"-"໙","༠"-"༩","၀"-"၉","႐"-"႙","០"-"៩","᠐"-"᠙","᥆"-"᥏","᧐"-"᧙","᪀"-"᪉","᪐"-"᪙","᭐"-"᭙","᮰"-"᮹","᱀"-"᱉","᱐"-"᱙","꘠"-"꘩","꣐"-"꣙","꤀"-"꤉","꧐"-"꧙","꧰"-"꧹","꩐"-"꩙","꯰"-"꯹","0"-"9"]> +| <#Pc: ["‿"-"⁀","⁔","︳"-"︴","﹍"-"﹏","_"]> + +| < #SPECIAL_ESC: "\\'" > /* Allowing this will break LIKE ... ESCAPE ... */ +| < #ESC: "\\" ["n","t","b","r","f","\\","\""] > +| < S_CHAR_LITERAL: (["U","E","N","R","B"]|"RB"|"_utf8")? + ( + ("'" ( | | ~["'", "\\"] )* "'") | ("'" ("''" | ~["'"])* "'") + // Alternative Oracle Escape Modes + | ("q'{" (~[])* "}'") + | ("q'(" (~[])* ")'") + | ("q'[" (~[])* "]'") + | ("q''" (~[])* "''") + // | ("q'\\" (~[])* "\\'") <--- Does not work + ) > + { + // contains the token and always the longest match is returned + // So when Backslash is explicitly not allowed as an Escape Character and a is found + // which contains the , then we will need to + // 1) break the at close it with a "'" + // 2) continue tokenizing after that with a new or any other Token + if ( !configuration.getAsBoolean(Feature.allowBackslashEscapeCharacter) && matchedToken.image.contains("\\'") ) { + matchedToken.image = image.substring( 0, image.indexOf("\\'") + 1 ) + "'"; + for (int i=0;i") ) { + matchedToken.kind = i; + } } - } - input_stream.backup(image.length() - 1); - } + input_stream.backup(image.length() - matchedToken.image.length() ); + } + } +| < S_QUOTED_IDENTIFIER: "\"" (~["\n","\r","\""])* "\"" | "$$" (~["\n","\r","\""])* "$$" | ("`" (~["\n","\r","`"])+ "`") | ( "[" (~["\n","\r","]"])* "]" ) > + { + if ( !configuration.getAsBoolean(Feature.allowSquareBracketQuotation) && matchedToken.image.charAt(0) == '[' ) { + matchedToken.image = "["; + for (int i=0;i } + Statement Statement() #Statement: { IfElseStatement ifElseStatement = null; @@ -509,17 +573,17 @@ Statement Statement() #Statement: try { ( condition=Condition() - stm = SingleStatement() { ifElseStatement = new IfElseStatement(condition, stm); } + ( stm = SingleStatement() | stm = Block() ) { ifElseStatement = new IfElseStatement(condition, stm); } [ { ifElseStatement.setUsingSemicolonForIfStatement(true); } ] [ LOOKAHEAD(2) - stm2 = SingleStatement() { ifElseStatement.setElseStatement(stm2); } + ( stm2 = SingleStatement() | stm2 = Block() ) { ifElseStatement.setElseStatement(stm2); } [ { ifElseStatement.setUsingSemicolonForElseStatement(true); }] ] ) | ( - stm = SingleStatement() + ( stm = SingleStatement() | stm = Block() ) [ ] ) @@ -568,7 +632,7 @@ Statement SingleStatement() : ")" ) | - ( + LOOKAHEAD(2) ( [ with=WithList() ] ( stm = Select( with ) @@ -583,10 +647,7 @@ Statement SingleStatement() : ) ) | - stm = Upsert() - | - LOOKAHEAD(3) - stm = Replace() + LOOKAHEAD(3) stm = Upsert() | LOOKAHEAD(2) stm = AlterTable() @@ -638,6 +699,9 @@ Statement SingleStatement() : LOOKAHEAD(ShowColumns()) stm = ShowColumns() | + LOOKAHEAD(ShowIndex()) + stm = ShowIndex() + | LOOKAHEAD(ShowTables()) stm = ShowTables() | @@ -719,7 +783,7 @@ Block Block() #Block : { block.setStatements(stmts); } - [LOOKAHEAD(2) ] + [LOOKAHEAD(2) { block.setSemicolonAfterEnd(true); } ] { return block; } @@ -740,10 +804,10 @@ Statements Statements() #Statements : { ( ( condition=Condition() - stm = SingleStatement() { ifElseStatement = new IfElseStatement(condition, stm); } + ( stm = SingleStatement() | stm = Block() ) { ifElseStatement = new IfElseStatement(condition, stm); } [ LOOKAHEAD(2) [ { ifElseStatement.setUsingSemicolonForIfStatement(true); } ] - stm2 = SingleStatement() { ifElseStatement.setElseStatement(stm2); } + ( stm2 = SingleStatement() | stm2 = Block() ) { ifElseStatement.setElseStatement(stm2); } ] { list.add( ifElseStatement ); } @@ -768,10 +832,10 @@ Statements Statements() #Statements : { [ ( condition=Condition() - stm = SingleStatement() { ifElseStatement = new IfElseStatement(condition, stm); } + ( stm = SingleStatement() | stm = Block() ) { ifElseStatement = new IfElseStatement(condition, stm); } [ LOOKAHEAD(2) [ { ifElseStatement.setUsingSemicolonForIfStatement(true); } ] - stm2 = SingleStatement() { ifElseStatement.setElseStatement(stm2); } + ( stm2 = SingleStatement() | stm2 = Block() ) { ifElseStatement.setElseStatement(stm2); } ] { list.add( ifElseStatement ); } @@ -857,7 +921,7 @@ DeclareStatement Declare(): { SetStatement Set(): { - String name; + Object name; ArrayList expList; boolean useEqual = false; SetStatement set; @@ -872,10 +936,11 @@ SetStatement Set(): { [LOOKAHEAD(3) (tk = | tk = ) {effectParameter = tk.image; } ] ( LOOKAHEAD(2) { name = "Time Zone"; useEqual=false; } + | (name = UserVariable() ["=" { useEqual=true; } ]) | (name = RelObjectNameExt() ["=" { useEqual=true; } ]) ) ) - exp=SimpleExpression() + exp=Expression() {expList = new ArrayList(); expList.add(exp); } { set = new SetStatement(name,expList).withUseEqual(useEqual).withEffectParameter(effectParameter); } @@ -888,12 +953,12 @@ SetStatement Set(): { { name = "Time Zone"; useEqual=false; } | (name = RelObjectNameExt() ["=" { useEqual=true; } ]) ) - exp=SimpleExpression() + exp=Expression() {expList = new ArrayList(); expList.add(exp); set.add(name, expList, useEqual);} ) - | exp=SimpleExpression() { expList.add(exp); } + | exp=Expression() { expList.add(exp); } ))* { return set; } } @@ -1116,6 +1181,16 @@ ShowColumnsStatement ShowColumns(): { } } +ShowIndexStatement ShowIndex(): { + String tableName; +} +{ + tableName = RelObjectNameExt() + { + return new ShowIndexStatement(tableName); + } +} + // https://dev.mysql.com/doc/refman/8.0/en/show-tables.html ShowTablesStatement ShowTables(): { ShowTablesStatement showTablesStatement; @@ -1197,8 +1272,8 @@ Update Update( List with ): } { { update.setOracleHint(getOracleHint()); } - [ { modifierPriority = UpdateModifierPriority.LOW_PRIORITY; }] - [ { modifierIgnore = true; }] + [ LOOKAHEAD(2) { modifierPriority = UpdateModifierPriority.LOW_PRIORITY; }] + [ LOOKAHEAD(2) { modifierIgnore = true; }] table=TableWithAlias() startJoins=JoinsList() ( @@ -1268,64 +1343,6 @@ Update Update( List with ): } } -Replace Replace(): -{ - Replace replace = new Replace(); - Table table = null; - Column tableColumn = null; - Expression value = null; - - List columns = new ArrayList(); - List expList = new ArrayList(); - MultiExpressionList multiExpr = null; - ItemsList itemsList = null; - Expression exp = null; -} -{ - ( [LOOKAHEAD(2) { replace.setUseIntoTables(true); }] table=Table() ) - - ( - ( - tableColumn=Column() "=" value=SimpleExpression() { columns.add(tableColumn); expList.add(value); } - ("," tableColumn=Column() "=" value=SimpleExpression() { columns.add(tableColumn); expList.add(value); } )* - { - replace.setExpressions(expList); - } - ) - | - - ( - [LOOKAHEAD(2) "(" tableColumn=Column() { columns.add(tableColumn); } ("," tableColumn=Column() { columns.add(tableColumn); } )* ")" ] - ( - LOOKAHEAD(2) [ | ] "(" exp=PrimaryExpression() { expList.add(exp); } - ("," exp=PrimaryExpression() { expList.add(exp); } )* ")" { itemsList = new ExpressionList(expList); } - ("," "(" exp=SimpleExpression() { - if (multiExpr==null) { - multiExpr=new MultiExpressionList(); - multiExpr.addExpressionList((ExpressionList)itemsList); - itemsList = multiExpr; - } - expList = new ArrayList(); - expList.add(exp); } - ("," exp=SimpleExpression() { expList.add(exp); } )* ")" { multiExpr.addExpressionList(expList); } )* - | - { replace.setUseValues(false); } - itemsList=SubSelect() - { ((SubSelect)itemsList).setUseBrackets(false); } - ) - { - replace.setItemsList(itemsList); - } - ) - ) - { - if (!columns.isEmpty()) { - replace.withColumns(columns); - } - return replace.withTable(table); - } -} - List ListExpressionItem(): { List retval = new ArrayList(); @@ -1365,14 +1382,14 @@ Insert Insert( List with ): } { { insert.setOracleHint(getOracleHint()); } - [(tk = | tk = | tk = ) + [LOOKAHEAD(2) (tk = | tk = | tk = ) {if (tk!=null) modifierPriority = InsertModifierPriority.valueOf(tk.image.toUpperCase()); }] - [{ modifierIgnore = true; }] - [] table=Table() + [ LOOKAHEAD(2) { modifierIgnore = true; }] + [ LOOKAHEAD(2) ] table=Table() - [ [ { useAs = true; } ] name=RelObjectNameWithoutValue() { table.setAlias(new Alias(name,useAs)); }] + [ LOOKAHEAD(2) [ { useAs = true; } ] name=RelObjectNameWithoutValue() { table.setAlias(new Alias(name,useAs)); }] [LOOKAHEAD(2) "(" tableColumn=Column() { columns.add(tableColumn); } ("," tableColumn=Column() { columns.add(tableColumn); } )* ")" ] @@ -1597,26 +1614,48 @@ Upsert Upsert(): Token tk = null; } { - - [] table=Table() - - - [LOOKAHEAD(2) "(" tableColumn=Column() { columns.add(tableColumn); } ("," tableColumn=Column() { columns.add(tableColumn); } )* ")" ] ( + { upsert.setUpsertType(UpsertType.UPSERT); } + | + { upsert.setUpsertType(UpsertType.REPLACE); } + | + ( + { upsert.setUpsertType(UpsertType.INSERT_OR_REPLACE); } + ) + ) + [ LOOKAHEAD(2) { upsert.setUsingInto(true); } ] table=Table() + [ + LOOKAHEAD(2) "(" tableColumn=Column() { columns.add(tableColumn); } + ("," tableColumn=Column() { columns.add(tableColumn); } )* ")" + ] + ( + ( + { upsert.setUpsertType(UpsertType.REPLACE_SET); } + tableColumn=Column() "=" exp=SimpleExpression() { columns.add(tableColumn); primaryExpList.add(exp); } + ("," tableColumn=Column() "=" exp=SimpleExpression() { columns.add(tableColumn); primaryExpList.add(exp); } )* + { + itemsList = new ExpressionList(primaryExpList); + } + ) + | LOOKAHEAD(2) [ | ] "(" exp=SimpleExpression() { primaryExpList.add(exp); } - ("," exp=SimpleExpression() { primaryExpList.add(exp); } )* ")" { itemsList = new ExpressionList(primaryExpList); } - ("," "(" exp=SimpleExpression() { - if (multiExpr==null) { - multiExpr=new MultiExpressionList(); - multiExpr.addExpressionList((ExpressionList)itemsList); - itemsList = multiExpr; - } - primaryExpList = new ArrayList(); - primaryExpList.add(exp); } - ("," exp=SimpleExpression() { primaryExpList.add(exp); } )* ")" { multiExpr.addExpressionList(primaryExpList); } )* - | + ( "," exp=SimpleExpression() { primaryExpList.add(exp); } )* ")" { itemsList = new ExpressionList(primaryExpList); } + ("," "(" exp=SimpleExpression() + { + if (multiExpr==null) { + multiExpr=new MultiExpressionList(); + multiExpr.addExpressionList((ExpressionList)itemsList); + itemsList = multiExpr; + } + primaryExpList = new ArrayList(); + primaryExpList.add(exp); + } + ("," exp=SimpleExpression() { primaryExpList.add(exp); } )* ")" + { multiExpr.addExpressionList(primaryExpList); } + )* + | ( LOOKAHEAD(2) "(" { useSelectBrackets = true; } { upsert.setUseValues(false); } @@ -1677,9 +1716,9 @@ Delete Delete( List with ): } { { delete.setOracleHint(getOracleHint()); } - [ { modifierPriority = DeleteModifierPriority.LOW_PRIORITY; }] - [ { modifierQuick = true; }] - [ { modifierIgnore = true; }] + [ LOOKAHEAD(2) { modifierPriority = DeleteModifierPriority.LOW_PRIORITY; }] + [ LOOKAHEAD(2) { modifierQuick = true; }] + [ LOOKAHEAD(2) { modifierIgnore = true; }] [LOOKAHEAD(4) (table=TableWithAlias() { tables.add(table); } ("," table=TableWithAlias() { tables.add(table); } )* [ outputClause = OutputClause() {delete.setOutputClause(outputClause); } ] @@ -1812,69 +1851,33 @@ Column Column() #Column : } /* -Not all names should be allowed for aliases. +The following tokens are allowed as Names for Schema, Table, Column and Aliases */ + +// Generated Code! Please do not edit manually. +// Instead: +// 1) define the ALL_RESERVED_KEYWORDS in the PARSER DECLARATION above (line 157 ff) +// 2) run the Gradle Task :JSQLParser:updateKeywords, which would update/replace the content of this method String RelObjectNameWithoutValue() : { Token tk = null; } { - (tk= | tk= - | tk= | tk= - | tk= | tk= | tk= | tk= - | tk= | tk = | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= | tk= | tk= - | tk= - | tk= | tk= | tk= | tk= | tk= | tk= - /*| tk= | tk= | tk= | tk= */ - | tk= | tk= | tk= | tk= | tk= - | tk= - | tk= - | tk= - | tk= | tk= | tk= - - /* Keywords for ALTER SESSION */ - /* | tk= */ | tk= | tk= - - | tk= - /* Keywords for ALTER SYSTEM */ - | tk= | tk= | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= - | tk= - | tk= - | tk= - | tk= - - | tk= - ) - + ( tk= | tk= | tk= | tk= | tk= | tk= | tk= + | tk="ACTION" | tk="ACTIVE" | tk="ADD" | tk="ADVANCE" | tk="ADVISE" | tk="AGAINST" | tk="ALGORITHM" | tk="ALTER" | tk="ANALYZE" | tk="APPLY" | tk="ARCHIVE" | tk="ARRAY" | tk="ASC" | tk="AT" | tk="AUTHORIZATION" | tk="AUTO" | tk="BEGIN" | tk="BINARY" | tk="BIT" | tk="BUFFERS" | tk="BY" | tk="BYTE" | tk="BYTES" | tk="CACHE" | tk="CALL" | tk="CASCADE" | tk="CASE" | tk="CAST" | tk="CHANGE" | tk="CHANGES" | tk="CHAR" | tk="CHARACTER" | tk="CHECKPOINT" | tk="CLOSE" | tk="COLLATE" | tk="COLUMN" | tk="COLUMNS" | tk="COMMENT" | tk="COMMIT" | tk="CONFLICT" | tk="COSTS" | tk="CS" | tk="CYCLE" | tk="DATABASE" | tk="DDL" | tk="DECLARE" | tk="DEFAULT" | tk="DEFERRABLE" | tk="DELAYED" | tk="DELETE" | tk="DESC" | tk="DESCRIBE" | tk="DISABLE" | tk="DISCONNECT" | tk="DIV" | tk="DML" | tk="DO" | tk="DROP" | tk="DUMP" | tk="DUPLICATE" | tk="EMIT" | tk="ENABLE" | tk="END" | tk="ESCAPE" | tk="EXCLUDE" | tk="EXEC" | tk="EXECUTE" | tk="EXPLAIN" | tk="EXTENDED" | tk="EXTRACT" | tk="FALSE" | tk="FILTER" | tk="FIRST" | tk="FLUSH" | tk="FN" | tk="FOLLOWING" | tk="FORMAT" | tk="FULLTEXT" | tk="FUNCTION" | tk="GLOBAL" | tk="GRANT" | tk="GUARD" | tk="HISTORY" | tk="HOPPING" | tk="INCLUDE" | tk="INCREMENT" | tk="INDEX" | tk="INSERT" | tk="INTERLEAVE" | tk="ISNULL" | tk="JSON" | tk="KEEP" | tk="KEY" | tk="KEYS" | tk="LAST" | tk="LEADING" | tk="LINK" | tk="LOCAL" | tk="LOCKED" | tk="LOG" | tk="MATCH" | tk="MATCHED" | tk="MATERIALIZED" | tk="MAXVALUE" | tk="MERGE" | tk="MINVALUE" | tk="MODIFY" | tk="MOVEMENT" | tk="NEXT" | tk="NO" | tk="NOCACHE" | tk="NOKEEP" | tk="NOLOCK" | tk="NOMAXVALUE" | tk="NOMINVALUE" | tk="NOORDER" | tk="NOTHING" | tk="NOVALIDATE" | tk="NOWAIT" | tk="NULLS" | tk="OF" | tk="OFF" | tk="OPEN" | tk="OVER" | tk="OVERLAPS" | tk="PARALLEL" | tk="PARENT" | tk="PARTITION" | tk="PATH" | tk="PERCENT" | tk="PLACING" | tk="PRECEDING" | tk="PRECISION" | tk="PRIMARY" | tk="PRIOR" | tk="PURGE" | tk="QUERY" | tk="QUICK" | tk="QUIESCE" | tk="RANGE" | tk="READ" | tk="RECYCLEBIN" | tk="REFERENCES" | tk="REFRESH" | tk="REGISTER" | tk="RENAME" | tk="REPLACE" | tk="RESET" | tk="RESTART" | tk="RESTRICT" | tk="RESTRICTED" | tk="RESUMABLE" | tk="RESUME" | tk="RLIKE" | tk="ROLLBACK" | tk="ROW" | tk="ROWS" | tk="RR" | tk="RS" | tk="SAVEPOINT" | tk="SCHEMA" | tk="SEPARATOR" | tk="SEQUENCE" | tk="SESSION" | tk="SETS" | tk="SHOW" | tk="SHUTDOWN" | tk="SIBLINGS" | tk="SIGNED" | tk="SIMILAR" | tk="SIZE" | tk="SKIP" | tk="STORED" | tk="STRING" | tk="SUSPEND" | tk="SWITCH" | tk="SYNONYM" | tk="SYSTEM" | tk="TABLE" | tk="TABLESPACE" | tk="TEMP" | tk="TEMPORARY" | tk="THEN" | tk="TIMEOUT" | tk="TIMESTAMPTZ" | tk="TO" | tk="TRUE" | tk="TRUNCATE" | tk="TUMBLING" | tk="TYPE" | tk="UNLOGGED" | tk="UNQIESCE" | tk="UNSIGNED" | tk="UPDATE" | tk="UPSERT" | tk="UR" | tk="USER" | tk="VALIDATE" | tk="VERBOSE" | tk="VIEW" | tk="WAIT" | tk="WITHIN" | tk="WITHOUT" | tk="WORK" | tk="XML" | tk="XMLAGG" | tk="XMLTEXT" | tk="YAML" | tk="YES" | tk="ZONE" ) { return tk.image; } } /* -Normal names. +These tokens can be used as names for Schema and Tables and Columns +BUT NOT for Aliases (without quoting) */ String RelObjectName() : { Token tk = null; String result = null; } { (result = RelObjectNameWithoutValue() - | tk= | tk= | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= ) + | tk= | tk= | tk= | tk= | tk= | tk= + | tk= | tk= | tk= | tk= | tk= ) - { - if (tk!=null) result=tk.image; - return result; - } + { return tk!=null ? tk.image : result; } } String RelObjectNameWithoutStart() : @@ -1883,14 +1886,15 @@ String RelObjectNameWithoutStart() : (result = RelObjectNameWithoutValue() | tk= | tk= | tk= | tk= ) - { - if (tk!=null) result=tk.image; - return result; - } + { return tk!=null ? tk.image : result; } } /* Extended version of object names. + +These tokens can be used as names for Schema and Tables and Columns +BUT NOT for Aliases (without quoting) + */ String RelObjectNameExt(): { Token tk = null; @@ -1900,15 +1904,16 @@ String RelObjectNameExt(): ( result=RelObjectName() | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= ) - { - if (tk!=null) result=tk.image; - return result; - } + | tk= | tk= | tk= | tk= ) + { return tk!=null ? tk.image : result; } } /* Extended usage of object names - part 2. Using within multipart names as following parts. + +These tokens can be used as names for Tables and Columns +BUT NOT for Schema or Aliases (without quoting) + */ String RelObjectNameExt2(): { Token tk = null; @@ -1916,13 +1921,10 @@ String RelObjectNameExt2(): } { ( result=RelObjectNameExt() | tk= | tk= | tk= ) - { - if (tk!=null) result=tk.image; - return result; - } + { return tk!=null ? tk.image : result; } } -Table Table() #Table : +Table Table() #TableName : { //String serverName = null, databaseName = null, schemaName = null, tableName = null; List data = new ArrayList(); @@ -1943,7 +1945,7 @@ Table TableWithAlias(): Alias alias = null; } { - table=Table() [alias=Alias() { table.setAlias(alias); }] + table=Table() [ LOOKAHEAD(2) alias=Alias() { table.setAlias(alias); }] { return table; } } @@ -2007,11 +2009,13 @@ PlainSelect PlainSelect() #PlainSelect: Token token; KSQLWindow ksqlWindow = null; boolean noWait = false; + String windowName = null; + WindowDefinition winDef; } { - [ { plainSelect.setMySqlHintStraightJoin(true); } ] + [ LOOKAHEAD(2) { plainSelect.setMySqlHintStraightJoin(true); } ] { plainSelect.setOracleHint(getOracleHint()); } @@ -2051,12 +2055,17 @@ PlainSelect PlainSelect() #PlainSelect: fromItem=FromItem() joins=JoinsList() ] - [ ksqlWindow=KSQLWindowClause() { plainSelect.setKsqlWindow(ksqlWindow); } ] + [ LOOKAHEAD(2) ksqlWindow=KSQLWindowClause() { plainSelect.setKsqlWindow(ksqlWindow); } ] [ LOOKAHEAD(2) where=WhereClause() { plainSelect.setWhere(where); }] [ oracleHierarchicalQueryClause=OracleHierarchicalQueryClause() { plainSelect.setOracleHierarchical(oracleHierarchicalQueryClause); } ] [ groupBy=GroupByColumnReferences() { plainSelect.setGroupByElement(groupBy); }] [ having=Having() { plainSelect.setHaving(having); }] [LOOKAHEAD( ) orderByElements = OrderByElements() { plainSelect.setOracleSiblings(true); plainSelect.setOrderByElements(orderByElements); } ] + [ + windowName = RelObjectName() winDef = windowDefinition() { List winDefs = new ArrayList(); winDefs.add(winDef.withWindowName(windowName)); } + ( LOOKAHEAD(2) "," windowName = RelObjectName() winDef = windowDefinition() { winDefs.add(winDef.withWindowName(windowName)); } )* + { plainSelect.setWindowDefinitions(winDefs); } + ] [LOOKAHEAD( ) orderByElements = OrderByElements() { plainSelect.setOrderByElements(orderByElements); } ] [ { plainSelect.setEmitChanges(true); } ] [LOOKAHEAD() limit = LimitWithOffset() { plainSelect.setLimit(limit); } ] @@ -2067,7 +2076,8 @@ PlainSelect PlainSelect() #PlainSelect: [LOOKAHEAD(2) { plainSelect.setForUpdate(true); } [ updateTable = Table() { plainSelect.setForUpdateTable(updateTable); } ] [ LOOKAHEAD() wait = Wait() { plainSelect.setWait(wait); } ] - [ { plainSelect.setNoWait(true); } ] ] + [ { plainSelect.setNoWait(true); } + | { plainSelect.setSkipLocked(true); } ] ] [LOOKAHEAD() optimize = OptimizeFor() { plainSelect.setOptimizeFor(optimize); } ] @@ -2253,10 +2263,17 @@ SelectExpressionItem SelectExpressionItem(): Alias alias = null; } { - expression=Expression() { selectExpressionItem = new SelectExpressionItem(); selectExpressionItem.setExpression(expression); } - [ LOOKAHEAD(2) alias=Alias() { selectExpressionItem.setAlias(alias); }] { return selectExpressionItem; } + ( + LOOKAHEAD( Condition() ) expression = Condition() + | + LOOKAHEAD( 3 ) expression = ConcatExpression() + | + expression=Expression() + ) { selectExpressionItem = new SelectExpressionItem(); selectExpressionItem.setExpression(expression); } + [ LOOKAHEAD(2) alias=Alias() { selectExpressionItem.setAlias(alias); }] { return selectExpressionItem; } } + SelectItem SelectItem() #SelectItem: { SelectItem selectItem = null; @@ -2456,7 +2473,7 @@ Pivot Pivot(): | multiInItems = PivotMultiInItems() ) ")" ")" - [ alias = Alias() ] + [ LOOKAHEAD(2) alias = Alias() ] { retval.setFunctionItems(functionItems); retval.setForColumns(forColumns); @@ -2584,7 +2601,7 @@ FromItem FromItem(): | fromItem=LateralSubSelect() ) - [ alias=Alias() { fromItem.setAlias(alias); } ] + [ LOOKAHEAD(2) alias=Alias() { fromItem.setAlias(alias); } ] [ LOOKAHEAD(2) unpivot=UnPivot() { fromItem.setUnPivot(unpivot); } ] [(LOOKAHEAD(2) pivot=PivotXml()|pivot=Pivot()) { fromItem.setPivot(pivot); } ] [ @@ -2634,7 +2651,7 @@ FromItem ValuesList(): )) ")" - [ alias=Alias() { valuesList.setAlias(alias); } + [ LOOKAHEAD(2) alias=Alias() { valuesList.setAlias(alias); } [ "(" colName = RelObjectName() { colNames = new ArrayList(); colNames.add(colName); } @@ -2711,6 +2728,7 @@ Join JoinerExpression() #JoinerExpression: } { + [ { join.setGlobal(true); } ] [ { join.setNatural(true); } ] [ @@ -3300,6 +3318,20 @@ Expression Condition(): { return not?new NotExpression(result, exclamationMarkNot):result; } } +Expression OverlapsCondition():{ + ExpressionList left = new ExpressionList(); + ExpressionList right = new ExpressionList(); +} +{ + //As per the sql2003 standard, we need at least two items in the list if there is not explicit ROW prefix + //More than two expression are allowed per the sql2003 grammar. + "(" left = SimpleExpressionListAtLeastTwoItems() ")" + + "(" right = SimpleExpressionListAtLeastTwoItems() ")" + + {return new OverlapsCondition(left, right);} +} + Expression RegularCondition() #RegularCondition: { Expression result = null; @@ -3326,8 +3358,8 @@ Expression RegularCondition() #RegularCondition: | token= { result = new NotEqualsTo(token.image); } | "@@" { result = new Matches(); } | "~" { result = new RegExpMatchOperator(RegExpMatchOperatorType.MATCH_CASESENSITIVE); } - | [ { not=true; } ] [ { binary=true; } ] { result = new RegExpMySQLOperator(not, binary?RegExpMatchOperatorType.MATCH_CASESENSITIVE:RegExpMatchOperatorType.MATCH_CASEINSENSITIVE); } - | [ { binary=true; } ] { result = new RegExpMySQLOperator(binary?RegExpMatchOperatorType.MATCH_CASESENSITIVE:RegExpMatchOperatorType.MATCH_CASEINSENSITIVE).useRLike(); } + | [ { not=true; } ] [ LOOKAHEAD(2) { binary=true; } ] { result = new RegExpMySQLOperator(not, binary?RegExpMatchOperatorType.MATCH_CASESENSITIVE:RegExpMatchOperatorType.MATCH_CASEINSENSITIVE); } + | [ LOOKAHEAD(2) { binary=true; } ] { result = new RegExpMySQLOperator(binary?RegExpMatchOperatorType.MATCH_CASESENSITIVE:RegExpMatchOperatorType.MATCH_CASEINSENSITIVE).useRLike(); } | "~*" { result = new RegExpMatchOperator(RegExpMatchOperatorType.MATCH_CASEINSENSITIVE); } | "!~" { result = new RegExpMatchOperator(RegExpMatchOperatorType.NOT_MATCH_CASESENSITIVE); } | "!~*" { result = new RegExpMatchOperator(RegExpMatchOperatorType.NOT_MATCH_CASEINSENSITIVE); } @@ -3376,6 +3408,7 @@ Expression SQLCondition(): ( result=ExistsExpression() | LOOKAHEAD(InExpression()) result=InExpression() + | LOOKAHEAD(OverlapsCondition()) result=OverlapsCondition() | left = SimpleExpression() { result = left; } [ LOOKAHEAD(2) ((LOOKAHEAD(2) result=Between(left) | LOOKAHEAD(IsNullExpression()) result=IsNullExpression(left) @@ -3469,10 +3502,17 @@ Expression LikeExpression(Expression leftExpression) #LikeExpression: LikeExpression result = new LikeExpression(); Expression rightExpression = null; Expression escape; + Token token; } { [ { result.setNot(true); } ] ( | { result.setCaseInsensitive(true); } ) rightExpression=SimpleExpression() - [ escape=Expression() { result.setEscape(escape); }] + [ LOOKAHEAD(2) + ( + LOOKAHEAD(2) token = { result.setEscape( new StringValue( token.image ) ); } + | + escape=Expression() { result.setEscape(escape); } + ) + ] { result.setLeftExpression(leftExpression); result.setRightExpression(rightExpression); @@ -3490,7 +3530,7 @@ Expression SimilarToExpression(Expression leftExpression) #SimilarToExpression: [ { result.setNot(true); } ] rightExpression=SimpleExpression() - [ token= { result.setEscape((new StringValue(token.image)).getValue()); }] + [ LOOKAHEAD(2) token= { result.setEscape((new StringValue(token.image)).getValue()); }] { result.setLeftExpression(leftExpression); result.setRightExpression(rightExpression); @@ -3711,7 +3751,8 @@ Expression ComparisonItem() : LOOKAHEAD(3) retval=AnyComparisonExpression() | LOOKAHEAD(ValueListExpression()) retval=ValueListExpression() | LOOKAHEAD(3) retval=SimpleExpression() - | retval=RowConstructor() + | LOOKAHEAD(3) retval=RowConstructor() + | retval=PrimaryExpression() ) { @@ -3904,6 +3945,7 @@ Expression BitwiseXor(): } Expression ArrayExpression(Expression obj): { + Expression expr; Expression idxExpr = null; Expression startExpr = null; Expression stopExpr = null; @@ -3915,7 +3957,18 @@ Expression ArrayExpression(Expression obj): { [stopExpr = SimpleExpression()] ] "]" - { return new ArrayExpression(obj, idxExpr, startExpr, stopExpr); } + { expr = new ArrayExpression(obj, idxExpr, startExpr, stopExpr); } + ( + "[" + [LOOKAHEAD(3) idxExpr = SimpleExpression()] + [ + (":" { startExpr=idxExpr; idxExpr=null; }) + [stopExpr = SimpleExpression()] + ] + "]" + { expr = new ArrayExpression(expr, idxExpr, startExpr, stopExpr); } + )* + { return expr; } } Expression PrimaryExpression() #PrimaryExpression: @@ -3941,17 +3994,17 @@ Expression PrimaryExpression() #PrimaryExpression: | LOOKAHEAD(3, {!interrupted}) retval=CaseWhenExpression() - | retval = SimpleJdbcParameter() + | LOOKAHEAD(3) retval = SimpleJdbcParameter() - | LOOKAHEAD(2, {!interrupted}) retval=JdbcNamedParameter() + | LOOKAHEAD(2) retval=JdbcNamedParameter() - | retval=UserVariable() + | LOOKAHEAD(3) retval=UserVariable() | LOOKAHEAD(2, {!interrupted}) retval=NumericBind() | LOOKAHEAD(3, {!interrupted}) retval=ExtractExpression() - | retval=MySQLGroupConcat() + | LOOKAHEAD(3) retval=MySQLGroupConcat() | retval=XMLSerializeExpr() @@ -3979,10 +4032,12 @@ Expression PrimaryExpression() #PrimaryExpression: | LOOKAHEAD(2, {!interrupted}) retval=TryCastExpression() + | LOOKAHEAD(2, {!interrupted}) retval=SafeCastExpression() + //| LOOKAHEAD(2) retval=RowConstructor() // support timestamp expressions - | (token= | token=) { retval = new TimeKeyExpression(token.image); } + | LOOKAHEAD(2, {!interrupted}) (token= | token=) { retval = new TimeKeyExpression(token.image); } | LOOKAHEAD(2, {!interrupted}) retval=DateTimeLiteralExpression() @@ -4020,7 +4075,7 @@ Expression PrimaryExpression() #PrimaryExpression: ) [ - token= { retval = new CollateExpression(retval, token.image); } + LOOKAHEAD(2) token= { retval = new CollateExpression(retval, token.image); } ] [ @@ -4143,7 +4198,7 @@ DateTimeLiteralExpression DateTimeLiteralExpression() : { t= { expr.setValue(t.image); return expr; } } -ArrayConstructor ArrayConstructor(final boolean arrayKeyword) : { +ArrayConstructor ArrayConstructor(boolean arrayKeyword) : { ArrayList expList = new ArrayList(); ArrayConstructor array = new ArrayConstructor(expList, arrayKeyword); Expression exp = null; @@ -4166,7 +4221,33 @@ JsonExpression JsonExpression() : { CastExpression castExpr = null; } { - expr=Column() + ( + LOOKAHEAD(3, {!interrupted}) expr=CaseWhenExpression() + | + expr = SimpleJdbcParameter() + | + LOOKAHEAD(2, {!interrupted}) expr=JdbcNamedParameter() + | + expr=UserVariable() + | + LOOKAHEAD(JsonFunction(), {!interrupted}) expr = JsonFunction() + | + LOOKAHEAD(JsonAggregateFunction(), {!interrupted}) expr = JsonAggregateFunction() + | + LOOKAHEAD(FullTextSearch(), {!interrupted}) expr = FullTextSearch() + /* Do not parse Functions as this will result in a major performance loss + The Performance related tests will fail. + | + LOOKAHEAD(Function(), {!interrupted}) expr=Function() + */ + | + LOOKAHEAD(2, {!interrupted}) expr=Column() + | + token= { expr = new StringValue(token.image); } + | + LOOKAHEAD("(" expr=SubSelect() ")", {!interrupted} ) "(" expr=SubSelect() ")" + ) + ( "::" type=ColDataType() { castExpr = new CastExpression(); castExpr.setUseCastKeyword(false); @@ -4269,8 +4350,8 @@ JsonFunction JsonFunction() : { ( { result.setType( JsonFunctionType.ARRAY ); } "(" - ( - LOOKAHEAD(2) ( + ( + LOOKAHEAD(2) ( { result.setOnNullType( JsonAggregateOnNullType.NULL ); } ) | @@ -4284,7 +4365,7 @@ JsonFunction JsonFunction() : { )* )* - [ + [ { result.setOnNullType( JsonAggregateOnNullType.ABSENT ); } ] @@ -4450,27 +4531,55 @@ KeepExpression KeepExpression() : { void windowFun(AnalyticExpression retval):{ - ExpressionList expressionList = null; - List olist = null; - WindowElement windowElement = null; - boolean partitionByBrackets = false; + ExpressionList expressionList = null; + boolean partitionByBrackets = false; + String windowName = null; + WindowDefinition winDef; } { - ([ { retval.setIgnoreNullsOutside(true); } ] {retval.setType(AnalyticType.OVER);} - | {retval.setType(AnalyticType.WITHIN_GROUP);} ) + ( + [ { retval.setIgnoreNullsOutside(true); } ] + {retval.setType(AnalyticType.OVER);} + | + {retval.setType(AnalyticType.WITHIN_GROUP);} + ) - "(" - [ - (LOOKAHEAD(ComplexExpressionList()) expressionList=ComplexExpressionList() - | "(" {partitionByBrackets = true;} expressionList=ComplexExpressionList() ")" ) + ( + windowName = RelObjectName() { retval.setWindowName(windowName); } + | + winDef = windowDefinition() { retval.setWindowDefinition(winDef); } + + [ + LOOKAHEAD(2) "(" + [ + (LOOKAHEAD(ComplexExpressionList()) expressionList=ComplexExpressionList() + | "(" {partitionByBrackets = true;} expressionList=ComplexExpressionList() ")" ) + ] + ")" { winDef.setPartitionExpressionList(expressionList, partitionByBrackets); retval.setType(AnalyticType.WITHIN_GROUP_OVER); } ] - [olist=OrderByElements() ] - [windowElement = WindowElement() ] - { - retval.setPartitionExpressionList(expressionList, partitionByBrackets); - retval.setOrderByElements(olist); - retval.setWindowElement(windowElement); - } + ) +} + +WindowDefinition windowDefinition() : { + ExpressionList expressionList = null; + List olist = null; + WindowElement windowElement = null; + boolean partitionByBrackets = false; + WindowDefinition winDef = new WindowDefinition(); +} { + "(" + [ + (LOOKAHEAD(ComplexExpressionList()) expressionList=ComplexExpressionList() + | "(" {partitionByBrackets = true;} expressionList=ComplexExpressionList() ")" ) + ] + [olist=OrderByElements() ] + [windowElement = WindowElement() ] + { + winDef.setPartitionExpressionList(expressionList, partitionByBrackets); + winDef.setOrderByElements(olist); + winDef.setWindowElement(windowElement); + } ")" + { return winDef; } } AnalyticExpression AnalyticExpression(Function function) : @@ -4605,6 +4714,30 @@ TryCastExpression TryCastExpression(): } } +SafeCastExpression SafeCastExpression(): +{ + SafeCastExpression retval = new SafeCastExpression(); + ColDataType type = null; + RowConstructor rowConstructor = null; + Expression expression = null; + boolean useCastKeyword; +} +{ + + "(" + expression=SimpleExpression() + { retval.setUseCastKeyword(true); } + ( + LOOKAHEAD(3) rowConstructor = RowConstructor() { retval.setRowConstructor(rowConstructor); } + | type=ColDataType() { retval.setType(type); } + ) + ")" + + { + retval.setLeftExpression(expression); + return retval; + } +} Expression CaseWhenExpression() #CaseWhenExpression: { CaseExpression caseExp = new CaseExpression(); @@ -4812,7 +4945,7 @@ Function InternalFunction(Function retval) : { funcName = RelObjectNameList() - "(" [ [ LOOKAHEAD(2)( { retval.setDistinct(true); } | { retval.setAllColumns(true); } | { retval.setUnique(true); }) ] + "(" [ LOOKAHEAD(2) [ LOOKAHEAD(2)( { retval.setDistinct(true); } | { retval.setAllColumns(true); } | { retval.setUnique(true); }) ] ( LOOKAHEAD(4) "*" { expr1 = new AllColumns(); expressionList = new ExpressionList(expr1).withUsingBrackets(false); } | @@ -4825,7 +4958,7 @@ Function InternalFunction(Function retval) : expr = SubSelect() { expr.setUseBrackets(false); expressionList = new ExpressionList(expr).withUsingBrackets(false); } )] - [ {retval.setIgnoreNulls(true); }] + [ {retval.setIgnoreNulls(true); }] ")" [ "." ( @@ -5105,6 +5238,7 @@ CreateTable CreateTable(): List parameter = new ArrayList(); List idxSpec = new ArrayList(); Table fkTable = null; + SpannerInterleaveIn interleaveIn = null; Select select = null; Table likeTable = null; CheckConstraint checkCs = null; @@ -5277,6 +5411,7 @@ CreateTable CreateTable(): ( LOOKAHEAD("(" Table() ")") "(" likeTable=Table() { createTable.setLikeTable(likeTable, true); } ")" | likeTable=Table() { createTable.setLikeTable(likeTable, false); } ) ] + [ interleaveIn = SpannerInterleaveIn( ) { createTable.setSpannerInterleaveIn(interleaveIn); } ] { createTable.setTable(table); if (indexes.size() > 0) @@ -5293,6 +5428,25 @@ CreateTable CreateTable(): } } +SpannerInterleaveIn SpannerInterleaveIn(): +{ + Table table = null; + SpannerInterleaveIn.OnDelete action = null; +} +{ + table = Table() + [ + + ( + { action = SpannerInterleaveIn.OnDelete.NO_ACTION; } + | { action = SpannerInterleaveIn.OnDelete.CASCADE; } + ) + ] + { + return new SpannerInterleaveIn(table, action); + } +} + ColDataType ColDataType(): { ColDataType colDataType = new ColDataType(); @@ -5301,13 +5455,25 @@ ColDataType ColDataType(): List argumentsStringList = new ArrayList(); List array = new ArrayList(); List name; + ColDataType arrayType; } { ( - (tk= | tk=) [tk2=] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); } - | tk= [LOOKAHEAD(2) tk2=] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); } + tk= ( + ("<" arrayType = ColDataType() ">") { + colDataType.setDataType("ARRAY<" + arrayType.getDataType() + ">"); + } + ) + | + LOOKAHEAD(2) ( + tk= "(" (tk2= | tk2=) ")" + | tk= "(" (tk2= | tk2=) ")" + | tk= "(" (tk2= | tk2=) ")" + ) { colDataType.setDataType(tk.image + " (" + tk2.image + ")"); } + | (tk= | tk=) [tk2=] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); } + | tk= [LOOKAHEAD(2) tk2=] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); } | ( tk= | tk= | tk= | tk= | tk= | tk= - | tk= | tk= | tk= | tk= | tk= ) + | tk= | tk= | tk= | tk= | tk= | tk= ) [ "." (tk2= | tk2=) ] { if (tk2!=null) colDataType.setDataType(tk.image + "." + tk2.image); else colDataType.setDataType(tk.image); } | tk= [LOOKAHEAD(2) tk2=] @@ -5349,6 +5515,7 @@ CreateView CreateView(): Table view = null; Select select = null; List columnNames = null; + Token tk = null; } { @@ -5363,6 +5530,8 @@ CreateView CreateView(): ] [ { createView.setMaterialized(true);} ] view=Table() { createView.setView(view); } + [LOOKAHEAD(3) (tk= | tk=) { createView.setAutoRefresh(AutoRefreshOption.valueOf(tk.image)); } ] + [LOOKAHEAD(3) {createView.setIfNotExists(true);}] [ columnNames = ColumnsNamesList() { createView.setColumnNames(columnNames); } ] select=SelectWithWithItems( ) { createView.setSelect(select); } @@ -5446,7 +5615,13 @@ List CreateParameter(): ) { param.add(retval); } | - tk= { param.add(tk.image); } + tk= ( + ("(" exp = Expression() ")") { param.add("AS"); param.add("(" + exp.toString() + ")");} + | + { param.add(tk.image);} + ) + | + tk= { param.add(tk.image); } | tk= { param.add(tk.image); } | @@ -5638,13 +5813,17 @@ Drop Drop(): Table name; List dropArgs = new ArrayList(); List funcArgs = null; + boolean useTemporary = false; } { + [ { drop.setMaterialized(true);} ] ( tk= | - tk= + ( + [ {useTemporary=true;} ] tk= + ) | tk= | @@ -5662,7 +5841,7 @@ Drop Drop(): name = Table() { drop.setName(name); } [ funcArgs = FuncArgsList() ] - ((tk= | tk= | tk= ) { dropArgs.add(tk.image); })* + ((tk= | tk= | tk= | tk=) { dropArgs.add(tk.image); })* { if (dropArgs.size() > 0) { @@ -5672,6 +5851,8 @@ Drop Drop(): drop.getTypeToParameters().put("FUNCTION", funcArgs); } + drop.setUsingTemporary(useTemporary); + return drop; } } @@ -5813,155 +5994,179 @@ AlterExpression AlterExpression(): { ( - (( { alterExp.setOperation(AlterOperation.ADD); } | { alterExp.setOperation(AlterOperation.ALTER); } | { alterExp.setOperation(AlterOperation.MODIFY); }) ( - LOOKAHEAD(2) ( - columnNames=ColumnsNamesList() { alterExp.setPkColumns(columnNames); } - ) constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } - [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }] - | - LOOKAHEAD(2) ( - (tk= { alterExp.setUk(true); } | tk=) - sk3 = RelObjectName() - columnNames = ColumnsNamesList() - { - index = new Index().withType(tk.image).withName(sk3).withColumnsNames(columnNames); - alterExp.setIndex(index); - } - constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } - [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }] - ) - | - LOOKAHEAD(3) ( - ( LOOKAHEAD(2) { alterExp.hasColumn(true); } )? - - ( - LOOKAHEAD(2) alterExpressionColumnDataType = AlterExpressionColumnDataType() { - alterExp.addColDataType(alterExpressionColumnDataType); - } - | - LOOKAHEAD(3) alterExpressionColumnDropNotNull = AlterExpressionColumnDropNotNull() { - alterExp.addColDropNotNull( alterExpressionColumnDropNotNull); - } - | - alterExpressionColumnDropDefault = AlterExpressionColumnDropDefault() { - alterExp.addColDropDefault( alterExpressionColumnDropDefault); - } - ) - ) - | ( - "(" alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); } - ("," alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); } )* ")" - ) - | - ( (( { alterExp.setUk(true); } | ) (tk= | tk=) { alterExp.setUkName(tk.image); } )? - columnNames=ColumnsNamesList() { alterExp.setUkColumns(columnNames); } - [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]) - | - //following two choices regarding foreign keys should be merged - ( columnNames=ColumnsNamesList() { alterExp.setFkColumns(columnNames); columnNames = null; } - /* - tk= [ columnNames=ColumnsNamesList() ] - { alterExp.setFkSourceTable(tk.image); alterExp.setFkSourceColumns(columnNames); } - */ - fkTable=Table() [ columnNames=ColumnsNamesList() ] - { - alterExp.setFkSourceSchema(fkTable.getSchemaName()); - alterExp.setFkSourceTable(fkTable.getName()); - alterExp.setFkSourceColumns(columnNames); - } - - [LOOKAHEAD(2) ( (tk= | tk=) action = Action() - { alterExp.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); } - )] - [LOOKAHEAD(2) ( (tk= | tk=) action = Action() - { alterExp.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); } - )] + { alterExp.setOperation(AlterOperation.ADD); } + | + { alterExp.setOperation(AlterOperation.ALTER); } + | + { alterExp.setOperation(AlterOperation.MODIFY); } ) - | + ( - sk3=RelObjectName() - - ( ( tk= tk2= - columnNames=ColumnsNamesList() - { - fkIndex = new ForeignKeyIndex() - .withName(sk3) - .withType(tk.image + " " + tk2.image) - .withColumnsNames(columnNames); - columnNames = null; - } - fkTable=Table() [ columnNames=ColumnsNamesList() ] - { - fkIndex.withTable(fkTable).withReferencedColumnNames(columnNames); - alterExp.setIndex(fkIndex); - } - - [LOOKAHEAD(2) ( (tk= | tk=) action = Action() - { fkIndex.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); } - )] - [LOOKAHEAD(2) ( (tk= | tk=) action = Action() - { fkIndex.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); } - )] - constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } + LOOKAHEAD(2) ( + columnNames=ColumnsNamesList() { alterExp.setPkColumns(columnNames); } ) + + constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } + [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }] | - ( tk= tk2= - columnNames=ColumnsNamesList() - { - index = new NamedConstraint() - .withName(sk3) - .withType(tk.image + " " + tk2.image) - .withColumnsNames(columnNames); - alterExp.setIndex(index); - } - constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } - [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }] + LOOKAHEAD(2) ( + (tk= { alterExp.setUk(true); } | tk=) + sk3 = RelObjectName() + columnNames = ColumnsNamesList() + { + index = new Index().withType(tk.image).withName(sk3).withColumnsNames(columnNames); + alterExp.setIndex(index); + } + constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } + [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }] + ) + | + LOOKAHEAD(3) ( + ( LOOKAHEAD(2) { alterExp.hasColumn(true); } )? + + ( + LOOKAHEAD(4) ( + "(" { alterExp.useBrackets(true);} + alterExpressionColumnDataType = AlterExpressionColumnDataType() { + alterExp.addColDataType(alterExpressionColumnDataType); + } + ( + "," + alterExpressionColumnDataType = AlterExpressionColumnDataType() { + alterExp.addColDataType(alterExpressionColumnDataType); + } + )* + ")" + ) + | + LOOKAHEAD(2) alterExpressionColumnDataType = AlterExpressionColumnDataType() { + alterExp.addColDataType(alterExpressionColumnDataType); + } + | + LOOKAHEAD(3) alterExpressionColumnDropNotNull = AlterExpressionColumnDropNotNull() { + alterExp.addColDropNotNull( alterExpressionColumnDropNotNull); + } + | + alterExpressionColumnDropDefault = AlterExpressionColumnDropDefault() { + alterExp.addColDropDefault( alterExpressionColumnDropDefault); + } + ) ) | ( - {Expression exp = null;} ("(" exp = Expression() ")")* { - CheckConstraint checkCs = new CheckConstraint().withName(sk3).withExpression(exp); - alterExp.setIndex(checkCs); - } + "(" alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); } + ("," alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); } )* ")" + ) + | + ( (( { alterExp.setUk(true); } | ) (tk= | tk=) { alterExp.setUkName(tk.image); } )? + columnNames=ColumnsNamesList() { alterExp.setUkColumns(columnNames); } + [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }]) + | + //following two choices regarding foreign keys should be merged + ( columnNames=ColumnsNamesList() { alterExp.setFkColumns(columnNames); columnNames = null; } + /* + tk= [ columnNames=ColumnsNamesList() ] + { alterExp.setFkSourceTable(tk.image); alterExp.setFkSourceColumns(columnNames); } + */ + fkTable=Table() [ columnNames=ColumnsNamesList() ] + { + alterExp.setFkSourceSchema(fkTable.getSchemaName()); + alterExp.setFkSourceTable(fkTable.getName()); + alterExp.setFkSourceColumns(columnNames); + } + + [LOOKAHEAD(2) ( (tk= | tk=) action = Action() + { alterExp.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); } + )] + [LOOKAHEAD(2) ( (tk= | tk=) action = Action() + { alterExp.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); } + )] ) | ( - tk= (tk2= { alterExp.setUk(true); } | tk2=)? - columnNames=ColumnsNamesList() - { - index = new NamedConstraint() + sk3=RelObjectName() + + ( ( tk= tk2= + columnNames=ColumnsNamesList() + { + fkIndex = new ForeignKeyIndex() .withName(sk3) - .withType(tk.image + (tk2!=null?" " + tk2.image:"")) - .withColumnsNames(columnNames); - alterExp.setIndex(index); - } - constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } - [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }] + .withType(tk.image + " " + tk2.image) + .withColumnsNames(columnNames); + columnNames = null; + } + fkTable=Table() [ columnNames=ColumnsNamesList() ] + { + fkIndex.withTable(fkTable).withReferencedColumnNames(columnNames); + alterExp.setIndex(fkIndex); + } + + [LOOKAHEAD(2) ( (tk= | tk=) action = Action() + { fkIndex.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); } + )] + [LOOKAHEAD(2) ( (tk= | tk=) action = Action() + { fkIndex.setReferentialAction(ReferentialAction.Type.valueOf(tk.image), action); } + )] + constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } + ) + | + ( tk= tk2= + columnNames=ColumnsNamesList() + { + index = new NamedConstraint() + .withName(sk3) + .withType(tk.image + " " + tk2.image) + .withColumnsNames(columnNames); + alterExp.setIndex(index); + } + constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } + [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }] + ) + | + ( + {Expression exp = null;} ("(" exp = Expression() ")")* { + CheckConstraint checkCs = new CheckConstraint().withName(sk3).withExpression(exp); + alterExp.setIndex(checkCs); + } + ) + | + ( + tk= (tk2= { alterExp.setUk(true); } | tk2=)? + columnNames=ColumnsNamesList() + { + index = new NamedConstraint() + .withName(sk3) + .withType(tk.image + (tk2!=null?" " + tk2.image:"")) + .withColumnsNames(columnNames); + alterExp.setIndex(index); + } + constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } + [ sk4=RelObjectName() { alterExp.addParameters("USING", sk4); }] + ) + | + ( + tk= + columnNames=ColumnsNamesList() + { + index = new NamedConstraint() + .withName(sk3) + .withType(tk.image) + .withColumnsNames(columnNames); + alterExp.setIndex(index); + } + constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } + ) + ) ) | - ( - tk= - columnNames=ColumnsNamesList() - { - index = new NamedConstraint() - .withName(sk3) - .withType(tk.image) - .withColumnsNames(columnNames); - alterExp.setIndex(index); - } - constraints=AlterExpressionConstraintState() { alterExp.setConstraints(constraints); } + ( sk3=RelObjectName() + tk= { + alterExp.withColumnName(sk3).withCommentText(tk.image); + } ) - ) - ) - | - ( sk3=RelObjectName() - tk= { - alterExp.withColumnName(sk3).withCommentText(tk.image); - } - ) - ) + ) ) | ( @@ -6063,7 +6268,7 @@ AlterExpression AlterExpression(): int i=0; for (String s: tokens) - if (!s.equals(";")) { + if (! (s.equals(";") || s.equals("\n\n\n")) ) { if (i>0) optionalSpecifier.append( " " ); optionalSpecifier.append( s ); @@ -6214,7 +6419,7 @@ AlterSystemStatement AlterSystemStatement(): "DISCONNECT" "SESSION" { operation = AlterSystemOperation.DISCONNECT_SESSION; } ) | - ( + ( "KILL SESSION" { operation = AlterSystemOperation.KILL_SESSION; } ) | diff --git a/src/main/resources/rr/xhtml2rst.xsl b/src/main/resources/rr/xhtml2rst.xsl new file mode 100644 index 000000000..621ca66f6 --- /dev/null +++ b/src/main/resources/rr/xhtml2rst.xsl @@ -0,0 +1,105 @@ + + + + + + + + + + + + + +******************** +Supported SQL Syntax +******************** + +The EBNF and Railroad Diagrams for JSQLParser-|JSQLPARSER_VERSION|. + + + + + + + +====================================================================================================================== + + + +====================================================================================================================== + + + + +.. raw:: html + + + + + + + + + + + + + +
+ + + +
+ + + + Referenced by: +
    + +
+
+ + Not referenced by any. + +
+
+
+ + + + + +
+ + +

  • + + + + + + + + + +
  • + + diff --git a/src/site/sphinx/_images/JavaAST.png b/src/site/sphinx/_images/JavaAST.png new file mode 100644 index 000000000..30428c551 Binary files /dev/null and b/src/site/sphinx/_images/JavaAST.png differ diff --git a/src/site/sphinx/_images/favicon.svg b/src/site/sphinx/_images/favicon.svg new file mode 100644 index 000000000..5a86c120b --- /dev/null +++ b/src/site/sphinx/_images/favicon.svg @@ -0,0 +1,171 @@ + + + + + + + + + + + + + diff --git a/src/site/sphinx/_images/logo-no-background.svg b/src/site/sphinx/_images/logo-no-background.svg new file mode 100644 index 000000000..3289bc15e --- /dev/null +++ b/src/site/sphinx/_images/logo-no-background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/site/sphinx/_static/pygments.css b/src/site/sphinx/_static/pygments.css new file mode 100644 index 000000000..8a76dc576 --- /dev/null +++ b/src/site/sphinx/_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/src/site/sphinx/_static/svg.css b/src/site/sphinx/_static/svg.css new file mode 100644 index 000000000..919a09e2a --- /dev/null +++ b/src/site/sphinx/_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/src/site/sphinx/_static/tabs.css b/src/site/sphinx/_static/tabs.css new file mode 100644 index 000000000..371024886 --- /dev/null +++ b/src/site/sphinx/_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/src/site/sphinx/changelog.rst b/src/site/sphinx/changelog.rst new file mode 100644 index 000000000..899d66cdd --- /dev/null +++ b/src/site/sphinx/changelog.rst @@ -0,0 +1,786 @@ + +************************ +Changelog +************************ + + +Latest Changes since |JSQLPARSER_VERSION| +============================================================= + + +* **doc: Better integration of the RR diagrams** + + Andreas Reichel, 2023-01-21 +* **feat: make important Classes Serializable** + + Andreas Reichel, 2023-01-21 +* **chore: Make Serializable** + + Andreas Reichel, 2023-01-21 +* **doc: request for `Conventional Commit` messages** + + Andreas Reichel, 2023-01-21 +* **Sphinx Documentation** + + Andreas Reichel, 2023-01-21 +* **Define Reserved Keywords explicitly** + + Andreas Reichel, 2023-01-21 +* **Adjust Gradle to JUnit 5** + + Andreas Reichel, 2023-01-21 +* **Enhanced Keywords** + + Andreas Reichel, 2023-01-21 +* **Remove unused imports** + + Andreas Reichel, 2023-01-21 +* **Fix test resources** + + Andreas Reichel, 2023-01-21 +* **Do not mark SpeedTest for concurrent execution** + + Andreas Reichel, 2023-01-21 +* **Fix incorrect tests** + + Andreas Reichel, 2023-01-21 +* **Remove unused imports** + + Andreas Reichel, 2023-01-21 +* **Adjust Gradle to JUnit 5** + + Andreas Reichel, 2023-01-21 +* **Do not mark SpeedTest for concurrent execution** + + Andreas Reichel, 2023-01-21 +* **Sphinx Website (#1624)** + + manticore-projects, 2023-01-20 +* **Assorted Fixes #5 (#1715)** + + manticore-projects, 2023-01-20 +* **Support DROP MATERIALIZED VIEW statements (#1711)** + + Tomasz Zarna, 2023-01-12 +* **corrected readme** + + Tobias Warneke, 2023-01-04 +* **Update README.md** + + Tobias, 2022-12-27 +* **Fix #1686: add support for creating views with "IF NOT EXISTS" clause (#1690)** + + Tomasz Zarna, 2022-12-22 +* **Assorted Fixes #4 (#1676)** + + manticore-projects, 2022-12-22 +* **Fixed download war script in the renderRR task (#1659)** + + haha1903, 2022-12-10 +* **Assorted fixes (#1666)** + + manticore-projects, 2022-11-20 +* **Fix parsing statements with multidimensional array PR2 (#1665)** + + manticore-projects, 2022-11-20 +* **removed disabled from Keyword tests and imports** + + Tobias Warneke, 2022-11-02 +* **removed disabled from Keyword tests** + + Tobias Warneke, 2022-11-02 +* **Keywords2: Update whitelisted Keywords (#1653)** + + manticore-projects, 2022-11-02 +* **Enhanced Keywords (#1382)** + + manticore-projects, 2022-10-25 +* **#1610 Support for SKIP LOCKED tokens on SELECT statements (#1649)** + + Lucas Dillmann, 2022-10-25 +* **Assorted fixes (#1646)** + + manticore-projects, 2022-10-16 +* **actualized multiple dependencies** + + Tobias Warneke, 2022-09-28 +* **Bump h2 from 1.4.200 to 2.1.210 (#1639)** + + dependabot[bot], 2022-09-28 +* **Support BigQuery SAFE_CAST (#1622) (#1634)** + + dequn, 2022-09-20 +* **fix: add missing public Getter (#1632)** + + manticore-projects, 2022-09-20 +* **Support timestamptz dateliteral (#1621)** + + Todd Pollak, 2022-08-31 +* **fixes #1617** + + Tobias Warneke, 2022-08-31 +* **fixes #419** + + Tobias Warneke, 2022-08-31 +* **Closes #1604, added simple OVERLAPS support (#1611)** + + Rob Audenaerde, 2022-08-16 +* **Fixes PR #1524 support hive alter sql (#1609)** + + manticore-projects, 2022-08-14 +* **#1524 support hive alter sql : ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...]) (#1605)** + + Zhumin-lv-wn, 2022-08-03 +* **fixes #1581** + + Tobias Warneke, 2022-07-25 +* **Using own Feature - constant for "delete with returning" #1597 (#1598)** + + gitmotte, 2022-07-25 +* **[maven-release-plugin] prepare for next development iteration** + + Tobias Warneke, 2022-07-22 + +Version jsqlparser-4.5 +============================================================= + + +* **[maven-release-plugin] prepare release jsqlparser-4.5** + + Tobias Warneke, 2022-07-22 +* **introduced changelog generator** + + Tobias Warneke, 2022-07-22 +* **fixes #1596** + + Tobias Warneke, 2022-07-22 +* **integrated test for #1595** + + Tobias Warneke, 2022-07-19 +* **reduced time to parse exception to minimize impact on building time** + + Tobias Warneke, 2022-07-19 +* **add support for drop column if exists (#1594)** + + rrrship, 2022-07-19 +* **PostgreSQL INSERT ... ON CONFLICT Issue #1551 (#1552)** + + manticore-projects, 2022-07-19 +* **Configurable Parser Timeout via Feature (#1592)** + + manticore-projects, 2022-07-19 +* **fixes #1590** + + Tobias Warneke, 2022-07-19 +* **fixes #1590** + + Tobias Warneke, 2022-07-19 +* **extended support Postgres' `Extract( field FROM source)` where `field` is a String instead of a Keyword (#1591)** + + manticore-projects, 2022-07-19 +* **Closes #1579. Added ANALYZE support. (#1587)** + + Rob Audenaerde, 2022-07-14 +* **Closes #1583:: Implement Postgresql optional TABLE in TRUNCATE (#1585)** + + Rob Audenaerde, 2022-07-14 +* **Support table option character set and index options (#1586)** + + luofei, 2022-07-14 +* **corrected a last minute bug** + + Tobias Warneke, 2022-07-09 +* **corrected a last minute bug** + + Tobias Warneke, 2022-07-09 +* **corrected a last minute bug** + + Tobias Warneke, 2022-07-09 +* **fixes #1576** + + Tobias Warneke, 2022-07-09 +* **added simple test for #1580** + + Tobias Warneke, 2022-07-07 +* **disabled test for large cnf expansion and stack overflow problem** + + Tobias Warneke, 2022-07-07 +* **Add test for LikeExpression.setEscape and LikeExpression.getStringExpression (#1568)** + + Caro, 2022-07-07 +* **add support for postgres drop function statement (#1557)** + + rrrship, 2022-07-06 +* **Add support for Hive dialect GROUPING SETS. (#1539)** + + chenwl, 2022-07-06 +* **fixes #1566** + + Tobias Warneke, 2022-06-28 +* **Postgres NATURAL LEFT/RIGHT joins (#1560)** + + manticore-projects, 2022-06-28 +* **compound statement tests (#1545)** + + Matthew Rathbone, 2022-06-08 +* **Allow isolation keywords as column name and aliases (#1534)** + + Tomer Shay (Shimshi), 2022-05-19 +* **added github action badge** + + Tobias, 2022-05-16 +* **Create maven.yml** + + Tobias, 2022-05-16 +* **introduced deparser and toString correction for insert output clause** + + Tobias Warneke, 2022-05-15 +* **revived compilable status after merge** + + Tobias Warneke, 2022-05-15 +* **INSERT with SetOperations (#1531)** + + manticore-projects, 2022-05-15 +* **#1516 rename without column keyword (#1533)** + + manticore-projects, 2022-05-11 +* **Add support for `... ALTER COLUMN ... DROP DEFAULT` (#1532)** + + manticore-projects, 2022-05-11 +* **#1527 DELETE ... RETURNING ... (#1528)** + + manticore-projects, 2022-05-11 +* **fixs #1520 (#1521)** + + chiangcho, 2022-05-11 +* **Unsupported statement (#1519)** + + manticore-projects, 2022-05-11 +* **fixes #1518** + + Tobias Warneke, 2022-04-26 +* **Update bug_report.md (#1512)** + + manticore-projects, 2022-04-22 +* **changed to allow #1481** + + Tobias Warneke, 2022-04-22 +* **Performance Improvements (#1439)** + + manticore-projects, 2022-04-14 +* **[maven-release-plugin] prepare for next development iteration** + + Tobias Warneke, 2022-04-10 + +Version jsqlparser-4.4 +============================================================= + + +* **[maven-release-plugin] prepare release jsqlparser-4.4** + + Tobias Warneke, 2022-04-10 +* **Json function Improvements (#1506)** + + manticore-projects, 2022-04-09 +* **fixes #1505** + + Tobias Warneke, 2022-04-09 +* **fixes #1502** + + Tobias Warneke, 2022-04-09 +* **Issue1500 - Circular References in `AllColumns` and `AllTableColumns` (#1501)** + + manticore-projects, 2022-04-03 +* **Optimize assertCanBeParsedAndDeparsed (#1389)** + + manticore-projects, 2022-04-02 +* **Add geometry distance operator (#1493)** + + Thomas Powell, 2022-04-02 +* **Support WITH TIES option in TOP #1435 (#1479)** + + Olivier Cavadenti, 2022-04-02 +* **https://github.com/JSQLParser/JSqlParser/issues/1483 (#1485)** + + gitmotte, 2022-04-02 +* **fixes #1482** + + Tobias Warneke, 2022-03-15 +* **fixes #1482** + + Tobias Warneke, 2022-03-15 +* **Extending CaseExpression, covering #1458 (#1459)** + + Mathieu Goeminne, 2022-03-15 +* **fixes #1471** + + Tobias Warneke, 2022-02-18 +* **fixes #1471** + + Tobias Warneke, 2022-02-18 +* **fixes #1470** + + Tobias Warneke, 2022-02-06 +* **Add support for IS DISTINCT FROM clause (#1457)** + + Tomer Shay (Shimshi), 2022-01-18 +* **fix fetch present in the end of union query (#1456)** + + chiangcho, 2022-01-18 +* **added SQL_CACHE implementation and changed** + + Tobias Warneke, 2022-01-09 +* **support for db2 with ru (#1446)** + + chiangcho, 2021-12-20 +* **[maven-release-plugin] prepare for next development iteration** + + Tobias Warneke, 2021-12-12 + +Version jsqlparser-4.3 +============================================================= + + +* **[maven-release-plugin] prepare release jsqlparser-4.3** + + Tobias Warneke, 2021-12-12 +* **updated readme.md to show all changes for version 4.3** + + Tobias Warneke, 2021-12-12 +* **Adjust Gradle to JUnit 5 (#1428)** + + manticore-projects, 2021-11-28 +* **corrected some maven plugin versions** + + Tobias Warneke, 2021-11-28 +* **fixes #1429** + + Tobias Warneke, 2021-11-23 +* **closes #1427** + + Tobias Warneke, 2021-11-21 +* **CreateTableTest** + + Tobias Warneke, 2021-11-21 +* **Support EMIT CHANGES for KSQL (#1426)** + + Olivier Cavadenti, 2021-11-21 +* **SelectTest.testMultiPartColumnNameWithDatabaseNameAndSchemaName** + + Tobias Warneke, 2021-11-21 +* **reformatted test source code** + + Tobias Warneke, 2021-11-21 +* **organize imports** + + Tobias Warneke, 2021-11-21 +* **replaced all junit 3 and 4 with junit 5 stuff** + + Tobias Warneke, 2021-11-21 +* **Support RESTART without value (#1425)** + + Olivier Cavadenti, 2021-11-20 +* **Add support for oracle UnPivot when use multi columns at once. (#1419)** + + LeiJun, 2021-11-19 +* **Fix issue in parsing TRY_CAST() function (#1391)** + + Prashant Sutar, 2021-11-19 +* **fixes #1414** + + Tobias Warneke, 2021-11-19 +* **Add support for expressions (such as columns) in AT TIME ZONE expressions (#1413)** + + Tomer Shay (Shimshi), 2021-11-19 +* **Add supported for quoted cast expressions for PostgreSQL (#1411)** + + Tomer Shay (Shimshi), 2021-11-19 +* **added USE SCHEMA and CREATE OR REPLACE
    support; things that are allowed in Snowflake SQL (#1409)** + + Richard Kooijman, 2021-11-19 +* **Issue #420 Like Expression with Escape Expression (#1406)** + + manticore-projects, 2021-11-19 +* **fixes #1405 and some junit.jupiter stuff** + + Tobias Warneke, 2021-11-19 +* **#1401 add junit-jupiter-api (#1403)** + + gitmotte, 2021-11-19 +* **Support Postgres Dollar Quotes #1372 (#1395)** + + Olivier Cavadenti, 2021-11-19 +* **Add Delete / Update modifiers for MySQL #1254 (#1396)** + + Olivier Cavadenti, 2021-11-19 +* **Fixes #1381 (#1383)** + + manticore-projects, 2021-11-19 +* **Allows CASE ... ELSE ComplexExpression (#1388)** + + manticore-projects, 2021-11-02 +* **IN() with complex expressions (#1384)** + + manticore-projects, 2021-11-01 +* **Fixes #1385 and PR#1380 (#1386)** + + manticore-projects, 2021-10-22 +* **Fixes #1369 (#1370)** + + Ben Grabham, 2021-10-20 +* **Fixes #1371 (#1377)** + + manticore-projects, 2021-10-20 +* **LIMIT OFFSET with Expressions (#1378)** + + manticore-projects, 2021-10-20 +* **Oracle Multi Column Drop (#1379)** + + manticore-projects, 2021-10-20 +* **Support alias for UnPivot statement (see discussion #1374) (#1380)** + + fabriziodelfranco, 2021-10-20 +* **Issue1352 (#1353)** + + manticore-projects, 2021-10-09 +* **Enhance ALTER TABLE ... DROP CONSTRAINTS ... (#1351)** + + manticore-projects, 2021-10-08 +* **Function to use AllColumns or AllTableColumns Expression (#1350)** + + manticore-projects, 2021-10-08 +* **Postgres compliant ALTER TABLE ... RENAME TO ... (#1334)** + + manticore-projects, 2021-09-18 +* **Postgres compliant ALTER TABLE ... RENAME TO ... (#1334)** + + manticore-projects, 2021-09-18 +* **corrected readme to the new snapshot version** + + Tobias Warneke, 2021-09-08 +* **[maven-release-plugin] prepare for next development iteration** + + Tobias Warneke, 2021-09-08 + +Version jsqlparser-4.2 +============================================================= + + +* **[maven-release-plugin] prepare release jsqlparser-4.2** + + Tobias Warneke, 2021-09-08 +* **introducing test for issue #1328** + + Tobias Warneke, 2021-09-07 +* **included some distinct check** + + Tobias Warneke, 2021-09-07 +* **corrected a merge bug** + + Tobias Warneke, 2021-09-07 +* **Prepare4.2 (#1329)** + + manticore-projects, 2021-09-07 +* **CREATE TABLE AS (...) UNION (...) fails (#1309)** + + François Sécherre, 2021-09-07 +* **Fixes #1325 (#1327)** + + manticore-projects, 2021-09-06 +* **Implement Joins with multiple trailing ON Expressions (#1303)** + + manticore-projects, 2021-09-06 +* **Fix Gradle PMD and Checkstyle (#1318)** + + manticore-projects, 2021-09-01 +* **Fixes #1306 (#1311)** + + manticore-projects, 2021-08-28 +* **Update sets (#1317)** + + manticore-projects, 2021-08-27 +* **Special oracle tests (#1279)** + + manticore-projects, 2021-08-09 +* **Implements Hierarchical CONNECT_BY_ROOT Operator (#1282)** + + manticore-projects, 2021-08-09 +* **Implement Transact-SQL IF ELSE Statement Control Flows. (#1275)** + + manticore-projects, 2021-08-09 +* **Add some flexibility to the Alter Statement (#1293)** + + manticore-projects, 2021-08-02 +* **Implement Oracle's Alter System (#1288)** + + manticore-projects, 2021-08-02 +* **Implement Oracle Named Function Parameters Func( param1 => arg1, ...) (#1283)** + + manticore-projects, 2021-08-02 +* **Implement Gradle Buildsystem (#1271)** + + manticore-projects, 2021-08-02 +* **fixes #1272** + + Tobias Warneke, 2021-07-26 +* **Allowes JdbcParameter or JdbcNamedParameter for MySQL FullTextSearch (#1278)** + + manticore-projects, 2021-07-26 +* **Fixes #1267 Cast into RowConstructor (#1274)** + + manticore-projects, 2021-07-26 +* **Separate MySQL Special String Functions accepting Named Argument Separation as this could collide with ComplexExpressionList when InExpression is involved (#1285)** + + manticore-projects, 2021-07-26 +* **Implements Oracle RENAME oldTable TO newTable Statement (#1286)** + + manticore-projects, 2021-07-26 +* **Implement Oracle Purge Statement (#1287)** + + manticore-projects, 2021-07-26 +* **included jacoco to allow code coverage for netbeans** + + Tobias Warneke, 2021-07-18 +* **corrected a Lookahead problem** + + Tobias Warneke, 2021-07-16 +* **Json functions (#1263)** + + manticore-projects, 2021-07-16 +* **fixes #1255** + + Tobias Warneke, 2021-07-16 +* **Active JJDoc and let it create the Grammar BNF documentation (#1256)** + + manticore-projects, 2021-07-16 +* **Bump commons-io from 2.6 to 2.7 (#1265)** + + dependabot[bot], 2021-07-14 +* **Update README.md** + + Tobias, 2021-07-13 +* **Implement DB2 Special Register Date Time CURRENT DATE and CURRENT TIME (#1252)** + + manticore-projects, 2021-07-13 +* **Rename the PMD ruleset configuration file hoping for automatic synchronization with Codacy (#1251)** + + manticore-projects, 2021-07-13 +* **corrected .travis.yml** + + Tobias Warneke, 2021-07-05 +* **corrected .travis.yml** + + Tobias Warneke, 2021-07-05 +* **Update README.md** + + Tobias, 2021-07-05 +* **fixes #1250** + + Tobias Warneke, 2021-07-01 +* **[maven-release-plugin] prepare for next development iteration** + + Tobias Warneke, 2021-06-30 + +Version jsqlparser-4.1 +============================================================= + + +* **[maven-release-plugin] prepare release jsqlparser-4.1** + + Tobias Warneke, 2021-06-30 +* **fixes #1140** + + Tobias Warneke, 2021-06-30 +* **introduced #1248 halfway** + + Tobias Warneke, 2021-06-30 +* **Savepoint rollback (#1236)** + + manticore-projects, 2021-06-30 +* **Fixes Function Parameter List Brackets issue #1239 (#1240)** + + manticore-projects, 2021-06-30 +* **corrected javadoc problem** + + Tobias Warneke, 2021-06-27 +* **corrected some lookahead problem** + + Tobias Warneke, 2021-06-26 +* **RESET statement, SET PostgreSQL compatibility (#1104)** + + Роман Зотов, 2021-06-26 +* **corrected some lookahead problem** + + Tobias Warneke, 2021-06-26 +* **Implement Oracle Alter Session Statements (#1234)** + + manticore-projects, 2021-06-26 +* **fixes #1230** + + Tobias Warneke, 2021-06-26 +* **Support DELETE FROM T1 USING T2 WHERE ... (#1228)** + + francois-secherre, 2021-06-16 +* **Row access support (#1181)** + + Роман Зотов, 2021-06-16 +* **corrected lookahead problem of PR #1225** + + Tobias Warneke, 2021-06-14 +* **Delete queries without from, with a schema identifier fails (#1224)** + + François Sécherre, 2021-06-14 +* **Create temporary table t(c1, c2) as select ... (#1225)** + + francois-secherre, 2021-06-14 +* **Nested with items (#1221)** + + manticore-projects, 2021-06-10 +* **Implement GROUP BY () without columns (#1218)** + + manticore-projects, 2021-06-03 +* **TSQL Compliant NEXT VALUE FOR sequence_id (but keeping the spurious NEXTVAL FOR expression) (#1216)** + + manticore-projects, 2021-06-02 +* **Pmd clean up (#1215)** + + manticore-projects, 2021-06-02 +* **Add support for boolean 'XOR' operator (#1193)** + + Adaptive Recognition, 2021-06-02 +* **Update README.md** + + Tobias, 2021-05-31 +* **Implement WITH for DELETE, UPDATE and MERGE statements (#1217)** + + manticore-projects, 2021-05-31 +* **increases complex scanning range** + + Tobias Warneke, 2021-05-26 +* **Allow Complex Parsing of Functions (#1200)** + + manticore-projects, 2021-05-26 +* **Add support for AT TIME ZONE expressions (#1196)** + + Tomer Shay (Shimshi), 2021-05-25 +* **fixes #1211** + + Tobias Warneke, 2021-05-25 +* **fixes #1212** + + Tobias Warneke, 2021-05-25 +* **Fix Nested CASE WHEN performance, fixes issue #1162 (#1208)** + + manticore-projects, 2021-05-25 +* **Add support for casts in json expressions (#1189)** + + Tomer Shay (Shimshi), 2021-05-10 +* **fixes #1185** + + Tobias Warneke, 2021-05-04 +* **supporting/fixing unique inside sql function such as count eg - SELECT count(UNIQUE col2) FROM mytable (#1184)** + + RajaSudharsan Adhikesavan, 2021-05-01 +* **Oracle compliant ALTER TABLE ADD/MODIFY deparser (#1163)** + + manticore-projects, 2021-04-21 +* **Pmd (#1165)** + + manticore-projects, 2021-04-20 +* **function order by support (#1108)** + + Роман Зотов, 2021-04-20 +* **fixes #1159** + + Tobias Warneke, 2021-04-16 +* **added improvements of pr to readme** + + Tobias Warneke, 2021-04-16 +* **Assorted fixes to the Java CC Parser definition (#1153)** + + manticore-projects, 2021-04-16 +* **fixes #1138** + + Tobias Warneke, 2021-04-10 +* **fixes #1138** + + Tobias Warneke, 2021-04-10 +* **fixes #1137** + + Tobias Warneke, 2021-04-10 +* **fixes #1136** + + Tobias Warneke, 2021-04-10 +* **issue #1134 adressed** + + Tobias Warneke, 2021-03-20 +* **Add support for union_with_brackets_and_orderby (#1131)** + + Tomer Shay (Shimshi), 2021-03-14 +* **Add support for union without brackets and with limit (#1132)** + + Tomer Shay (Shimshi), 2021-03-14 +* **Add support for functions in an interval expression (#1099)** + + Tomer Shay (Shimshi), 2021-03-14 +* **subArray support arr[1:3] (#1109)** + + Роман Зотов, 2021-02-05 +* **bug fix (#769)** + + Kunal jha, 2021-02-05 +* **Array contructor support (#1105)** + + Роман Зотов, 2021-02-04 +* **Partial support construct tuple as simple expression (#1107)** + + Роман Зотов, 2021-01-31 +* **support create table parameters without columns, parameter values any names (#1106)** + + Роман Зотов, 2021-01-31 +* **fixes #995** + + Tobias Warneke, 2021-01-13 +* **fixes #1100** + + Tobias Warneke, 2021-01-13 +* **next correction of parenthesis around unions** + + Tobias Warneke, 2021-01-11 +* **fixes #992** + + Tobias Warneke, 2021-01-07 +* **corrected patch for case as table name** + + Tobias Warneke, 2021-01-07 +* **Added support for the Case keyword in table names (#1093)** + + Tomer Shay (Shimshi), 2021-01-07 +* **corrected some javadoc parameter** + + Tobias Warneke, 2021-01-03 +* **added missing pivot test files** + + Tobias Warneke, 2021-01-03 +* **fixes #282 - first refactoring to allow with clause as a start in insert and update** + + Tobias Warneke, 2021-01-02 +* **fixes #282 - first refactoring to allow with clause as a start in insert and update** + + Tobias Warneke, 2021-01-02 +* **Update README.md** + + Tobias, 2021-01-02 +* **fixes #887** + + Tobias Warneke, 2021-01-02 +* **fixes #1091 - added H2 casewhen function with conditional parameters** + + Tobias Warneke, 2021-01-01 +* **fixes #1091 - added H2 casewhen function with conditional parameters** + + Tobias Warneke, 2021-01-01 +* **[maven-release-plugin] prepare for next development iteration** + + Tobias Warneke, 2021-01-01 + diff --git a/src/site/sphinx/conf.py b/src/site/sphinx/conf.py new file mode 100644 index 000000000..b757400c7 --- /dev/null +++ b/src/site/sphinx/conf.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- + +# General options +needs_sphinx = '1.0' +add_function_parentheses = True + +extensions = ['myst_parser', 'sphinx.ext.autodoc', 'sphinx.ext.autosectionlabel', 'sphinx.ext.extlinks', 'sphinx-prompt', 'sphinx_substitution_extensions', 'sphinx_issues', 'sphinx_tabs.tabs', 'pygments.sphinxext', ] + +issues_github_path = "JSQLParser/JSqlParser" + +source_encoding = 'utf-8-sig' +pygments_style = 'friendly' +show_sphinx = False +master_doc = 'index' +exclude_patterns = ['_themes', '_static/css'] +logo_only = True + +# HTML options +html_theme = "sphinx_book_theme" +html_theme_path = ["_themes"] +html_short_title = "JSQLParser" +htmlhelp_basename = "JSQLParser" + '-doc' +html_use_index = True +html_show_sourcelink = False +html_static_path = ['_static'] +html_logo = '_images/logo-no-background.svg' +html_favicon = '_images/favicon.svg' +html_css_files = ["svg.css"] + + +html_theme_options = { + 'path_to_docs': 'site/sphinx', + 'repository_url': 'https://github.com/JSQLParser/JSqlParser', + 'repository_branch': 'master', + 'use_issues_button': True, + 'use_download_button': True, + 'use_fullscreen_button': True, + 'use_repository_button': True, +} + + diff --git a/src/site/sphinx/contribution.rst b/src/site/sphinx/contribution.rst new file mode 100644 index 000000000..4309b23b0 --- /dev/null +++ b/src/site/sphinx/contribution.rst @@ -0,0 +1,167 @@ +****************************** +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 JSQLParser** + 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). + +Before reporting any issues, please verify your statement using `JSQLFormatter Online `_. + +Feature Requests +============================== + +JSQLParser 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 JSQLParser 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 `JSQLParser` from the `GitHub` repository: + +.. code-block:: Bash + + git clone https://github.com/JSQLParser/JSqlParser.git + cd JSqlParser + git branch + +When having a local repository already, then pull/merge from the `GitHub` repository: + +.. code-block:: Bash + + cd JSqlParser + git pull origin master + git branch + +Amend the Code +------------------------------ + +The JSQLParser 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 ``src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt`` + 2) Add or edit the Java Classes at ``src/main/java/net/sf/jsqlparser`` to facilitate this Grammar. + 3) When have added new Java Classes, amend the Visitors, the Visitor Adaptors, the De-Parsers and the Validators. + 4) Provide Java Unit Tests at ``src/test/java/net/sf/jsqlparser`` to test the new feature + + * The test should call at least one time the method ``assertSqlCanBeParsedAndDeparsed()`` + * The test should ensure complete coverage of the new Java Classes. + * The complete test suite must succeed. + + 5) Add the description of the new feature to the ``README.md`` file, section `Extensions`. + 6) Build the package with ``Maven`` and ensure, all checks do pass (PMD and CheckStyle and Code Formatting). + +Manage Reserved Keywords +------------------------------ + +Since JSQLParser 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). + +There is a task ``updateKeywords`` for Gradle and Maven, which will: + + 1) Parse the Grammar in order to find all Token definitions + 2) Read the list of explicitly ``Reserved Keywords`` from ``net/sf/jsqlparser/parser/ParserKeywordsUtils.java`` + 3) Derive the list of ``White-Listed Keywords`` as difference between ``All Tokens`` and ``Reserved Keywords`` + 4) Modifies the Grammar Productions ``RelObjectNameWithoutValue...`` adding all Tokens according to ``White-Listed Keywords`` + 5) Run two special Unit Tests to verify parsing of all ``White-Listed Keywords`` (as `Schema`, `Table`, `Column`, `Function` or `Alias`) + 6) Update the web page about the Reserved Keywords + +.. tabs:: + + .. tab:: Gradle + .. code-block:: shell + :caption: Gradle `updateKeywords` Task + + gradle updateKeywords + + .. tab:: Maven + .. code-block:: shell + :caption: Maven `updateKeywords` Task + + mvn exec:java + + +Without this Gradle Task, 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 JSqlParser + 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/src/site/sphinx/index.rst b/src/site/sphinx/index.rst new file mode 100644 index 000000000..a20944280 --- /dev/null +++ b/src/site/sphinx/index.rst @@ -0,0 +1,90 @@ +########################### +Java SQL Parser Library +########################### + +.. toctree:: + :maxdepth: 2 + :hidden: + + usage + contribution + syntax + keywords + changelog + +.. image:: https://maven-badges.herokuapp.com/maven-central/com.github.jsqlparser/jsqlparser/badge.svg + :alt: Maven Repo + +.. image:: https://github.com/JSQLParser/JSqlParser/actions/workflows/maven.yml/badge.svg + :alt: Maven Build Status + +.. image:: https://coveralls.io/repos/JSQLParser/JSqlParser/badge.svg?branch=master + :alt: Coverage Status + +.. image:: https://app.codacy.com/project/badge/Grade/6f9a2d7eb98f45969749e101322634a1 + :alt: Codacy Status + +.. image:: https://www.javadoc.io/badge/com.github.jsqlparser/jsqlparser.svg + :alt: Java Docs + +**JSQLParser** 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| + +.. sidebar:: Java SQL Object Hierarchy + + .. image:: _images/JavaAST.png + + +.. code-block:: SQL + :caption: Sample SQL Statement + + 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 ) + ; + + +****************************** +SQL Dialects +****************************** + +**JSqlParser** is RDBMS agnostic and provides support for many dialects such as: + + * Oracle Database + * MS SqlServer + * MySQL and MariaDB + * PostgreSQL + * H2 + +******************************* +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 + * Old Oracle ``JOIN (+)`` + * PostgreSQL implicit ``CAST ::`` + * SQL Parameters (e.g. ``?`` or ``:parameter``) + * Arrays vs. T-SQL Squared Bracket Quotes + * Fluent API to create SQL Statements from java Code + * Statement De-Parser to write SQL from Java Objects + + + + + + diff --git a/src/site/sphinx/keywords.rst b/src/site/sphinx/keywords.rst new file mode 100644 index 000000000..f0e8f7156 --- /dev/null +++ b/src/site/sphinx/keywords.rst @@ -0,0 +1,231 @@ +*********************** +Restricted Keywords +*********************** + +The following Keywords are **restricted** in JSQLParser-|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/src/site/sphinx/syntax.rst b/src/site/sphinx/syntax.rst new file mode 100644 index 000000000..cf3f92f40 --- /dev/null +++ b/src/site/sphinx/syntax.rst @@ -0,0 +1,13787 @@ + +******************** +Supported SQL Syntax +******************** + +The EBNF and Railroad Diagrams for JSQLParser-|JSQLPARSER_VERSION|. + + +====================================================================================================================== + Statement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="695" height="119"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="22" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="34">IF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#condition" xlink:title="Condition" shape="rect"> + <rect x="87" y="22" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="34">Condition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="187" y="43" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="191" y="55">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="187" y="71" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="191" y="83">Block</text></a><rect x="319" y="64" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="323" y="76">;</text> + <rect x="357" y="43" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="361" y="55">ELSE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="453" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="457" y="13">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="453" y="29" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="457" y="41">Block</text></a><rect x="585" y="22" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="589" y="34">;</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#eof" xlink:title="EOF" shape="rect"> + <rect x="623" y="1" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="627" y="13">EOF</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsupportedstatement" xlink:title="UnsupportedStatement" shape="rect"> + <rect x="43" y="99" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="111">UnsupportedStatement</text></a><path class="line" d="m17 10 h2 m40 0 h10 m0 0 h340 m-370 0 h20 m350 0 h20 m-390 0 q10 0 10 10 m370 0 q0 -10 10 -10 m-380 10 v1 m370 0 v-1 m-370 1 q0 10 10 10 m350 0 q10 0 10 -10 m-360 10 h4 m16 0 h4 m0 0 h4 m52 0 h4 m20 0 h10 m0 0 h216 m-246 0 h20 m226 0 h20 m-266 0 q10 0 10 10 m246 0 q0 -10 10 -10 m-256 10 v1 m246 0 v-1 m-246 1 q0 10 10 10 m226 0 q10 0 10 -10 m-216 10 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 m32 0 h4 m0 0 h52 m40 -28 h10 m0 0 h8 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v1 m38 0 v-1 m-38 1 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m20 -21 h4 m28 0 h4 m60 -42 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 m32 0 h4 m0 0 h52 m40 -28 h10 m0 0 h8 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v1 m38 0 v-1 m-38 1 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m20 -21 h4 m28 0 h4 m-636 0 h20 m616 0 h20 m-656 0 q10 0 10 10 m636 0 q0 -10 10 -10 m-646 10 v78 m636 0 v-78 m-636 78 q0 10 10 10 m616 0 q10 0 10 -10 m-626 10 h4 m118 0 h4 m0 0 h490 m23 -98 h-3"/> + <polygon points="685 10 693 6 693 14"/> + <polygon points="685 10 677 6 677 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><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" title="Statement" shape="rect">Statement</a></div> + <div>         ::= ( 'IF' <a href="#condition" title="Condition" shape="rect">Condition</a> ( ( <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</a> ) ';'? 'ELSE' )? )? ( <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</a> ) ';'? <a href="#eof" title="EOF" shape="rect">EOF</a></div> + <div>           | <a href="#unsupportedstatement" title="UnsupportedStatement" shape="rect">UnsupportedStatement</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> + + +====================================================================================================================== + SingleStatement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="265" height="1085"> + <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="#withlist" xlink:title="WithList" shape="rect"> + <rect x="63" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">WithList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select" xlink:title="Select" shape="rect"> + <rect x="117" y="1" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="13">Select</text></a><rect x="161" y="1" width="12" 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="#withlist" xlink:title="WithList" shape="rect"> + <rect x="63" y="50" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="62">WithList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select" xlink:title="Select" shape="rect"> + <rect x="157" y="29" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="41">Select</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insert" xlink:title="Insert" shape="rect"> + <rect x="157" y="57" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="69">Insert</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#update" xlink:title="Update" shape="rect"> + <rect x="157" y="85" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="97">Update</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#delete" xlink:title="Delete" shape="rect"> + <rect x="157" y="113" width="40" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="125">Delete</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#merge" xlink:title="Merge" shape="rect"> + <rect x="157" y="141" width="38" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="153">Merge</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#upsert" xlink:title="Upsert" shape="rect"> + <rect x="43" y="169" width="40" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">Upsert</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#altertable" xlink:title="AlterTable" shape="rect"> + <rect x="43" y="197" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="209">AlterTable</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#altersession" xlink:title="AlterSession" shape="rect"> + <rect x="43" y="225" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="237">AlterSession</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createfunctionstatement" xlink:title="CreateFunctionStatement" shape="rect"> + <rect x="43" y="253" width="126" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="265">CreateFunctionStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createindex" xlink:title="CreateIndex" shape="rect"> + <rect x="43" y="281" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="293">CreateIndex</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createschema" xlink:title="CreateSchema" shape="rect"> + <rect x="43" y="309" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="321">CreateSchema</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createsequence" xlink:title="CreateSequence" shape="rect"> + <rect x="43" y="337" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="349">CreateSequence</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createsynonym" xlink:title="CreateSynonym" shape="rect"> + <rect x="43" y="365" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="377">CreateSynonym</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createtable" xlink:title="CreateTable" shape="rect"> + <rect x="43" y="393" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="405">CreateTable</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createview" xlink:title="CreateView" shape="rect"> + <rect x="43" y="421" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="433">CreateView</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterview" xlink:title="AlterView" shape="rect"> + <rect x="43" y="449" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="461">AlterView</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#altersequence" xlink:title="AlterSequence" shape="rect"> + <rect x="43" y="477" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="489">AlterSequence</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#drop" xlink:title="Drop" shape="rect"> + <rect x="43" y="505" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="517">Drop</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#analyze" xlink:title="Analyze" shape="rect"> + <rect x="43" y="533" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="545">Analyze</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#truncate" xlink:title="Truncate" shape="rect"> + <rect x="43" y="561" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="573">Truncate</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#execute" xlink:title="Execute" shape="rect"> + <rect x="43" y="589" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="601">Execute</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#set" xlink:title="Set" shape="rect"> + <rect x="43" y="617" width="24" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="629">Set</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#renametablestatement" xlink:title="RenameTableStatement" shape="rect"> + <rect x="43" y="645" width="122" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="657">RenameTableStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#reset" xlink:title="Reset" shape="rect"> + <rect x="43" y="673" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="685">Reset</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#showcolumns" xlink:title="ShowColumns" shape="rect"> + <rect x="43" y="701" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="713">ShowColumns</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#showtables" xlink:title="ShowTables" shape="rect"> + <rect x="43" y="729" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="741">ShowTables</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#show" xlink:title="Show" shape="rect"> + <rect x="43" y="757" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="769">Show</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#use" xlink:title="Use" shape="rect"> + <rect x="43" y="785" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="797">Use</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#savepointstatement" xlink:title="SavepointStatement" shape="rect"> + <rect x="43" y="813" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="825">SavepointStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rollbackstatement" xlink:title="RollbackStatement" shape="rect"> + <rect x="43" y="841" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="853">RollbackStatement</text></a><rect x="43" y="869" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="881">COMMIT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comment" xlink:title="Comment" shape="rect"> + <rect x="43" y="897" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="909">Comment</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#describe" xlink:title="Describe" shape="rect"> + <rect x="43" y="925" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="937">Describe</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#explain" xlink:title="Explain" shape="rect"> + <rect x="43" y="953" width="42" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="965">Explain</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#declare" xlink:title="Declare" shape="rect"> + <rect x="43" y="981" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="993">Declare</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#grant" xlink:title="Grant" shape="rect"> + <rect x="43" y="1009" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="1021">Grant</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#purgestatement" xlink:title="PurgeStatement" shape="rect"> + <rect x="43" y="1037" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="1049">PurgeStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#altersystemstatement" xlink:title="AlterSystemStatement" shape="rect"> + <rect x="43" y="1065" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="1077">AlterSystemStatement</text></a><path class="line" d="m17 10 h2 m20 0 h4 m12 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m12 0 h4 m0 0 h48 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-176 10 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 h4 m36 0 h4 m0 0 h8 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 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 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 m40 0 h4 m0 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 m38 0 h4 m0 0 h6 m-176 -122 v20 m206 0 v-20 m-206 20 v120 m206 0 v-120 m-206 120 q0 10 10 10 m186 0 q10 0 10 -10 m-196 10 h4 m40 0 h4 m0 0 h138 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 m54 0 h4 m0 0 h124 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 m64 0 h4 m0 0 h114 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 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 m66 0 h4 m0 0 h112 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 m86 0 h4 m0 0 h92 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 m84 0 h4 m0 0 h94 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 m64 0 h4 m0 0 h114 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 m62 0 h4 m0 0 h116 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 m50 0 h4 m0 0 h128 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 m76 0 h4 m0 0 h102 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 m32 0 h4 m0 0 h146 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 m46 0 h4 m0 0 h132 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 h130 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 m46 0 h4 m0 0 h132 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 m24 0 h4 m0 0 h154 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 m122 0 h4 m0 0 h56 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 m36 0 h4 m0 0 h142 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 m76 0 h4 m0 0 h102 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 m64 0 h4 m0 0 h114 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 m36 0 h4 m0 0 h142 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 m28 0 h4 m0 0 h150 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 m104 0 h4 m0 0 h74 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 m94 0 h4 m0 0 h84 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 h130 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 m56 0 h4 m0 0 h122 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 h130 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 m42 0 h4 m0 0 h136 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 m44 0 h4 m0 0 h134 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 m34 0 h4 m0 0 h144 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 m86 0 h4 m0 0 h92 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 m112 0 h4 m0 0 h66 m23 -1064 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="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a></div> + <div>         ::= '(' <a href="#withlist" title="WithList" shape="rect">WithList</a> <a href="#select" title="Select" shape="rect">Select</a> ')'</div> + <div>           | <a href="#withlist" title="WithList" shape="rect">WithList</a>? ( <a href="#select" title="Select" shape="rect">Select</a> | <a href="#insert" title="Insert" shape="rect">Insert</a> | <a href="#update" title="Update" shape="rect">Update</a> | <a href="#delete" title="Delete" shape="rect">Delete</a> | <a href="#merge" title="Merge" shape="rect">Merge</a> )</div> + <div>           | <a href="#upsert" title="Upsert" shape="rect">Upsert</a></div> + <div>           | <a href="#altertable" title="AlterTable" shape="rect">AlterTable</a></div> + <div>           | <a href="#altersession" title="AlterSession" shape="rect">AlterSession</a></div> + <div>           | <a href="#createfunctionstatement" title="CreateFunctionStatement" shape="rect">CreateFunctionStatement</a></div> + <div>           | <a href="#createindex" title="CreateIndex" shape="rect">CreateIndex</a></div> + <div>           | <a href="#createschema" title="CreateSchema" shape="rect">CreateSchema</a></div> + <div>           | <a href="#createsequence" title="CreateSequence" shape="rect">CreateSequence</a></div> + <div>           | <a href="#createsynonym" title="CreateSynonym" shape="rect">CreateSynonym</a></div> + <div>           | <a href="#createtable" title="CreateTable" shape="rect">CreateTable</a></div> + <div>           | <a href="#createview" title="CreateView" shape="rect">CreateView</a></div> + <div>           | <a href="#alterview" title="AlterView" shape="rect">AlterView</a></div> + <div>           | <a href="#altersequence" title="AlterSequence" shape="rect">AlterSequence</a></div> + <div>           | <a href="#drop" title="Drop" shape="rect">Drop</a></div> + <div>           | <a href="#analyze" title="Analyze" shape="rect">Analyze</a></div> + <div>           | <a href="#truncate" title="Truncate" shape="rect">Truncate</a></div> + <div>           | <a href="#execute" title="Execute" shape="rect">Execute</a></div> + <div>           | <a href="#set" title="Set" shape="rect">Set</a></div> + <div>           | <a href="#renametablestatement" title="RenameTableStatement" shape="rect">RenameTableStatement</a></div> + <div>           | <a href="#reset" title="Reset" shape="rect">Reset</a></div> + <div>           | <a href="#showcolumns" title="ShowColumns" shape="rect">ShowColumns</a></div> + <div>           | <a href="#showtables" title="ShowTables" shape="rect">ShowTables</a></div> + <div>           | <a href="#show" title="Show" shape="rect">Show</a></div> + <div>           | <a href="#use" title="Use" shape="rect">Use</a></div> + <div>           | <a href="#savepointstatement" title="SavepointStatement" shape="rect">SavepointStatement</a></div> + <div>           | <a href="#rollbackstatement" title="RollbackStatement" shape="rect">RollbackStatement</a></div> + <div>           | 'COMMIT'</div> + <div>           | <a href="#comment" title="Comment" shape="rect">Comment</a></div> + <div>           | <a href="#describe" title="Describe" shape="rect">Describe</a></div> + <div>           | <a href="#explain" title="Explain" shape="rect">Explain</a></div> + <div>           | <a href="#declare" title="Declare" shape="rect">Declare</a></div> + <div>           | <a href="#grant" title="Grant" shape="rect">Grant</a></div> + <div>           | <a href="#purgestatement" title="PurgeStatement" shape="rect">PurgeStatement</a></div> + <div>           | <a href="#altersystemstatement" title="AlterSystemStatement" shape="rect">AlterSystemStatement</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#block" title="block">block</a></li><li><a href="#statement" title="statement">statement</a></li><li><a href="#statements" title="statements">statements</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Block +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="423" height="70"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/> + <rect x="23" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="34">BEGIN</text> + <rect x="87" y="1" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="13">;</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="165" y="22" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="169" y="34">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="165" y="50" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="169" y="62">Block</text></a><rect x="277" y="22" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="281" y="34">;</text> + <rect x="315" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="319" y="34">END</text> + <rect x="369" y="43" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="373" y="55">;</text> + <path class="line" d="m17 31 h2 m0 0 h4 m36 0 h4 m20 0 h10 m0 0 h8 m-38 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m18 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-18 0 h4 m10 0 h4 m60 21 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 m32 0 h4 m0 0 h52 m20 -28 h4 m10 0 h4 m-170 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m150 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-150 0 h10 m0 0 h140 m20 21 h4 m26 0 h4 m20 0 h10 m0 0 h8 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v1 m38 0 v-1 m-38 1 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m23 -21 h-3"/> + <polygon points="413 31 421 27 421 35"/> + <polygon points="413 31 405 27 405 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="#block" title="Block" shape="rect">Block</a>    ::= 'BEGIN' ';'* ( ( <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</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="#block" title="block">block</a></li><li><a href="#statement" title="statement">statement</a></li><li><a href="#statements" title="statements">statements</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Statements +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="689" height="437"> + <polygon points="11 31 3 27 3 35"/> + <polygon points="19 31 11 27 11 35"/> + <rect x="45" y="1" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="49" y="13">;</text> + <rect x="103" y="22" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="34">IF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#condition" xlink:title="Condition" shape="rect"> + <rect x="127" y="22" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="131" y="34">Condition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="207" y="22" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="34">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="207" y="50" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="62">Block</text></a><rect x="359" y="64" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="363" y="76">;</text> + <rect x="397" y="43" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="401" y="55">ELSE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="453" y="43" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="457" y="55">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="453" y="71" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="457" y="83">Block</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="103" y="99" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="111">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="103" y="127" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="139">Block</text></a><rect x="163" y="148" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="160">;</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsupportedstatement" xlink:title="UnsupportedStatement" shape="rect"> + <rect x="103" y="176" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="188">UnsupportedStatement</text></a><rect x="57" y="230" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="61" y="242">;</text> + <rect x="95" y="251" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="263">IF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#condition" xlink:title="Condition" shape="rect"> + <rect x="119" y="251" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="263">Condition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="199" y="251" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="203" y="263">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="199" y="279" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="203" y="291">Block</text></a><rect x="351" y="293" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="355" y="305">;</text> + <rect x="389" y="272" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="393" y="284">ELSE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="445" y="272" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="449" y="284">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="445" y="300" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="449" y="312">Block</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#singlestatement" xlink:title="SingleStatement" shape="rect"> + <rect x="95" y="328" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="340">SingleStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#block" xlink:title="Block" shape="rect"> + <rect x="95" y="356" width="32" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="368">Block</text></a><rect x="155" y="377" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="159" y="389">;</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unsupportedstatement" xlink:title="UnsupportedStatement" shape="rect"> + <rect x="95" y="405" width="118" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="417">UnsupportedStatement</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#eof" xlink:title="EOF" shape="rect"> + <rect x="637" y="230" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="641" y="242">EOF</text></a><path class="line" d="m19 31 h2 m20 0 h10 m0 0 h8 m-38 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m18 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-18 0 h4 m10 0 h4 m40 21 h4 m16 0 h4 m0 0 h4 m52 0 h4 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 m32 0 h4 m0 0 h52 m40 -28 h10 m0 0 h216 m-246 0 h20 m226 0 h20 m-266 0 q10 0 10 10 m246 0 q0 -10 10 -10 m-256 10 v1 m246 0 v-1 m-246 1 q0 10 10 10 m226 0 q10 0 10 -10 m-216 10 h10 m0 0 h8 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v1 m38 0 v-1 m-38 1 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m20 -21 h4 m28 0 h4 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 m32 0 h4 m0 0 h52 m-462 -49 h20 m482 0 h20 m-522 0 q10 0 10 10 m502 0 q0 -10 10 -10 m-512 10 v57 m502 0 v-57 m-502 57 q0 10 10 10 m482 0 q10 0 10 -10 m-492 10 h4 m84 0 h4 m0 0 h390 m-492 -10 v20 m502 0 v-20 m-502 20 v8 m502 0 v-8 m-502 8 q0 10 10 10 m482 0 q10 0 10 -10 m-492 10 h4 m32 0 h4 m20 0 h10 m0 0 h8 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v1 m38 0 v-1 m-38 1 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m20 -21 h384 m-492 -10 v20 m502 0 v-20 m-502 20 v29 m502 0 v-29 m-502 29 q0 10 10 10 m482 0 q10 0 10 -10 m-492 10 h4 m118 0 h4 m0 0 h356 m22 -154 l2 0 m2 0 l2 0 m2 0 l2 0 m-612 208 l2 0 m2 0 l2 0 m2 0 l2 0 m42 0 h4 m10 0 h4 m20 0 h10 m0 0 h472 m-502 0 h20 m482 0 h20 m-522 0 q10 0 10 10 m502 0 q0 -10 10 -10 m-512 10 v1 m502 0 v-1 m-502 1 q0 10 10 10 m482 0 q10 0 10 -10 m-492 10 h4 m16 0 h4 m0 0 h4 m52 0 h4 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 m32 0 h4 m0 0 h52 m40 -28 h10 m0 0 h216 m-246 0 h20 m226 0 h20 m-266 0 q10 0 10 10 m246 0 q0 -10 10 -10 m-256 10 v1 m246 0 v-1 m-246 1 q0 10 10 10 m226 0 q10 0 10 -10 m-216 10 h10 m0 0 h8 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v1 m38 0 v-1 m-38 1 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m20 -21 h4 m28 0 h4 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 m32 0 h4 m0 0 h52 m-452 -59 v20 m502 0 v-20 m-502 20 v57 m502 0 v-57 m-502 57 q0 10 10 10 m482 0 q10 0 10 -10 m-492 10 h4 m84 0 h4 m0 0 h390 m-492 -10 v20 m502 0 v-20 m-502 20 v8 m502 0 v-8 m-502 8 q0 10 10 10 m482 0 q10 0 10 -10 m-492 10 h4 m32 0 h4 m20 0 h10 m0 0 h8 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v1 m38 0 v-1 m-38 1 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m20 -21 h384 m-492 -10 v20 m502 0 v-20 m-502 20 v29 m502 0 v-29 m-502 29 q0 10 10 10 m482 0 q10 0 10 -10 m-492 10 h4 m118 0 h4 m0 0 h356 m-540 -175 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m540 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-540 0 h10 m0 0 h530 m-580 21 h20 m580 0 h20 m-620 0 q10 0 10 10 m600 0 q0 -10 10 -10 m-610 10 v176 m600 0 v-176 m-600 176 q0 10 10 10 m580 0 q10 0 10 -10 m-590 10 h10 m0 0 h570 m20 -196 h4 m28 0 h4 m3 0 h-3"/> + <polygon points="679 239 687 235 687 243"/> + <polygon points="679 239 671 235 671 243"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#statements" title="Statements" shape="rect">Statements</a></div> + <div>         ::= ';'* ( 'IF' <a href="#condition" title="Condition" shape="rect">Condition</a> ( <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</a> ) ( ';'? 'ELSE' ( <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</a> ) )? | <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</a> ';'? | <a href="#unsupportedstatement" title="UnsupportedStatement" shape="rect">UnsupportedStatement</a> ) ( ';' ( 'IF' <a href="#condition" title="Condition" shape="rect">Condition</a> ( <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</a> ) ( ';'? 'ELSE' ( <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</a> ) )? | <a href="#singlestatement" title="SingleStatement" shape="rect">SingleStatement</a> | <a href="#block" title="Block" shape="rect">Block</a> ';'? | <a href="#unsupportedstatement" title="UnsupportedStatement" shape="rect">UnsupportedStatement</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> + + +====================================================================================================================== + Declare +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="455" height="154"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">DECLARE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#uservariable" xlink:title="UserVariable" shape="rect"> + <rect x="79" y="29" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="83" y="41">UserVariable</text></a><rect x="173" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="41">TABLE</text> + <rect x="217" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columndefinition" xlink:title="ColumnDefinition" shape="rect"> + <rect x="257" y="29" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="261" y="41">ColumnDefinition</text></a><rect x="257" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="13">,</text> + <rect x="371" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="375" y="41">)</text> + <rect x="173" y="57" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="69">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="201" y="57" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="205" y="69">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="193" y="113" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="125">ColDataType</text></a><rect x="289" y="134" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="293" y="146">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="311" y="134" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="315" y="146">Expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#uservariable" xlink:title="UserVariable" shape="rect"> + <rect x="193" y="85" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="97">UserVariable</text></a><rect x="267" y="85" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="271" y="97">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m48 0 h4 m0 0 h4 m66 0 h4 m20 0 h4 m36 0 h4 m0 0 h4 m12 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 m20 28 h4 m12 0 h4 m0 0 h28 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 m20 0 h4 m0 0 h4 m80 0 h4 m0 0 h130 m-256 -10 v20 m266 0 v-20 m-266 20 v36 m266 0 v-36 m-266 36 q0 10 10 10 m246 0 q10 0 10 -10 m-236 10 h4 m68 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 m14 0 h4 m0 0 h4 m60 0 h4 m-206 -21 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 m66 0 h4 m0 0 h4 m8 0 h4 m0 0 h116 m43 -56 h-3"/> + <polygon points="445 38 453 34 453 42"/> + <polygon points="445 38 437 34 437 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="#declare" title="Declare" shape="rect">Declare</a>  ::= 'DECLARE' <a href="#uservariable" title="UserVariable" shape="rect">UserVariable</a> ( 'TABLE' '(' <a href="#columndefinition" title="ColumnDefinition" shape="rect">ColumnDefinition</a> ( ',' <a href="#columndefinition" title="ColumnDefinition" shape="rect">ColumnDefinition</a> )* ')' | 'AS' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> | <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> ( '=' <a href="#expression" title="Expression" shape="rect">Expression</a> )? ( ',' <a href="#uservariable" title="UserVariable" shape="rect">UserVariable</a> <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> ( '=' <a href="#expression" title="Expression" shape="rect">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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Set +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="673" height="175"> + <polygon points="9 108 1 104 1 112"/> + <polygon points="17 108 9 104 9 112"/> + <rect x="23" y="99" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="111">SET</text> + <rect x="75" y="120" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="132">LOCAL</text> + <rect x="75" y="148" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="160">SESSION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-datetimeliteral" xlink:title="K_DATETIMELITERAL" shape="rect"> + <rect x="173" y="99" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="177" y="111">K_DATETIMELITERAL</text></a><rect x="285" y="99" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="289" y="111">ZONE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#uservariable" xlink:title="UserVariable" shape="rect"> + <rect x="193" y="127" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="139">UserVariable</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="193" y="155" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="167">RelObjectNameExt</text></a><rect x="335" y="148" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="160">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="417" y="99" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="421" y="111">Expression</text></a><rect x="437" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="441" y="34">ZONE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-datetimeliteral" xlink:title="K_DATETIMELITERAL" shape="rect"> + <rect x="479" y="22" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="483" y="34">K_DATETIMELITERAL</text></a><rect x="457" y="71" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="461" y="83">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="499" y="50" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="503" y="62">RelObjectNameExt</text></a><rect x="621" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="625" y="13">,</text> + <path class="line" d="m17 108 h2 m0 0 h4 m24 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 m38 0 h4 m0 0 h12 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 m104 0 h4 m0 0 h4 m34 0 h4 m0 0 h50 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-194 10 h4 m66 0 h4 m0 0 h28 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 m94 0 h4 m40 -28 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 m60 -49 h4 m60 0 h4 m0 0 h152 m-240 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -78 q0 -10 10 -10 m220 98 l20 0 m-20 0 q10 0 10 -10 l0 -78 q0 -10 -10 -10 m-200 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 m34 0 h4 m0 0 h4 m104 0 h4 m0 0 h10 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-154 10 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 m20 -21 h4 m94 0 h4 m20 -49 h4 m8 0 h4 m23 98 h-3"/> + <polygon points="663 108 671 104 671 112"/> + <polygon points="663 108 655 104 655 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="#set" title="Set" shape="rect">Set</a>      ::= 'SET' ( 'LOCAL' | 'SESSION' )? ( <a href="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a> 'ZONE' | ( <a href="#uservariable" title="UserVariable" shape="rect">UserVariable</a> | <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a> ) '='? ) <a href="#expression" title="Expression" shape="rect">Expression</a> ( ',' ( <a href="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a> 'ZONE' | <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a> '='? )? <a href="#expression" title="Expression" shape="rect">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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Reset +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="277" height="77"> + <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">RESET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-datetimeliteral" xlink:title="K_DATETIMELITERAL" shape="rect"> + <rect x="87" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">K_DATETIMELITERAL</text></a><rect x="199" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="13">ZONE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="87" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="41">RelObjectName</text></a><rect x="87" y="57" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="69">ALL</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m20 0 h4 m104 0 h4 m0 0 h4 m34 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 m80 0 h4 m0 0 h66 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 m24 0 h4 m0 0 h122 m23 -56 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="#reset" title="Reset" shape="rect">Reset</a>    ::= 'RESET' ( <a href="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a> 'ZONE' | <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RenameTableStatement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="579" height="98"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">RENAME</text> + <rect x="97" y="50" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="62">TABLE</text> + <rect x="181" y="50" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="62">IF</text> + <rect x="205" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="209" y="62">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="273" y="29" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="277" y="41">Table</text></a><rect x="335" y="50" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="62">WAIT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="377" y="50" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="381" y="62">S_LONG</text></a><rect x="335" y="78" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="90">NOWAIT</text> + <rect x="473" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="477" y="41">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="501" y="29" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="505" y="41">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="473" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="477" y="13">Table</text></a><rect x="515" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="519" y="13">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m46 0 h4 m20 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 m40 -21 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 m34 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 m34 0 h4 m0 0 h4 m48 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 m48 0 h4 m0 0 h42 m40 -49 h4 m20 0 h4 m0 0 h4 m34 0 h4 m-90 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m70 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-70 0 h4 m34 0 h4 m0 0 h4 m8 0 h4 m0 0 h12 m23 28 h-3"/> + <polygon points="569 38 577 34 577 42"/> + <polygon points="569 38 561 34 561 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="#renametablestatement" title="RenameTableStatement" shape="rect">RenameTableStatement</a></div> + <div>         ::= 'RENAME' 'TABLE'? ( 'IF' 'EXISTS' )? <a href="#table" title="Table" shape="rect">Table</a> ( 'WAIT' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | 'NOWAIT' )? 'TO' <a href="#table" title="Table" shape="rect">Table</a> ( ',' <a href="#table" title="Table" shape="rect">Table</a> 'TO' <a href="#table" title="Table" shape="rect">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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PurgeStatement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="441" height="154"> + <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">PURGE</text> + <rect x="89" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13">TABLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="133" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="13">Table</text></a><rect x="89" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="41">INDEX</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#index" xlink:title="Index" shape="rect"> + <rect x="133" y="29" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="41">Index</text></a><rect x="89" y="57" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="69">RECYCLEBIN</text> + <rect x="89" y="85" width="90" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="97">DBA_RECYCLEBIN</text> + <rect x="89" y="113" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="125">TABLESPACE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="161" y="113" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="125">S_IDENTIFIER</text></a><rect x="263" y="134" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="146">USER</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="303" y="134" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="307" y="146">S_IDENTIFIER</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m20 0 h4 m36 0 h4 m0 0 h4 m34 0 h4 m0 0 h230 m-336 0 h20 m316 0 h20 m-356 0 q10 0 10 10 m336 0 q0 -10 10 -10 m-346 10 v8 m336 0 v-8 m-336 8 q0 10 10 10 m316 0 q10 0 10 -10 m-326 10 h4 m36 0 h4 m0 0 h4 m36 0 h4 m0 0 h228 m-326 -10 v20 m336 0 v-20 m-336 20 v8 m336 0 v-8 m-336 8 q0 10 10 10 m316 0 q10 0 10 -10 m-326 10 h4 m64 0 h4 m0 0 h244 m-326 -10 v20 m336 0 v-20 m-336 20 v8 m336 0 v-8 m-336 8 q0 10 10 10 m316 0 q10 0 10 -10 m-326 10 h4 m90 0 h4 m0 0 h218 m-326 -10 v20 m336 0 v-20 m-336 20 v8 m336 0 v-8 m-336 8 q0 10 10 10 m316 0 q10 0 10 -10 m-326 10 h4 m64 0 h4 m0 0 h4 m74 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 m32 0 h4 m0 0 h4 m74 0 h4 m43 -133 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="#purgestatement" title="PurgeStatement" shape="rect">PurgeStatement</a></div> + <div>         ::= 'PURGE' ( 'TABLE' <a href="#table" title="Table" shape="rect">Table</a> | 'INDEX' <a href="#index" title="Index" shape="rect">Index</a> | 'RECYCLEBIN' | 'DBA_RECYCLEBIN' | 'TABLESPACE' <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> ( 'USER' <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Describe +====================================================================================================================== + + +.. 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"/> + <rect x="23" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">DESCRIBE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="83" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">Table</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m34 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="#describe" title="Describe" shape="rect">Describe</a> ::= 'DESCRIBE' <a href="#table" title="Table" shape="rect">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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Explain +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="339" 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">EXPLAIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#explainstatementoptions" xlink:title="ExplainStatementOptions" shape="rect"> + <rect x="77" y="1" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">ExplainStatementOptions</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectwithwithitems" xlink:title="SelectWithWithItems" shape="rect"> + <rect x="209" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="213" y="13">SelectWithWithItems</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m124 0 h4 m0 0 h4 m106 0 h4 m3 0 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="#explain" title="Explain" shape="rect">Explain</a>  ::= 'EXPLAIN' <a href="#explainstatementoptions" title="ExplainStatementOptions" shape="rect">ExplainStatementOptions</a> <a href="#selectwithwithitems" title="SelectWithWithItems" shape="rect">SelectWithWithItems</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ExplainOptionBoolean +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" height="121"> + <polygon points="9 5 1 1 1 9"/> + <polygon points="17 5 9 1 9 9"/> + <rect x="43" y="17" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="29">TRUE</text> + <rect x="43" y="45" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="57">FALSE</text> + <rect x="43" y="73" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="85">ON</text> + <rect x="43" y="101" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="113">OFF</text> + <path class="line" d="m17 5 h2 m20 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 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 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 m22 0 h4 m0 0 h14 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 m23 -105 h-3"/> + <polygon points="113 5 121 1 121 9"/> + <polygon points="113 5 105 1 105 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="#explainoptionboolean" title="ExplainOptionBoolean" shape="rect">ExplainOptionBoolean</a></div> + <div>         ::= ( 'TRUE' | 'FALSE' | 'ON' | 'OFF' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#explainstatementoptions" title="explainstatementoptions">explainstatementoptions</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ExplainFormatOption +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="121" height="93"> + <polygon points="9 5 1 1 1 9"/> + <polygon points="17 5 9 1 9 9"/> + <rect x="43" y="17" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="29">XML</text> + <rect x="43" y="45" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="57">JSON</text> + <rect x="43" y="73" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="85">YAML</text> + <path class="line" d="m17 5 h2 m20 0 h10 m0 0 h32 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v1 m62 0 v-1 m-62 1 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m28 0 h4 m0 0 h6 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 m32 0 h4 m0 0 h2 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 m34 0 h4 m23 -77 h-3"/> + <polygon points="111 5 119 1 119 9"/> + <polygon points="111 5 103 1 103 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="#explainformatoption" title="ExplainFormatOption" shape="rect">ExplainFormatOption</a></div> + <div>         ::= ( 'XML' | 'JSON' | 'YAML' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#explainstatementoptions" title="explainstatementoptions">explainstatementoptions</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ExplainStatementOptions +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="373" height="157"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="103" y="13" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="25">ANALYZE</text> + <rect x="103" y="41" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="53">BUFFERS</text> + <rect x="103" y="69" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="81">COSTS</text> + <rect x="103" y="97" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="109">VERBOSE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#explainoptionboolean" xlink:title="ExplainOptionBoolean" shape="rect"> + <rect x="181" y="13" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="25">ExplainOptionBoolean</text></a><rect x="83" y="125" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="137">FORMAT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#explainformatoption" xlink:title="ExplainFormatOption" shape="rect"> + <rect x="137" y="125" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="137">ExplainFormatOption</text></a><path class="line" d="m17 22 h2 m80 0 h4 m48 0 h4 m0 0 h2 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 m38 0 h4 m0 0 h12 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 -84 h4 m108 0 h4 m-234 0 h20 m214 0 h20 m-254 0 q10 0 10 10 m234 0 q0 -10 10 -10 m-244 10 v92 m234 0 v-92 m-234 92 q0 10 10 10 m214 0 q10 0 10 -10 m-224 10 h4 m46 0 h4 m0 0 h4 m104 0 h4 m0 0 h48 m-254 -112 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m254 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-254 0 h10 m0 0 h244 m-294 21 h20 m294 0 h20 m-334 0 q10 0 10 10 m314 0 q0 -10 10 -10 m-324 10 v113 m314 0 v-113 m-314 113 q0 10 10 10 m294 0 q10 0 10 -10 m-304 10 h10 m0 0 h284 m23 -133 h-3"/> + <polygon points="363 22 371 18 371 26"/> + <polygon points="363 22 355 18 355 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="#explainstatementoptions" title="ExplainStatementOptions" shape="rect">ExplainStatementOptions</a></div> + <div>         ::= ( ( 'ANALYZE' | 'BUFFERS' | 'COSTS' | 'VERBOSE' ) <a href="#explainoptionboolean" title="ExplainOptionBoolean" shape="rect">ExplainOptionBoolean</a> | 'FORMAT' <a href="#explainformatoption" title="ExplainFormatOption" shape="rect">ExplainFormatOption</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#explain" title="explain">explain</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Use +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="269" height="42"> + <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> + <rect x="77" y="22" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="34">SCHEMA</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="151" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="155" y="13">RelObjectNameExt</text></a><path class="line" d="m17 10 h2 m0 0 h4 m26 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 m94 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="#use" title="Use" shape="rect">Use</a>      ::= 'USE' 'SCHEMA'? <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ShowColumns +====================================================================================================================== + + +.. 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="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SHOW</text> + <rect x="71" y="1" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="13">COLUMNS</text> + <rect x="133" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="177" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="13">RelObjectNameExt</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m54 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m94 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="#showcolumns" title="ShowColumns" shape="rect">ShowColumns</a></div> + <div>         ::= 'SHOW' 'COLUMNS' 'FROM' <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ShowTables +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="719" height="70"> + <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">SHOW</text> + <rect x="91" y="22" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="34">EXTENDED</text> + <rect x="195" y="22" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="34">FULL</text> + <rect x="253" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="13">TABLES</text> + <rect x="343" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="347" y="34">FROM</text> + <rect x="343" y="50" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="347" y="62">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="407" y="22" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="411" y="34">RelObjectNameExt</text></a><rect x="549" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="553" y="34">LIKE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="585" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="589" y="34">SimpleExpression</text></a><rect x="549" y="50" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="553" y="62">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="599" y="50" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="603" y="62">Expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 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 m40 -21 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 m20 -21 h4 m42 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-176 10 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 m18 0 h4 m0 0 h18 m20 -28 h4 m94 0 h4 m40 -21 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 m28 0 h4 m0 0 h4 m90 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 m42 0 h4 m0 0 h4 m60 0 h4 m0 0 h16 m23 -49 h-3"/> + <polygon points="709 10 717 6 717 14"/> + <polygon points="709 10 701 6 701 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#showtables" title="ShowTables" shape="rect">ShowTables</a></div> + <div>         ::= 'SHOW' 'EXTENDED'? 'FULL'? 'TABLES' ( ( 'FROM' | 'IN' ) <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a> )? ( 'LIKE' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> | 'WHERE' <a href="#expression" title="Expression" shape="rect">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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Show +====================================================================================================================== + + +.. 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="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SHOW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="71" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="13">RelObjectNameExt</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m94 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="#show" title="Show" shape="rect">Show</a>     ::= 'SHOW' <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Values +====================================================================================================================== + + +.. 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"/> + <rect x="43" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">VALUES</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">VALUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="113" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="117" y="13">SimpleExpressionList</text></a><path class="line" d="m17 10 h2 m20 0 h4 m42 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 m36 0 h4 m0 0 h6 m20 -28 h4 m104 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="#values" title="Values" shape="rect">Values</a>   ::= ( 'VALUES' | 'VALUE' ) <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#setoperationlist" title="setoperationlist">setoperationlist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Update +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="785" height="310"> + <polygon points="11 10 3 6 3 14"/> + <polygon points="19 10 11 6 11 14"/> + <rect x="25" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="29" y="13">UPDATE</text> + <rect x="97" y="22" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="34">LOW_PRIORITY</text> + <rect x="227" y="22" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="34">IGNORE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#tablewithalias" xlink:title="TableWithAlias" shape="rect"> + <rect x="299" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="303" y="13">TableWithAlias</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#joinslist" xlink:title="JoinsList" shape="rect"> + <rect x="381" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="385" y="13">JoinsList</text></a><rect x="435" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="439" y="13">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="118" y="92" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="122" y="104">Column</text></a><rect x="172" y="92" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="176" y="104">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="194" y="92" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="198" y="104">SimpleExpression</text></a><rect x="118" y="64" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="122" y="76">,</text> + <rect x="138" y="197" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="142" y="209">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="198" y="176" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="202" y="188">Column</text></a><rect x="198" y="148" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="202" y="160">,</text> + <rect x="292" y="197" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="296" y="209">)</text> + <rect x="332" y="176" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="336" y="188">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="374" y="176" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="378" y="188">SubSelect</text></a><rect x="374" y="204" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="378" y="216">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="394" y="204" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="398" y="216">ComplexExpressionList</text></a><rect x="516" y="204" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="520" y="216">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="374" y="232" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="378" y="244">Expression</text></a><rect x="118" y="120" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="122" y="132">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#outputclause" xlink:title="OutputClause" shape="rect"> + <rect x="616" y="113" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="620" y="125">OutputClause</text></a><rect x="37" y="290" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="41" y="302">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fromitem" xlink:title="FromItem" shape="rect"> + <rect x="81" y="290" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="302">FromItem</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#joinslist" xlink:title="JoinsList" shape="rect"> + <rect x="143" y="290" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="302">JoinsList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whereclause" xlink:title="WhereClause" shape="rect"> + <rect x="237" y="290" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="241" y="302">WhereClause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="357" y="290" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="361" y="302">OrderByElements</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#plainlimit" xlink:title="PlainLimit" shape="rect"> + <rect x="495" y="290" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="499" y="302">PlainLimit</text></a><rect x="593" y="290" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="597" y="302">RETURNING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectitemslist" xlink:title="SelectItemsList" shape="rect"> + <rect x="663" y="290" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="667" y="302">SelectItemsList</text></a><path class="line" d="m19 10 h2 m0 0 h4 m44 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 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 m20 -21 h4 m74 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m24 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-413 91 l2 0 m2 0 l2 0 m2 0 l2 0 m42 0 h4 m46 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 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 h264 m-498 0 h20 m478 0 h20 m-518 0 q10 0 10 10 m498 0 q0 -10 10 -10 m-508 10 v64 m498 0 v-64 m-498 64 q0 10 10 10 m478 0 q10 0 10 -10 m-448 10 h10 m0 0 h10 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v1 m40 0 v-1 m-40 1 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 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 m40 28 h10 m0 0 h10 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v1 m40 0 v-1 m-40 1 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m20 -21 h4 m14 0 h4 m20 0 h4 m54 0 h4 m0 0 h100 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 m12 0 h4 m0 0 h4 m114 0 h4 m0 0 h4 m12 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 m60 0 h4 m0 0 h94 m-438 -56 l20 0 m-1 0 q-9 0 -9 -10 l0 -36 q0 -10 10 -10 m438 56 l20 0 m-20 0 q10 0 10 -10 l0 -36 q0 -10 -10 -10 m-438 0 h4 m8 0 h4 m0 0 h422 m60 -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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-723 177 l2 0 m2 0 l2 0 m2 0 l2 0 m22 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 m36 0 h4 m0 0 h4 m54 0 h4 m0 0 h4 m46 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 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 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 m40 -21 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 m62 0 h4 m0 0 h4 m78 0 h4 m23 -21 h-3"/> + <polygon points="775 278 783 274 783 282"/> + <polygon points="775 278 767 274 767 282"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><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" title="Update" shape="rect">Update</a>   ::= 'UPDATE' 'LOW_PRIORITY'? 'IGNORE'? <a href="#tablewithalias" title="TableWithAlias" shape="rect">TableWithAlias</a> <a href="#joinslist" title="JoinsList" shape="rect">JoinsList</a> 'SET' ( <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* | '('? <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')'? '=' ( <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> | '(' <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> ')' | <a href="#expression" title="Expression" shape="rect">Expression</a> ) ( ',' '('? <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')'? '=' ( <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> | '(' <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> ')' | <a href="#expression" title="Expression" shape="rect">Expression</a> ) )* ) <a href="#outputclause" title="OutputClause" shape="rect">OutputClause</a>? ( 'FROM' <a href="#fromitem" title="FromItem" shape="rect">FromItem</a> <a href="#joinslist" title="JoinsList" shape="rect">JoinsList</a> )? <a href="#whereclause" title="WhereClause" shape="rect">WhereClause</a>? <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? <a href="#plainlimit" title="PlainLimit" shape="rect">PlainLimit</a>? ( 'RETURNING' <a href="#selectitemslist" title="SelectItemsList" shape="rect">SelectItemsList</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ListExpressionItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" 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="#selectexpressionitem" xlink:title="SelectExpressionItem" shape="rect"> + <rect x="43" y="29" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">SelectExpressionItem</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 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 m23 28 h-3"/> + <polygon points="185 38 193 34 193 42"/> + <polygon points="185 38 177 34 177 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="#listexpressionitem" title="ListExpressionItem" shape="rect">ListExpressionItem</a></div> + <div>         ::= <a href="#selectexpressionitem" title="SelectExpressionItem" shape="rect">SelectExpressionItem</a> ( ',' <a href="#selectexpressionitem" title="SelectExpressionItem" shape="rect">SelectExpressionItem</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> + + +====================================================================================================================== + Insert +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="683" height="357"> + <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="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="34">LOW_PRIORITY</text> + <rect x="91" y="50" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="62">DELAYED</text> + <rect x="91" y="78" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="90">HIGH_PRIORITY</text> + <rect x="221" y="22" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="34">IGNORE</text> + <rect x="313" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="34">INTO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="373" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="377" y="13">Table</text></a><rect x="455" y="43" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="459" y="55">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamewithoutvalue" xlink:title="RelObjectNameWithoutValue" shape="rect"> + <rect x="503" y="22" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="507" y="34">RelObjectNameWithoutValue</text></a><rect x="75" y="148" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="79" y="160">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="115" y="148" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="160">Column</text></a><rect x="115" y="120" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="119" y="132">,</text> + <rect x="189" y="148" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="193" y="160">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#outputclause" xlink:title="OutputClause" shape="rect"> + <rect x="249" y="169" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="181">OutputClause</text></a><rect x="369" y="148" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="373" y="160">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="421" y="148" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="160">Column</text></a><rect x="475" y="148" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="479" y="160">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="497" y="148" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="501" y="160">SimpleExpression</text></a><rect x="421" y="120" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="425" y="132">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectwithwithitems" xlink:title="SelectWithWithItems" shape="rect"> + <rect x="369" y="176" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="373" y="188">SelectWithWithItems</text></a><rect x="148" y="246" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="152" y="258">ON</text> + <rect x="178" y="246" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="182" y="258">DUPLICATE</text> + <rect x="244" y="246" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="248" y="258">KEY</text> + <rect x="276" y="246" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="280" y="258">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="348" y="246" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="352" y="258">Column</text></a><rect x="402" y="246" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="406" y="258">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="424" y="246" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="428" y="258">SimpleExpression</text></a><rect x="348" y="218" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="352" y="230">,</text> + <rect x="113" y="316" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="328">ON</text> + <rect x="143" y="316" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="328">CONFLICT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insertconflicttarget" xlink:title="InsertConflictTarget" shape="rect"> + <rect x="225" y="337" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="229" y="349">InsertConflictTarget</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#insertconflictaction" xlink:title="InsertConflictAction" shape="rect"> + <rect x="349" y="316" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="353" y="328">InsertConflictAction</text></a><rect x="491" y="316" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="495" y="328">RETURNING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectitemslist" xlink:title="SelectItemsList" shape="rect"> + <rect x="561" y="316" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="565" y="328">SelectItemsList</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 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 m-100 -10 v20 m110 0 v-20 m-110 20 v8 m110 0 v-8 m-110 8 q0 10 10 10 m90 0 q10 0 10 -10 m-100 10 h4 m48 0 h4 m0 0 h34 m-100 -10 v20 m110 0 v-20 m-110 20 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 m40 -77 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 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 m32 0 h4 m20 -21 h4 m34 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-208 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 m142 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-642 147 l2 0 m2 0 l2 0 m2 0 l2 0 m22 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 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 h10 m0 0 h124 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 m40 -21 h4 m24 0 h4 m20 0 h4 m46 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 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 m-246 28 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 m106 0 h4 m0 0 h132 m22 -28 l2 0 m2 0 l2 0 m2 0 l2 0 m-531 98 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m22 0 h4 m0 0 h4 m58 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m44 0 h4 m20 0 h4 m46 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 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 m-394 28 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 h10 m0 0 h384 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-493 49 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h328 m-358 0 h20 m338 0 h20 m-378 0 q10 0 10 10 m358 0 q0 -10 10 -10 m-368 10 v1 m358 0 v-1 m-358 1 q0 10 10 10 m338 0 q10 0 10 -10 m-348 10 h4 m22 0 h4 m0 0 h4 m54 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 m20 -21 h4 m94 0 h4 m40 -21 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 m62 0 h4 m0 0 h4 m78 0 h4 m23 -21 h-3"/> + <polygon points="673 304 681 300 681 308"/> + <polygon points="673 304 665 300 665 308"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><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" title="Insert" shape="rect">Insert</a>   ::= 'INSERT' ( 'LOW_PRIORITY' | 'DELAYED' | 'HIGH_PRIORITY' )? 'IGNORE'? 'INTO'? + <a href="#table" title="Table" shape="rect">Table</a> ( 'AS'? <a href="#relobjectnamewithoutvalue" title="RelObjectNameWithoutValue" shape="rect">RelObjectNameWithoutValue</a> )? ( '(' <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')' )? <a href="#outputclause" title="OutputClause" shape="rect">OutputClause</a>? ( 'SET' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* | <a href="#selectwithwithitems" title="SelectWithWithItems" shape="rect">SelectWithWithItems</a> ) ( 'ON' 'DUPLICATE' 'KEY' 'UPDATE' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* )? ( 'ON' 'CONFLICT' <a href="#insertconflicttarget" title="InsertConflictTarget" shape="rect">InsertConflictTarget</a>? <a href="#insertconflictaction" title="InsertConflictAction" shape="rect">InsertConflictAction</a> )? ( 'RETURNING' <a href="#selectitemslist" title="SelectItemsList" shape="rect">SelectItemsList</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + InsertConflictTarget +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="347" height="70"> + <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="#relobjectnameext2" xlink:title="RelObjectNameExt2" shape="rect"> + <rect x="63" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">RelObjectNameExt2</text></a><rect x="171" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="175" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whereclause" xlink:title="WhereClause" shape="rect"> + <rect x="211" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="215" y="34">WhereClause</text></a><rect x="43" y="50" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">ON</text> + <rect x="73" y="50" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="62">CONSTRAINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext2" xlink:title="RelObjectNameExt2" shape="rect"> + <rect x="149" y="50" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="153" y="62">RelObjectNameExt2</text></a><path class="line" d="m17 10 h2 m20 0 h4 m12 0 h4 m0 0 h4 m100 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 m-268 -21 h20 m268 0 h20 m-308 0 q10 0 10 10 m288 0 q0 -10 10 -10 m-298 10 v29 m288 0 v-29 m-288 29 q0 10 10 10 m268 0 q10 0 10 -10 m-278 10 h4 m22 0 h4 m0 0 h4 m68 0 h4 m0 0 h4 m100 0 h4 m0 0 h54 m23 -49 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="#insertconflicttarget" title="InsertConflictTarget" shape="rect">InsertConflictTarget</a></div> + <div>         ::= '(' <a href="#relobjectnameext2" title="RelObjectNameExt2" shape="rect">RelObjectNameExt2</a> ')' <a href="#whereclause" title="WhereClause" shape="rect">WhereClause</a>?</div> + <div>           | 'ON' 'CONSTRAINT' <a href="#relobjectnameext2" title="RelObjectNameExt2" shape="rect">RelObjectNameExt2</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" title="insert">insert</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + InsertConflictAction +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="795" height="259"> + <polygon points="11 10 3 6 3 14"/> + <polygon points="19 10 11 6 11 14"/> + <rect x="25" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="29" y="13">DO</text> + <rect x="37" y="43" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="41" y="55">NOTHING</text> + <rect x="37" y="99" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="41" y="111">UPDATE</text> + <rect x="89" y="99" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="111">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="161" y="99" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="111">Column</text></a><rect x="215" y="99" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="111">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="237" y="99" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="241" y="111">SimpleExpression</text></a><rect x="161" y="71" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="83">,</text> + <rect x="181" y="204" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="216">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="241" y="183" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="195">Column</text></a><rect x="241" y="155" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="167">,</text> + <rect x="335" y="204" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="216">)</text> + <rect x="375" y="183" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="195">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="417" y="183" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="421" y="195">SubSelect</text></a><rect x="417" y="211" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="421" y="223">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="437" y="211" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="441" y="223">ComplexExpressionList</text></a><rect x="559" y="211" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="563" y="223">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="417" y="239" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="421" y="251">Expression</text></a><rect x="161" y="127" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="139">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whereclause" xlink:title="WhereClause" shape="rect"> + <rect x="659" y="120" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="663" y="132">WhereClause</text></a><path class="line" d="m19 10 h2 m0 0 h4 m22 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-62 42 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m52 0 h4 m0 0 h662 m-742 0 h20 m722 0 h20 m-762 0 q10 0 10 10 m742 0 q0 -10 10 -10 m-752 10 v36 m742 0 v-36 m-742 36 q0 10 10 10 m722 0 q10 0 10 -10 m-732 10 h4 m44 0 h4 m0 0 h4 m24 0 h4 m40 0 h4 m46 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 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 h264 m-498 0 h20 m478 0 h20 m-518 0 q10 0 10 10 m498 0 q0 -10 10 -10 m-508 10 v64 m498 0 v-64 m-498 64 q0 10 10 10 m478 0 q10 0 10 -10 m-448 10 h10 m0 0 h10 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v1 m40 0 v-1 m-40 1 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 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 m40 28 h10 m0 0 h10 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v1 m40 0 v-1 m-40 1 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m20 -21 h4 m14 0 h4 m20 0 h4 m54 0 h4 m0 0 h100 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 m12 0 h4 m0 0 h4 m114 0 h4 m0 0 h4 m12 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 m60 0 h4 m0 0 h94 m-438 -56 l20 0 m-1 0 q-9 0 -9 -10 l0 -36 q0 -10 10 -10 m438 56 l20 0 m-20 0 q10 0 10 -10 l0 -36 q0 -10 -10 -10 m-438 0 h4 m8 0 h4 m0 0 h422 m60 -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 m43 -77 h-3"/> + <polygon points="785 52 793 48 793 56"/> + <polygon points="785 52 777 48 777 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="#insertconflictaction" title="InsertConflictAction" shape="rect">InsertConflictAction</a></div> + <div>         ::= 'DO' ( 'NOTHING' | 'UPDATE' 'SET' ( <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* | '('? <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')'? '=' ( <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> | '(' <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> ')' | <a href="#expression" title="Expression" shape="rect">Expression</a> ) ( ',' '('? <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')'? '=' ( <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> | '(' <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> ')' | <a href="#expression" title="Expression" shape="rect">Expression</a> ) )* ) <a href="#whereclause" title="WhereClause" shape="rect">WhereClause</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" title="insert">insert</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OutputClause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="519" height="70"> + <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">OUTPUT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectitemslist" xlink:title="SelectItemsList" shape="rect"> + <rect x="77" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">SelectItemsList</text></a><rect x="183" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="34">INTO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#uservariable" xlink:title="UserVariable" shape="rect"> + <rect x="243" y="22" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="247" y="34">UserVariable</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="243" y="50" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="247" y="62">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="357" y="43" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="361" y="55">ColumnsNamesList</text></a><path class="line" d="m17 10 h2 m0 0 h4 m46 0 h4 m0 0 h4 m78 0 h4 m20 0 h10 m0 0 h290 m-320 0 h20 m300 0 h20 m-340 0 q10 0 10 10 m320 0 q0 -10 10 -10 m-330 10 v1 m320 0 v-1 m-320 1 q0 10 10 10 m300 0 q10 0 10 -10 m-310 10 h4 m32 0 h4 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 m34 0 h4 m0 0 h32 m40 -28 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 m43 -42 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="#outputclause" title="OutputClause" shape="rect">OutputClause</a></div> + <div>         ::= 'OUTPUT' <a href="#selectitemslist" title="SelectItemsList" shape="rect">SelectItemsList</a> ( 'INTO' ( <a href="#uservariable" title="UserVariable" shape="rect">UserVariable</a> | <a href="#table" title="Table" shape="rect">Table</a> ) <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</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" title="delete">delete</a></li><li><a href="#insert" title="insert">insert</a></li><li><a href="#update" title="update">update</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Upsert +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="543" height="439"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="43" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">UPSERT</text> + <rect x="63" y="78" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="90">INSERT</text> + <rect x="111" y="78" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="90">OR</text> + <rect x="161" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="69">REPLACE</text> + <rect x="257" y="50" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="62">INTO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="317" y="29" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="321" y="41">Table</text></a><rect x="379" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="383" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="419" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="423" y="41">Column</text></a><rect x="419" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="423" y="13">,</text> + <rect x="493" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="497" y="41">)</text> + <rect x="101" y="148" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="160">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="153" y="148" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="157" y="160">Column</text></a><rect x="207" y="148" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="160">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="229" y="148" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="233" y="160">SimpleExpression</text></a><rect x="153" y="120" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="132">,</text> + <rect x="141" y="253" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="265">VALUES</text> + <rect x="141" y="281" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="293">VALUE</text> + <rect x="231" y="232" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="244">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="271" y="232" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="275" y="244">SimpleExpression</text></a><rect x="271" y="204" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="216">,</text> + <rect x="231" y="176" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="188">,</text> + <rect x="247" y="176" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="251" y="188">)</text> + <rect x="121" y="309" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="321">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectwithwithitems" xlink:title="SelectWithWithItems" shape="rect"> + <rect x="141" y="309" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="321">SelectWithWithItems</text></a><rect x="429" y="232" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="433" y="244">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectwithwithitems" xlink:title="SelectWithWithItems" shape="rect"> + <rect x="101" y="337" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="105" y="349">SelectWithWithItems</text></a><rect x="113" y="407" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="419">ON</text> + <rect x="143" y="407" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="419">DUPLICATE</text> + <rect x="209" y="407" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="213" y="419">KEY</text> + <rect x="241" y="407" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="419">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="313" y="407" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="419">Column</text></a><rect x="367" y="407" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="371" y="419">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="389" y="407" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="393" y="419">SimpleExpression</text></a><rect x="313" y="379" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="391">,</text> + <path class="line" d="m17 38 h2 m20 0 h4 m44 0 h4 m0 0 h122 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-164 10 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 m40 0 h4 m0 0 h4 m22 0 h4 m20 -21 h4 m48 0 h4 m40 -28 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 m32 0 h4 m20 -21 h4 m34 0 h4 m20 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 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 h10 m0 0 h124 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-476 119 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m24 0 h4 m20 0 h4 m46 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 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 h102 m-368 0 h20 m348 0 h20 m-388 0 q10 0 10 10 m368 0 q0 -10 10 -10 m-378 10 v64 m368 0 v-64 m-368 64 q0 10 10 10 m348 0 q10 0 10 -10 m-318 10 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 m-60 -10 v20 m70 0 v-20 m-70 20 v8 m70 0 v-8 m-70 8 q0 10 10 10 m50 0 q10 0 10 -10 m-60 10 h4 m36 0 h4 m0 0 h6 m40 -49 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 m-158 28 l20 0 m-1 0 q-9 0 -9 -10 l0 -36 q0 -10 10 -10 m158 56 l20 0 m-20 0 q10 0 10 -10 l0 -36 q0 -10 -10 -10 m-158 0 h4 m8 0 h4 m0 0 h4 m12 0 h4 m0 0 h122 m-288 56 h20 m288 0 h20 m-328 0 q10 0 10 10 m308 0 q0 -10 10 -10 m-318 10 v57 m308 0 v-57 m-308 57 q0 10 10 10 m288 0 q10 0 10 -10 m-298 10 h4 m12 0 h4 m0 0 h4 m106 0 h4 m0 0 h154 m20 -77 h4 m12 0 h4 m-358 -10 v20 m368 0 v-20 m-368 20 v85 m368 0 v-85 m-368 85 q0 10 10 10 m348 0 q10 0 10 -10 m-358 10 h4 m106 0 h4 m0 0 h234 m22 -189 l2 0 m2 0 l2 0 m2 0 l2 0 m-400 259 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m22 0 h4 m0 0 h4 m58 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m44 0 h4 m20 0 h4 m46 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 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 m-394 28 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 h10 m0 0 h384 m23 -21 h-3"/> + <polygon points="533 416 541 412 541 420"/> + <polygon points="533 416 525 412 525 420"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#upsert" title="Upsert" shape="rect">Upsert</a>   ::= ( 'UPSERT' | ( 'INSERT' 'OR' )? 'REPLACE' ) 'INTO'? <a href="#table" title="Table" shape="rect">Table</a> ( '(' <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')' )? ( 'SET' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* | ( ( 'VALUES' | 'VALUE' )? '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* ( ')' ',' '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* )* | '(' <a href="#selectwithwithitems" title="SelectWithWithItems" shape="rect">SelectWithWithItems</a> ) ')' | <a href="#selectwithwithitems" title="SelectWithWithItems" shape="rect">SelectWithWithItems</a> ) ( 'ON' 'DUPLICATE' 'KEY' 'UPDATE' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Delete +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="767" height="243"> + <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">DELETE</text> + <rect x="91" y="50" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="62">LOW_PRIORITY</text> + <rect x="221" y="50" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="62">QUICK</text> + <rect x="307" y="50" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="311" y="62">IGNORE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#tablewithalias" xlink:title="TableWithAlias" shape="rect"> + <rect x="439" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="443" y="41">TableWithAlias</text></a><rect x="439" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="443" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#outputclause" xlink:title="OutputClause" shape="rect"> + <rect x="561" y="50" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="565" y="62">OutputClause</text></a><rect x="681" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="685" y="41">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#tablewithalias" xlink:title="TableWithAlias" shape="rect"> + <rect x="37" y="165" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="41" y="177">TableWithAlias</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#joinslist" xlink:title="JoinsList" shape="rect"> + <rect x="119" y="165" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="177">JoinsList</text></a><rect x="213" y="144" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="156">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#tablewithalias" xlink:title="TableWithAlias" shape="rect"> + <rect x="279" y="144" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="156">TableWithAlias</text></a><rect x="279" y="116" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="283" y="128">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whereclause" xlink:title="WhereClause" shape="rect"> + <rect x="421" y="165" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="177">WhereClause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="541" y="165" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="545" y="177">OrderByElements</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#plainlimit" xlink:title="PlainLimit" shape="rect"> + <rect x="679" y="165" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="683" y="177">PlainLimit</text></a><rect x="575" y="223" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="579" y="235">RETURNING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectitemslist" xlink:title="SelectItemsList" shape="rect"> + <rect x="645" y="223" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="649" y="235">SelectItemsList</text></a><path class="line" d="m17 38 h2 m0 0 h4 m40 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 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 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 m80 -21 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 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 m-242 -21 h20 m242 0 h20 m-282 0 q10 0 10 10 m262 0 q0 -10 10 -10 m-272 10 v22 m262 0 v-22 m-262 22 q0 10 10 10 m242 0 q10 0 10 -10 m-252 10 h10 m0 0 h232 m20 -42 h4 m36 0 h4 m-346 0 h20 m326 0 h20 m-366 0 q10 0 10 10 m346 0 q0 -10 10 -10 m-356 10 v34 m346 0 v-34 m-346 34 q0 10 10 10 m326 0 q10 0 10 -10 m-336 10 h10 m0 0 h316 m22 -54 l2 0 m2 0 l2 0 m2 0 l2 0 m-752 115 l2 0 m2 0 l2 0 m2 0 l2 0 m22 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 m74 0 h4 m0 0 h4 m46 0 h4 m40 -21 h4 m38 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 m-168 28 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 h10 m0 0 h158 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 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 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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-226 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 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 m62 0 h4 m0 0 h4 m78 0 h4 m23 -21 h-3"/> + <polygon points="757 211 765 207 765 215"/> + <polygon points="757 211 749 207 749 215"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><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" title="Delete" shape="rect">Delete</a>   ::= 'DELETE' 'LOW_PRIORITY'? 'QUICK'? 'IGNORE'? ( ( <a href="#tablewithalias" title="TableWithAlias" shape="rect">TableWithAlias</a> ( ',' <a href="#tablewithalias" title="TableWithAlias" shape="rect">TableWithAlias</a> )* <a href="#outputclause" title="OutputClause" shape="rect">OutputClause</a>? )? 'FROM' )? ( <a href="#tablewithalias" title="TableWithAlias" shape="rect">TableWithAlias</a> <a href="#joinslist" title="JoinsList" shape="rect">JoinsList</a> )? ( 'USING' <a href="#tablewithalias" title="TableWithAlias" shape="rect">TableWithAlias</a> ( ',' <a href="#tablewithalias" title="TableWithAlias" shape="rect">TableWithAlias</a> )* )? <a href="#whereclause" title="WhereClause" shape="rect">WhereClause</a>? <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? <a href="#plainlimit" title="PlainLimit" shape="rect">PlainLimit</a>? ( 'RETURNING' <a href="#selectitemslist" title="SelectItemsList" shape="rect">SelectItemsList</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Merge +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="607" height="177"> + <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="#tablewithalias" xlink:title="TableWithAlias" shape="rect"> + <rect x="111" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">TableWithAlias</text></a><rect x="193" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="197" y="13">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="259" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="13">Table</text></a><rect x="259" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="279" y="29" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="41">SubSelect</text></a><rect x="341" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="345" y="41">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="401" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="405" y="34">Alias</text></a><rect x="459" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="463" y="13">ON</text> + <rect x="489" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="493" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="509" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="513" y="13">Expression</text></a><rect x="577" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="581" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mergeupdateclause" xlink:title="MergeUpdateClause" shape="rect"> + <rect x="315" y="87" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="319" y="99">MergeUpdateClause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mergeinsertclause" xlink:title="MergeInsertClause" shape="rect"> + <rect x="447" y="108" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="451" y="120">MergeInsertClause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mergeinsertclause" xlink:title="MergeInsertClause" shape="rect"> + <rect x="315" y="136" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="319" y="148">MergeInsertClause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mergeupdateclause" xlink:title="MergeUpdateClause" shape="rect"> + <rect x="439" y="157" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="443" y="169">MergeUpdateClause</text></a><path class="line" d="m17 10 h2 m0 0 h4 m40 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m38 0 h4 m20 0 h4 m34 0 h4 m0 0 h60 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 m12 0 h4 m0 0 h4 m54 0 h4 m0 0 h4 m12 0 h4 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 m30 0 h4 m20 -21 h4 m22 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-326 65 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h246 m-276 0 h20 m256 0 h20 m-296 0 q10 0 10 10 m276 0 q0 -10 10 -10 m-286 10 v1 m276 0 v-1 m-276 1 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m104 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 m-246 -31 v20 m276 0 v-20 m-276 20 v29 m276 0 v-29 m-276 29 q0 10 10 10 m256 0 q10 0 10 -10 m-266 10 h4 m96 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 m43 -91 h-3"/> + <polygon points="597 75 605 71 605 79"/> + <polygon points="597 75 589 71 589 79"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><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" title="Merge" shape="rect">Merge</a>    ::= 'MERGE' 'INTO' <a href="#tablewithalias" title="TableWithAlias" shape="rect">TableWithAlias</a> 'USING' ( <a href="#table" title="Table" shape="rect">Table</a> | '(' <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ')' ) <a href="#alias" title="Alias" shape="rect">Alias</a>? 'ON' '(' <a href="#expression" title="Expression" shape="rect">Expression</a> ')' ( <a href="#mergeupdateclause" title="MergeUpdateClause" shape="rect">MergeUpdateClause</a> <a href="#mergeinsertclause" title="MergeInsertClause" shape="rect">MergeInsertClause</a>? | <a href="#mergeinsertclause" title="MergeInsertClause" shape="rect">MergeInsertClause</a> <a href="#mergeupdateclause" title="MergeUpdateClause" shape="rect">MergeUpdateClause</a>? )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + MergeUpdateClause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="635" height="128"> + <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">WHEN</text> + <rect x="69" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="41">MATCHED</text> + <rect x="129" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="41">THEN</text> + <rect x="169" y="29" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="41">UPDATE</text> + <rect x="221" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="41">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="273" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="277" y="41">Column</text></a><rect x="327" y="29" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="41">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="349" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="353" y="41">SimpleExpression</text></a><rect x="273" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="13">,</text> + <rect x="487" y="50" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="491" y="62">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="537" y="50" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="541" y="62">Expression</text></a><rect x="433" y="108" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="437" y="120">DELETE</text> + <rect x="481" y="108" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="485" y="120">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="531" y="108" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="535" y="120">Expression</text></a><path class="line" d="m17 38 h2 m0 0 h4 m38 0 h4 m0 0 h4 m52 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m24 0 h4 m20 0 h4 m46 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 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 m40 28 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 m42 0 h4 m0 0 h4 m60 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-236 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 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 m40 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m60 0 h4 m23 -21 h-3"/> + <polygon points="625 96 633 92 633 100"/> + <polygon points="625 96 617 92 617 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="#mergeupdateclause" title="MergeUpdateClause" shape="rect">MergeUpdateClause</a></div> + <div>         ::= 'WHEN' 'MATCHED' 'THEN' 'UPDATE' 'SET' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* ( 'WHERE' <a href="#expression" title="Expression" shape="rect">Expression</a> )? ( 'DELETE' 'WHERE' <a href="#expression" title="Expression" shape="rect">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="#merge" title="merge">merge</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + MergeInsertClause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="665" height="119"> + <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">WHEN</text> + <rect x="69" y="29" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="73" y="41">NOT</text> + <rect x="105" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="41">MATCHED</text> + <rect x="165" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="41">THEN</text> + <rect x="205" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="209" y="41">INSERT</text> + <rect x="273" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="313" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="41">Column</text></a><rect x="313" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="13">,</text> + <rect x="387" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="391" y="41">)</text> + <rect x="427" y="29" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="431" y="41">VALUES</text> + <rect x="477" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="481" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="517" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="521" y="41">SimpleExpression</text></a><rect x="517" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="521" y="13">,</text> + <rect x="635" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="639" y="41">)</text> + <rect x="511" y="99" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="515" y="111">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="561" y="99" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="565" y="111">Expression</text></a><path class="line" d="m17 38 h2 m0 0 h4 m38 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m52 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m40 0 h4 m20 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 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 h10 m0 0 h124 m20 -21 h4 m42 0 h4 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 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-188 49 l2 0 m2 0 l2 0 m2 0 l2 0 m22 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 m42 0 h4 m0 0 h4 m60 0 h4 m23 -21 h-3"/> + <polygon points="655 87 663 83 663 91"/> + <polygon points="655 87 647 83 647 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="#mergeinsertclause" title="MergeInsertClause" shape="rect">MergeInsertClause</a></div> + <div>         ::= 'WHEN' 'NOT' 'MATCHED' 'THEN' 'INSERT' ( '(' <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')' )? 'VALUES' '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* ')' ( 'WHERE' <a href="#expression" title="Expression" shape="rect">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="#merge" title="merge">merge</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RelObjectNameList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="443" height="94"> + <polygon points="9 43 1 39 1 47"/> + <polygon points="17 43 9 39 9 47"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="23" y="34" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="46">RelObjectNameExt</text></a><rect x="185" y="34" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="46">.</text> + <rect x="185" y="62" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="74">:</text> + <rect x="243" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="25">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext2" xlink:title="RelObjectNameExt2" shape="rect"> + <rect x="279" y="34" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="46">RelObjectNameExt2</text></a><path class="line" d="m17 43 h2 m0 0 h4 m94 0 h4 m60 0 h4 m8 0 h4 m0 0 h2 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v8 m38 0 v-8 m-38 8 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m40 -28 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 m100 0 h4 m-242 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -22 q0 -10 10 -10 m222 42 l20 0 m-20 0 q10 0 10 -10 l0 -22 q0 -10 -10 -10 m-222 0 h10 m0 0 h212 m-262 42 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-272 10 h10 m0 0 h252 m23 -49 h-3"/> + <polygon points="433 43 441 39 441 47"/> + <polygon points="433 43 425 39 425 47"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a></div> + <div>         ::= <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a> ( ( '.' | ':' ) '.'* <a href="#relobjectnameext2" title="RelObjectNameExt2" shape="rect">RelObjectNameExt2</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" title="column">column</a></li><li><a href="#createsynonym" title="createsynonym">createsynonym</a></li><li><a href="#execute" title="execute">execute</a></li><li><a href="#grant" title="grant">grant</a></li><li><a href="#index" title="index">index</a></li><li><a href="#internalfunction" title="internalfunction">internalfunction</a></li><li><a href="#nextvalexpression" title="nextvalexpression">nextvalexpression</a></li><li><a href="#sequence" title="sequence">sequence</a></li><li><a href="#synonym" title="synonym">synonym</a></li><li><a href="#table" title="table">table</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Column +====================================================================================================================== + + +.. 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="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="23" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectNameList</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="#column" title="Column" shape="rect">Column</a>   ::= <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</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><li><a href="#connectbyrootoperator" title="connectbyrootoperator">connectbyrootoperator</a></li><li><a href="#fulltextsearch" title="fulltextsearch">fulltextsearch</a></li><li><a href="#insert" title="insert">insert</a></li><li><a href="#insertconflictaction" title="insertconflictaction">insertconflictaction</a></li><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#joinerexpression" title="joinerexpression">joinerexpression</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#mergeinsertclause" title="mergeinsertclause">mergeinsertclause</a></li><li><a href="#mergeupdateclause" title="mergeupdateclause">mergeupdateclause</a></li><li><a href="#pivotforcolumns" title="pivotforcolumns">pivotforcolumns</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#update" title="update">update</a></li><li><a href="#upsert" title="upsert">upsert</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RelObjectNameWithoutValue +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="5985"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="43" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="43" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">S_QUOTED_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-date-literal" xlink:title="K_DATE_LITERAL" shape="rect"> + <rect x="43" y="57" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">K_DATE_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-datetimeliteral" xlink:title="K_DATETIMELITERAL" shape="rect"> + <rect x="43" y="85" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">K_DATETIMELITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-string-function-name" xlink:title="K_STRING_FUNCTION_NAME" shape="rect"> + <rect x="43" y="113" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">K_STRING_FUNCTION_NAME</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-isolation" xlink:title="K_ISOLATION" shape="rect"> + <rect x="43" y="141" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">K_ISOLATION</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-time-key-expr" xlink:title="K_TIME_KEY_EXPR" shape="rect"> + <rect x="43" y="169" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">K_TIME_KEY_EXPR</text></a><rect x="43" y="197" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">ACTION</text> + <rect x="43" y="225" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">ACTIVE</text> + <rect x="43" y="253" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">ADD</text> + <rect x="43" y="281" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">ADVANCE</text> + <rect x="43" y="309" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">ADVISE</text> + <rect x="43" y="337" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="349">AGAINST</text> + <rect x="43" y="365" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="377">ALGORITHM</text> + <rect x="43" y="393" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="405">ALTER</text> + <rect x="43" y="421" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="433">ANALYZE</text> + <rect x="43" y="449" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="461">APPLY</text> + <rect x="43" y="477" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="489">ARCHIVE</text> + <rect x="43" y="505" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="517">ARRAY</text> + <rect x="43" y="533" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="545">ASC</text> + <rect x="43" y="561" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="573">AT</text> + <rect x="43" y="589" width="86" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="601">AUTHORIZATION</text> + <rect x="43" y="617" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="629">BEGIN</text> + <rect x="43" y="645" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="657">BINARY</text> + <rect x="43" y="673" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="685">BIT</text> + <rect x="43" y="701" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="713">BUFFERS</text> + <rect x="43" y="729" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="741">BY</text> + <rect x="43" y="757" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="769">BYTE</text> + <rect x="43" y="785" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="797">BYTES</text> + <rect x="43" y="813" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="825">CACHE</text> + <rect x="43" y="841" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="853">CALL</text> + <rect x="43" y="869" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="881">CASCADE</text> + <rect x="43" y="897" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="909">CASE</text> + <rect x="43" y="925" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="937">CAST</text> + <rect x="43" y="953" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="965">CHANGE</text> + <rect x="43" y="981" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="993">CHANGES</text> + <rect x="43" y="1009" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1021">CHAR</text> + <rect x="43" y="1037" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1049">CHARACTER</text> + <rect x="43" y="1065" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1077">CHECKPOINT</text> + <rect x="43" y="1093" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1105">CLOSE</text> + <rect x="43" y="1121" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1133">COLLATE</text> + <rect x="43" y="1149" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1161">COLUMN</text> + <rect x="43" y="1177" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1189">COLUMNS</text> + <rect x="43" y="1205" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1217">COMMENT</text> + <rect x="43" y="1233" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1245">COMMIT</text> + <rect x="43" y="1261" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1273">CONFLICT</text> + <rect x="43" y="1289" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1301">COSTS</text> + <rect x="43" y="1317" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1329">CS</text> + <rect x="43" y="1345" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1357">CYCLE</text> + <rect x="43" y="1373" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1385">DATABASE</text> + <rect x="43" y="1401" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1413">DDL</text> + <rect x="43" y="1429" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1441">DECLARE</text> + <rect x="43" y="1457" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1469">DEFAULT</text> + <rect x="43" y="1485" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1497">DEFERRABLE</text> + <rect x="43" y="1513" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1525">DELAYED</text> + <rect x="43" y="1541" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1553">DELETE</text> + <rect x="43" y="1569" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1581">DESC</text> + <rect x="43" y="1597" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1609">DESCRIBE</text> + <rect x="43" y="1625" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1637">DISABLE</text> + <rect x="43" y="1653" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1665">DISCONNECT</text> + <rect x="43" y="1681" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1693">DIV</text> + <rect x="43" y="1709" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1721">DML</text> + <rect x="43" y="1737" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1749">DO</text> + <rect x="43" y="1765" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1777">DROP</text> + <rect x="43" y="1793" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1805">DUMP</text> + <rect x="43" y="1821" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1833">DUPLICATE</text> + <rect x="43" y="1849" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1861">EMIT</text> + <rect x="43" y="1877" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1889">ENABLE</text> + <rect x="43" y="1905" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1917">END</text> + <rect x="43" y="1933" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1945">ESCAPE</text> + <rect x="43" y="1961" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1973">EXCLUDE</text> + <rect x="43" y="1989" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2001">EXEC</text> + <rect x="43" y="2017" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2029">EXECUTE</text> + <rect x="43" y="2045" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2057">EXPLAIN</text> + <rect x="43" y="2073" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2085">EXTENDED</text> + <rect x="43" y="2101" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2113">EXTRACT</text> + <rect x="43" y="2129" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2141">FALSE</text> + <rect x="43" y="2157" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2169">FILTER</text> + <rect x="43" y="2185" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2197">FIRST</text> + <rect x="43" y="2213" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2225">FLUSH</text> + <rect x="43" y="2241" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2253">FN</text> + <rect x="43" y="2269" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2281">FOLLOWING</text> + <rect x="43" y="2297" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2309">FORMAT</text> + <rect x="43" y="2325" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2337">FULLTEXT</text> + <rect x="43" y="2353" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2365">FUNCTION</text> + <rect x="43" y="2381" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2393">GLOBAL</text> + <rect x="43" y="2409" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2421">GRANT</text> + <rect x="43" y="2437" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2449">GUARD</text> + <rect x="43" y="2465" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2477">HISTORY</text> + <rect x="43" y="2493" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2505">HOPPING</text> + <rect x="43" y="2521" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2533">INCLUDE</text> + <rect x="43" y="2549" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2561">INCREMENT</text> + <rect x="43" y="2577" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2589">INDEX</text> + <rect x="43" y="2605" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2617">INSERT</text> + <rect x="43" y="2633" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2645">INTERLEAVE</text> + <rect x="43" y="2661" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2673">ISNULL</text> + <rect x="43" y="2689" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2701">JSON</text> + <rect x="43" y="2717" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2729">KEEP</text> + <rect x="43" y="2745" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2757">KEY</text> + <rect x="43" y="2773" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2785">KEYS</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="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2841">LEADING</text> + <rect x="43" y="2857" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2869">LINK</text> + <rect x="43" y="2885" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2897">LOCAL</text> + <rect x="43" y="2913" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2925">LOCKED</text> + <rect x="43" y="2941" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2953">LOG</text> + <rect x="43" y="2969" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="2981">MATCH</text> + <rect x="43" y="2997" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3009">MATCHED</text> + <rect x="43" y="3025" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3037">MATERIALIZED</text> + <rect x="43" y="3053" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3065">MAXVALUE</text> + <rect x="43" y="3081" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3093">MERGE</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="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3149">MODIFY</text> + <rect x="43" y="3165" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3177">MOVEMENT</text> + <rect x="43" y="3193" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3205">NEXT</text> + <rect x="43" y="3221" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3233">NO</text> + <rect x="43" y="3249" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3261">NOCACHE</text> + <rect x="43" y="3277" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3289">NOKEEP</text> + <rect x="43" y="3305" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3317">NOLOCK</text> + <rect x="43" y="3333" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3345">NOMAXVALUE</text> + <rect x="43" y="3361" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3373">NOMINVALUE</text> + <rect x="43" y="3389" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3401">NOORDER</text> + <rect x="43" y="3417" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3429">NOTHING</text> + <rect x="43" y="3445" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3457">NOVALIDATE</text> + <rect x="43" y="3473" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3485">NOWAIT</text> + <rect x="43" y="3501" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3513">NULLS</text> + <rect x="43" y="3529" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3541">OF</text> + <rect x="43" y="3557" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3569">OFF</text> + <rect x="43" y="3585" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3597">OPEN</text> + <rect x="43" y="3613" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3625">OVER</text> + <rect x="43" y="3641" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3653">OVERLAPS</text> + <rect x="43" y="3669" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3681">PARALLEL</text> + <rect x="43" y="3697" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3709">PARENT</text> + <rect x="43" y="3725" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3737">PARTITION</text> + <rect x="43" y="3753" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3765">PATH</text> + <rect x="43" y="3781" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3793">PERCENT</text> + <rect x="43" y="3809" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3821">PLACING</text> + <rect x="43" y="3837" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3849">PRECEDING</text> + <rect x="43" y="3865" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3877">PRECISION</text> + <rect x="43" y="3893" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3905">PRIMARY</text> + <rect x="43" y="3921" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3933">PRIOR</text> + <rect x="43" y="3949" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3961">PURGE</text> + <rect x="43" y="3977" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="3989">QUERY</text> + <rect x="43" y="4005" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4017">QUICK</text> + <rect x="43" y="4033" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4045">QUIESCE</text> + <rect x="43" y="4061" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4073">RANGE</text> + <rect x="43" y="4089" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4101">READ</text> + <rect x="43" y="4117" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4129">RECYCLEBIN</text> + <rect x="43" y="4145" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4157">REFERENCES</text> + <rect x="43" y="4173" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4185">REGISTER</text> + <rect x="43" y="4201" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4213">RENAME</text> + <rect x="43" y="4229" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4241">REPLACE</text> + <rect x="43" y="4257" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4269">RESET</text> + <rect x="43" y="4285" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4297">RESTART</text> + <rect x="43" y="4313" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4325">RESTRICT</text> + <rect x="43" y="4341" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4353">RESTRICTED</text> + <rect x="43" y="4369" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4381">RESUMABLE</text> + <rect x="43" y="4397" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4409">RESUME</text> + <rect x="43" y="4425" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4437">RLIKE</text> + <rect x="43" y="4453" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4465">ROLLBACK</text> + <rect x="43" y="4481" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4493">ROW</text> + <rect x="43" y="4509" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4521">ROWS</text> + <rect x="43" y="4537" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4549">RR</text> + <rect x="43" y="4565" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4577">RS</text> + <rect x="43" y="4593" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4605">SAVEPOINT</text> + <rect x="43" y="4621" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4633">SCHEMA</text> + <rect x="43" y="4649" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4661">SEPARATOR</text> + <rect x="43" y="4677" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4689">SEQUENCE</text> + <rect x="43" y="4705" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4717">SESSION</text> + <rect x="43" y="4733" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4745">SETS</text> + <rect x="43" y="4761" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4773">SHOW</text> + <rect x="43" y="4789" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4801">SHUTDOWN</text> + <rect x="43" y="4817" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4829">SIBLINGS</text> + <rect x="43" y="4845" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4857">SIGNED</text> + <rect x="43" y="4873" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4885">SIMILAR</text> + <rect x="43" y="4901" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4913">SIZE</text> + <rect x="43" y="4929" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4941">SKIP</text> + <rect x="43" y="4957" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4969">STORED</text> + <rect x="43" y="4985" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="4997">STRING</text> + <rect x="43" y="5013" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5025">SUSPEND</text> + <rect x="43" y="5041" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5053">SWITCH</text> + <rect x="43" y="5069" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5081">SYNONYM</text> + <rect x="43" y="5097" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5109">SYSTEM</text> + <rect x="43" y="5125" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5137">TABLE</text> + <rect x="43" y="5153" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5165">TABLESPACE</text> + <rect x="43" y="5181" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5193">TEMP</text> + <rect x="43" y="5209" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5221">TEMPORARY</text> + <rect x="43" y="5237" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5249">THEN</text> + <rect x="43" y="5265" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5277">TIMEOUT</text> + <rect x="43" y="5293" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5305">TIMESTAMPTZ</text> + <rect x="43" y="5321" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5333">TO</text> + <rect x="43" y="5349" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5361">TRUE</text> + <rect x="43" y="5377" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5389">TRUNCATE</text> + <rect x="43" y="5405" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5417">TUMBLING</text> + <rect x="43" y="5433" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5445">TYPE</text> + <rect x="43" y="5461" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5473">UNLOGGED</text> + <rect x="43" y="5489" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5501">UNQIESCE</text> + <rect x="43" y="5517" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5529">UNSIGNED</text> + <rect x="43" y="5545" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5557">UPDATE</text> + <rect x="43" y="5573" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5585">UPSERT</text> + <rect x="43" y="5601" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5613">UR</text> + <rect x="43" y="5629" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5641">USER</text> + <rect x="43" y="5657" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5669">VALIDATE</text> + <rect x="43" y="5685" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5697">VERBOSE</text> + <rect x="43" y="5713" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5725">VIEW</text> + <rect x="43" y="5741" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5753">WAIT</text> + <rect x="43" y="5769" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5781">WITHIN</text> + <rect x="43" y="5797" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5809">WITHOUT</text> + <rect x="43" y="5825" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5837">WORK</text> + <rect x="43" y="5853" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5865">XML</text> + <rect x="43" y="5881" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5893">XMLAGG</text> + <rect x="43" y="5909" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5921">XMLTEXT</text> + <rect x="43" y="5937" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5949">YAML</text> + <rect x="43" y="5965" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="5977">ZONE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m74 0 h4 m0 0 h70 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 m120 0 h4 m0 0 h24 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 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 m104 0 h4 m0 0 h40 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 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 m72 0 h4 m0 0 h72 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 m98 0 h4 m0 0 h46 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 m44 0 h4 m0 0 h100 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 m40 0 h4 m0 0 h104 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 m28 0 h4 m0 0 h116 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 m52 0 h4 m0 0 h92 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 m42 0 h4 m0 0 h102 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 m48 0 h4 m0 0 h96 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 m64 0 h4 m0 0 h80 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 m36 0 h4 m0 0 h108 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 m48 0 h4 m0 0 h96 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 m36 0 h4 m0 0 h108 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 m48 0 h4 m0 0 h96 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 m38 0 h4 m0 0 h106 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 m26 0 h4 m0 0 h118 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 m20 0 h4 m0 0 h124 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 m86 0 h4 m0 0 h58 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 m36 0 h4 m0 0 h108 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 m42 0 h4 m0 0 h102 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 m22 0 h4 m0 0 h122 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 m48 0 h4 m0 0 h96 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 m20 0 h4 m0 0 h124 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 m30 0 h4 m0 0 h114 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 m36 0 h4 m0 0 h108 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 m38 0 h4 m0 0 h106 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 m30 0 h4 m0 0 h114 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 m50 0 h4 m0 0 h94 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 m32 0 h4 m0 0 h112 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 m32 0 h4 m0 0 h112 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 m46 0 h4 m0 0 h98 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 m52 0 h4 m0 0 h92 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 m34 0 h4 m0 0 h110 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 m62 0 h4 m0 0 h82 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 m68 0 h4 m0 0 h76 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 m38 0 h4 m0 0 h106 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 m48 0 h4 m0 0 h96 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 m48 0 h4 m0 0 h96 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 m54 0 h4 m0 0 h90 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 m56 0 h4 m0 0 h88 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 m48 0 h4 m0 0 h96 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 m54 0 h4 m0 0 h90 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 m38 0 h4 m0 0 h106 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 m20 0 h4 m0 0 h124 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 m36 0 h4 m0 0 h108 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 m56 0 h4 m0 0 h88 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 m26 0 h4 m0 0 h118 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 m48 0 h4 m0 0 h96 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 m48 0 h4 m0 0 h96 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 m66 0 h4 m0 0 h78 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 m48 0 h4 m0 0 h96 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 m40 0 h4 m0 0 h104 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 m32 0 h4 m0 0 h112 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 m52 0 h4 m0 0 h92 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 m46 0 h4 m0 0 h98 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 m68 0 h4 m0 0 h76 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 m24 0 h4 m0 0 h120 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 m28 0 h4 m0 0 h116 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 m22 0 h4 m0 0 h122 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 m34 0 h4 m0 0 h110 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 m36 0 h4 m0 0 h108 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 m58 0 h4 m0 0 h86 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 m30 0 h4 m0 0 h114 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 m42 0 h4 m0 0 h102 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 m26 0 h4 m0 0 h118 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 m42 0 h4 m0 0 h102 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 m48 0 h4 m0 0 h96 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 m30 0 h4 m0 0 h114 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 m48 0 h4 m0 0 h96 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 m46 0 h4 m0 0 h98 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 m56 0 h4 m0 0 h88 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 m48 0 h4 m0 0 h96 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 m36 0 h4 m0 0 h108 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 m38 0 h4 m0 0 h106 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 m34 0 h4 m0 0 h110 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 m38 0 h4 m0 0 h106 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 m20 0 h4 m0 0 h124 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 m66 0 h4 m0 0 h78 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 m46 0 h4 m0 0 h98 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 m50 0 h4 m0 0 h94 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 m56 0 h4 m0 0 h88 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 m44 0 h4 m0 0 h100 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 m40 0 h4 m0 0 h104 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 m40 0 h4 m0 0 h104 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 m50 0 h4 m0 0 h94 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 m52 0 h4 m0 0 h92 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 m48 0 h4 m0 0 h96 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 m62 0 h4 m0 0 h82 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 m36 0 h4 m0 0 h108 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 m40 0 h4 m0 0 h104 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 m62 0 h4 m0 0 h82 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 m40 0 h4 m0 0 h104 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 m32 0 h4 m0 0 h112 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 m30 0 h4 m0 0 h114 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 m24 0 h4 m0 0 h120 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 m30 0 h4 m0 0 h114 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 m30 0 h4 m0 0 h114 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 m48 0 h4 m0 0 h96 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 m30 0 h4 m0 0 h114 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 m38 0 h4 m0 0 h106 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 m44 0 h4 m0 0 h100 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 m28 0 h4 m0 0 h116 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 m40 0 h4 m0 0 h104 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 m52 0 h4 m0 0 h92 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 m74 0 h4 m0 0 h70 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 m58 0 h4 m0 0 h86 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 m40 0 h4 m0 0 h104 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 m56 0 h4 m0 0 h88 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 m46 0 h4 m0 0 h98 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 m62 0 h4 m0 0 h82 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 m32 0 h4 m0 0 h112 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 m22 0 h4 m0 0 h122 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 m54 0 h4 m0 0 h90 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 m46 0 h4 m0 0 h98 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 m48 0 h4 m0 0 h96 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 m72 0 h4 m0 0 h72 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 m70 0 h4 m0 0 h74 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 m56 0 h4 m0 0 h88 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 m52 0 h4 m0 0 h92 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 m68 0 h4 m0 0 h76 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 m48 0 h4 m0 0 h96 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 m38 0 h4 m0 0 h106 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 m20 0 h4 m0 0 h124 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 m26 0 h4 m0 0 h118 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 m34 0 h4 m0 0 h110 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 m34 0 h4 m0 0 h110 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 m56 0 h4 m0 0 h88 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 m52 0 h4 m0 0 h92 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 m44 0 h4 m0 0 h100 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 m58 0 h4 m0 0 h86 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 m32 0 h4 m0 0 h112 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 m48 0 h4 m0 0 h96 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 m48 0 h4 m0 0 h96 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 m60 0 h4 m0 0 h84 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 m60 0 h4 m0 0 h84 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 m50 0 h4 m0 0 h94 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 m38 0 h4 m0 0 h106 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 m38 0 h4 m0 0 h106 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 m40 0 h4 m0 0 h104 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 m38 0 h4 m0 0 h106 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 m48 0 h4 m0 0 h96 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 m40 0 h4 m0 0 h104 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 m32 0 h4 m0 0 h112 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 m64 0 h4 m0 0 h80 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 m66 0 h4 m0 0 h78 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 m52 0 h4 m0 0 h92 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 m46 0 h4 m0 0 h98 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 m48 0 h4 m0 0 h96 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 m36 0 h4 m0 0 h108 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 m48 0 h4 m0 0 h96 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 m52 0 h4 m0 0 h92 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 m64 0 h4 m0 0 h80 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 m62 0 h4 m0 0 h82 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 m46 0 h4 m0 0 h98 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 m34 0 h4 m0 0 h110 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 m56 0 h4 m0 0 h88 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 m32 0 h4 m0 0 h112 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 m38 0 h4 m0 0 h106 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 m20 0 h4 m0 0 h124 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 m20 0 h4 m0 0 h124 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 m60 0 h4 m0 0 h84 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 m46 0 h4 m0 0 h98 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 m64 0 h4 m0 0 h80 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 m56 0 h4 m0 0 h88 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 m50 0 h4 m0 0 h94 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 m30 0 h4 m0 0 h114 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 m40 0 h4 m0 0 h104 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 m66 0 h4 m0 0 h78 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 m52 0 h4 m0 0 h92 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 m42 0 h4 m0 0 h102 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 m46 0 h4 m0 0 h98 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 m28 0 h4 m0 0 h116 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 m30 0 h4 m0 0 h114 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 m46 0 h4 m0 0 h98 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 m42 0 h4 m0 0 h102 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 m52 0 h4 m0 0 h92 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 m46 0 h4 m0 0 h98 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 m56 0 h4 m0 0 h88 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 m44 0 h4 m0 0 h100 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 m36 0 h4 m0 0 h108 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 m64 0 h4 m0 0 h80 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 m32 0 h4 m0 0 h112 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 m66 0 h4 m0 0 h78 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 m32 0 h4 m0 0 h112 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 m50 0 h4 m0 0 h94 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 m72 0 h4 m0 0 h72 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 m20 0 h4 m0 0 h124 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 m32 0 h4 m0 0 h112 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 m56 0 h4 m0 0 h88 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 m56 0 h4 m0 0 h88 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 m30 0 h4 m0 0 h114 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 m60 0 h4 m0 0 h84 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 m56 0 h4 m0 0 h88 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 m56 0 h4 m0 0 h88 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 m44 0 h4 m0 0 h100 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 m44 0 h4 m0 0 h100 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 m20 0 h4 m0 0 h124 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 m32 0 h4 m0 0 h112 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 m52 0 h4 m0 0 h92 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 m50 0 h4 m0 0 h94 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 m34 0 h4 m0 0 h110 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 m34 0 h4 m0 0 h110 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 m44 0 h4 m0 0 h100 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 m54 0 h4 m0 0 h90 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 m40 0 h4 m0 0 h104 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 m28 0 h4 m0 0 h116 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 m46 0 h4 m0 0 h98 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 m48 0 h4 m0 0 h96 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 m34 0 h4 m0 0 h110 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 m34 0 h4 m0 0 h110 m23 -5964 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="#relobjectnamewithoutvalue" title="RelObjectNameWithoutValue" shape="rect">RelObjectNameWithoutValue</a></div> + <div>         ::= <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a></div> + <div>           | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a></div> + <div>           | <a href="#k-date-literal" title="K_DATE_LITERAL" shape="rect">K_DATE_LITERAL</a></div> + <div>           | <a href="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a></div> + <div>           | <a href="#k-string-function-name" title="K_STRING_FUNCTION_NAME" shape="rect">K_STRING_FUNCTION_NAME</a></div> + <div>           | <a href="#k-isolation" title="K_ISOLATION" shape="rect">K_ISOLATION</a></div> + <div>           | <a href="#k-time-key-expr" title="K_TIME_KEY_EXPR" shape="rect">K_TIME_KEY_EXPR</a></div> + <div>           | 'ACTION'</div> + <div>           | 'ACTIVE'</div> + <div>           | 'ADD'</div> + <div>           | 'ADVANCE'</div> + <div>           | 'ADVISE'</div> + <div>           | 'AGAINST'</div> + <div>           | 'ALGORITHM'</div> + <div>           | 'ALTER'</div> + <div>           | 'ANALYZE'</div> + <div>           | 'APPLY'</div> + <div>           | 'ARCHIVE'</div> + <div>           | 'ARRAY'</div> + <div>           | 'ASC'</div> + <div>           | 'AT'</div> + <div>           | 'AUTHORIZATION'</div> + <div>           | 'BEGIN'</div> + <div>           | 'BINARY'</div> + <div>           | 'BIT'</div> + <div>           | 'BUFFERS'</div> + <div>           | 'BY'</div> + <div>           | 'BYTE'</div> + <div>           | 'BYTES'</div> + <div>           | 'CACHE'</div> + <div>           | 'CALL'</div> + <div>           | 'CASCADE'</div> + <div>           | 'CASE'</div> + <div>           | 'CAST'</div> + <div>           | 'CHANGE'</div> + <div>           | 'CHANGES'</div> + <div>           | 'CHAR'</div> + <div>           | 'CHARACTER'</div> + <div>           | 'CHECKPOINT'</div> + <div>           | 'CLOSE'</div> + <div>           | 'COLLATE'</div> + <div>           | 'COLUMN'</div> + <div>           | 'COLUMNS'</div> + <div>           | 'COMMENT'</div> + <div>           | 'COMMIT'</div> + <div>           | 'CONFLICT'</div> + <div>           | 'COSTS'</div> + <div>           | 'CS'</div> + <div>           | 'CYCLE'</div> + <div>           | 'DATABASE'</div> + <div>           | 'DDL'</div> + <div>           | 'DECLARE'</div> + <div>           | 'DEFAULT'</div> + <div>           | 'DEFERRABLE'</div> + <div>           | 'DELAYED'</div> + <div>           | 'DELETE'</div> + <div>           | 'DESC'</div> + <div>           | 'DESCRIBE'</div> + <div>           | 'DISABLE'</div> + <div>           | 'DISCONNECT'</div> + <div>           | 'DIV'</div> + <div>           | 'DML'</div> + <div>           | 'DO'</div> + <div>           | 'DROP'</div> + <div>           | 'DUMP'</div> + <div>           | 'DUPLICATE'</div> + <div>           | 'EMIT'</div> + <div>           | 'ENABLE'</div> + <div>           | 'END'</div> + <div>           | 'ESCAPE'</div> + <div>           | 'EXCLUDE'</div> + <div>           | 'EXEC'</div> + <div>           | 'EXECUTE'</div> + <div>           | 'EXPLAIN'</div> + <div>           | 'EXTENDED'</div> + <div>           | 'EXTRACT'</div> + <div>           | 'FALSE'</div> + <div>           | 'FILTER'</div> + <div>           | 'FIRST'</div> + <div>           | 'FLUSH'</div> + <div>           | 'FN'</div> + <div>           | 'FOLLOWING'</div> + <div>           | 'FORMAT'</div> + <div>           | 'FULLTEXT'</div> + <div>           | 'FUNCTION'</div> + <div>           | 'GLOBAL'</div> + <div>           | 'GRANT'</div> + <div>           | 'GUARD'</div> + <div>           | 'HISTORY'</div> + <div>           | 'HOPPING'</div> + <div>           | 'INCLUDE'</div> + <div>           | 'INCREMENT'</div> + <div>           | 'INDEX'</div> + <div>           | 'INSERT'</div> + <div>           | 'INTERLEAVE'</div> + <div>           | 'ISNULL'</div> + <div>           | 'JSON'</div> + <div>           | 'KEEP'</div> + <div>           | 'KEY'</div> + <div>           | 'KEYS'</div> + <div>           | 'LAST'</div> + <div>           | 'LEADING'</div> + <div>           | 'LINK'</div> + <div>           | 'LOCAL'</div> + <div>           | 'LOCKED'</div> + <div>           | 'LOG'</div> + <div>           | 'MATCH'</div> + <div>           | 'MATCHED'</div> + <div>           | 'MATERIALIZED'</div> + <div>           | 'MAXVALUE'</div> + <div>           | 'MERGE'</div> + <div>           | 'MINVALUE'</div> + <div>           | 'MODIFY'</div> + <div>           | 'MOVEMENT'</div> + <div>           | 'NEXT'</div> + <div>           | 'NO'</div> + <div>           | 'NOCACHE'</div> + <div>           | 'NOKEEP'</div> + <div>           | 'NOLOCK'</div> + <div>           | 'NOMAXVALUE'</div> + <div>           | 'NOMINVALUE'</div> + <div>           | 'NOORDER'</div> + <div>           | 'NOTHING'</div> + <div>           | 'NOVALIDATE'</div> + <div>           | 'NOWAIT'</div> + <div>           | 'NULLS'</div> + <div>           | 'OF'</div> + <div>           | 'OFF'</div> + <div>           | 'OPEN'</div> + <div>           | 'OVER'</div> + <div>           | 'OVERLAPS'</div> + <div>           | 'PARALLEL'</div> + <div>           | 'PARENT'</div> + <div>           | 'PARTITION'</div> + <div>           | 'PATH'</div> + <div>           | 'PERCENT'</div> + <div>           | 'PLACING'</div> + <div>           | 'PRECEDING'</div> + <div>           | 'PRECISION'</div> + <div>           | 'PRIMARY'</div> + <div>           | 'PRIOR'</div> + <div>           | 'PURGE'</div> + <div>           | 'QUERY'</div> + <div>           | 'QUICK'</div> + <div>           | 'QUIESCE'</div> + <div>           | 'RANGE'</div> + <div>           | 'READ'</div> + <div>           | 'RECYCLEBIN'</div> + <div>           | 'REFERENCES'</div> + <div>           | 'REGISTER'</div> + <div>           | 'RENAME'</div> + <div>           | 'REPLACE'</div> + <div>           | 'RESET'</div> + <div>           | 'RESTART'</div> + <div>           | 'RESTRICT'</div> + <div>           | 'RESTRICTED'</div> + <div>           | 'RESUMABLE'</div> + <div>           | 'RESUME'</div> + <div>           | 'RLIKE'</div> + <div>           | 'ROLLBACK'</div> + <div>           | 'ROW'</div> + <div>           | 'ROWS'</div> + <div>           | 'RR'</div> + <div>           | 'RS'</div> + <div>           | 'SAVEPOINT'</div> + <div>           | 'SCHEMA'</div> + <div>           | 'SEPARATOR'</div> + <div>           | 'SEQUENCE'</div> + <div>           | 'SESSION'</div> + <div>           | 'SETS'</div> + <div>           | 'SHOW'</div> + <div>           | 'SHUTDOWN'</div> + <div>           | 'SIBLINGS'</div> + <div>           | 'SIGNED'</div> + <div>           | 'SIMILAR'</div> + <div>           | 'SIZE'</div> + <div>           | 'SKIP'</div> + <div>           | 'STORED'</div> + <div>           | 'STRING'</div> + <div>           | 'SUSPEND'</div> + <div>           | 'SWITCH'</div> + <div>           | 'SYNONYM'</div> + <div>           | 'SYSTEM'</div> + <div>           | 'TABLE'</div> + <div>           | 'TABLESPACE'</div> + <div>           | 'TEMP'</div> + <div>           | 'TEMPORARY'</div> + <div>           | 'THEN'</div> + <div>           | 'TIMEOUT'</div> + <div>           | 'TIMESTAMPTZ'</div> + <div>           | 'TO'</div> + <div>           | 'TRUE'</div> + <div>           | 'TRUNCATE'</div> + <div>           | 'TUMBLING'</div> + <div>           | 'TYPE'</div> + <div>           | 'UNLOGGED'</div> + <div>           | 'UNQIESCE'</div> + <div>           | 'UNSIGNED'</div> + <div>           | 'UPDATE'</div> + <div>           | 'UPSERT'</div> + <div>           | 'UR'</div> + <div>           | 'USER'</div> + <div>           | 'VALIDATE'</div> + <div>           | 'VERBOSE'</div> + <div>           | 'VIEW'</div> + <div>           | 'WAIT'</div> + <div>           | 'WITHIN'</div> + <div>           | 'WITHOUT'</div> + <div>           | 'WORK'</div> + <div>           | 'XML'</div> + <div>           | 'XMLAGG'</div> + <div>           | 'XMLTEXT'</div> + <div>           | 'YAML'</div> + <div>           | 'ZONE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alist" title="alist">alist</a></li><li><a href="#insert" title="insert">insert</a></li><li><a href="#mysqlindexhint" title="mysqlindexhint">mysqlindexhint</a></li><li><a href="#relobjectname" title="relobjectname">relobjectname</a></li><li><a href="#relobjectnamewithoutstart" title="relobjectnamewithoutstart">relobjectnamewithoutstart</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RelObjectName +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="229" height="329"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamewithoutvalue" xlink:title="RelObjectNameWithoutValue" shape="rect"> + <rect x="43" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">RelObjectNameWithoutValue</text></a><rect x="43" y="29" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">GROUP</text> + <rect x="43" y="57" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">INTERVAL</text> + <rect x="43" y="85" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">ON</text> + <rect x="43" y="113" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">START</text> + <rect x="43" y="141" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">TOP</text> + <rect x="43" y="169" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">VALUE</text> + <rect x="43" y="197" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">VALUES</text> + <rect x="43" y="225" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">CREATE</text> + <rect x="43" y="253" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">TABLES</text> + <rect x="43" y="281" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">CONNECT</text> + <rect x="43" y="309" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">IGNORE</text> + <path class="line" d="m17 10 h2 m20 0 h4 m142 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 m42 0 h4 m0 0 h100 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 m52 0 h4 m0 0 h90 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 m22 0 h4 m0 0 h120 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 m36 0 h4 m0 0 h106 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 m26 0 h4 m0 0 h116 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 m36 0 h4 m0 0 h106 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 m42 0 h4 m0 0 h100 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 m42 0 h4 m0 0 h100 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 m42 0 h4 m0 0 h100 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 m52 0 h4 m0 0 h90 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 m44 0 h4 m0 0 h98 m23 -308 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="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a></div> + <div>         ::= <a href="#relobjectnamewithoutvalue" title="RelObjectNameWithoutValue" shape="rect">RelObjectNameWithoutValue</a></div> + <div>           | 'GROUP'</div> + <div>           | 'INTERVAL'</div> + <div>           | 'ON'</div> + <div>           | 'START'</div> + <div>           | 'TOP'</div> + <div>           | 'VALUE'</div> + <div>           | 'VALUES'</div> + <div>           | 'CREATE'</div> + <div>           | 'TABLES'</div> + <div>           | 'CONNECT'</div> + <div>           | 'IGNORE'</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="#alterexpression" title="alterexpression">alterexpression</a></li><li><a href="#alterexpressioncolumndatatype" title="alterexpressioncolumndatatype">alterexpressioncolumndatatype</a></li><li><a href="#alterexpressioncolumndropdefault" title="alterexpressioncolumndropdefault">alterexpressioncolumndropdefault</a></li><li><a href="#alterexpressioncolumndropnotnull" title="alterexpressioncolumndropnotnull">alterexpressioncolumndropnotnull</a></li><li><a href="#columndefinition" title="columndefinition">columndefinition</a></li><li><a href="#columnnameswithparamslist" title="columnnameswithparamslist">columnnameswithparamslist</a></li><li><a href="#columnsnameslistitem" title="columnsnameslistitem">columnsnameslistitem</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#createtable" title="createtable">createtable</a></li><li><a href="#declare" title="declare">declare</a></li><li><a href="#extractexpression" title="extractexpression">extractexpression</a></li><li><a href="#funcargslistitem" title="funcargslistitem">funcargslistitem</a></li><li><a href="#internalfunction" title="internalfunction">internalfunction</a></li><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#relobjectnameext" title="relobjectnameext">relobjectnameext</a></li><li><a href="#reset" title="reset">reset</a></li><li><a href="#sqlserverhint" title="sqlserverhint">sqlserverhint</a></li><li><a href="#userslist" title="userslist">userslist</a></li><li><a href="#valueslist" title="valueslist">valueslist</a></li><li><a href="#withitem" title="withitem">withitem</a></li><li><a href="#windowfun" title="windowfun">windowfun</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RelObjectNameWithoutStart +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="229" 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="#relobjectnamewithoutvalue" xlink:title="RelObjectNameWithoutValue" shape="rect"> + <rect x="43" y="1" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">RelObjectNameWithoutValue</text></a><rect x="43" y="29" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">TOP</text> + <rect x="43" y="57" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">VALUE</text> + <rect x="43" y="85" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">VALUES</text> + <rect x="43" y="113" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">INTERVAL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m142 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 m26 0 h4 m0 0 h116 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 m36 0 h4 m0 0 h106 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 m42 0 h4 m0 0 h100 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 m52 0 h4 m0 0 h90 m23 -112 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="#relobjectnamewithoutstart" title="RelObjectNameWithoutStart" shape="rect">RelObjectNameWithoutStart</a></div> + <div>         ::= <a href="#relobjectnamewithoutvalue" title="RelObjectNameWithoutValue" shape="rect">RelObjectNameWithoutValue</a></div> + <div>           | 'TOP'</div> + <div>           | 'VALUE'</div> + <div>           | 'VALUES'</div> + <div>           | 'INTERVAL'</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></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RelObjectNameExt +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="167" height="525"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="43" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">RelObjectName</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="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">ANY</text> + <rect x="43" y="85" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">SOME</text> + <rect x="43" y="113" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">LEFT</text> + <rect x="43" y="141" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">RIGHT</text> + <rect x="43" y="169" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">SET</text> + <rect x="43" y="197" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">DOUBLE</text> + <rect x="43" y="225" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="237">IF</text> + <rect x="43" y="253" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="265">IIF</text> + <rect x="43" y="281" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="293">OPTIMIZE</text> + <rect x="43" y="309" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="321">LIMIT</text> + <rect x="43" y="337" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="349">OFFSET</text> + <rect x="43" y="365" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="377">PROCEDURE</text> + <rect x="43" y="393" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="405">PUBLIC</text> + <rect x="43" y="421" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="433">CASEWHEN</text> + <rect x="43" y="449" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="461">IN</text> + <rect x="43" y="477" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="489">GROUPING</text> + <rect x="43" y="505" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="517">ORDER</text> + <path class="line" d="m17 10 h2 m20 0 h4 m80 0 h4 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 m24 0 h4 m0 0 h56 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 m26 0 h4 m0 0 h54 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 m36 0 h4 m0 0 h44 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 m28 0 h4 m0 0 h52 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 m36 0 h4 m0 0 h44 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 m24 0 h4 m0 0 h56 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 m46 0 h4 m0 0 h34 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 m16 0 h4 m0 0 h64 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 m20 0 h4 m0 0 h60 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 m52 0 h4 m0 0 h28 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 m34 0 h4 m0 0 h46 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 m42 0 h4 m0 0 h38 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 m64 0 h4 m0 0 h16 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 m40 0 h4 m0 0 h40 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 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 m18 0 h4 m0 0 h62 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 m58 0 h4 m0 0 h22 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 m40 0 h4 m0 0 h40 m23 -504 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="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a></div> + <div>         ::= <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a></div> + <div>           | 'ALL'</div> + <div>           | 'ANY'</div> + <div>           | 'SOME'</div> + <div>           | 'LEFT'</div> + <div>           | 'RIGHT'</div> + <div>           | 'SET'</div> + <div>           | 'DOUBLE'</div> + <div>           | 'IF'</div> + <div>           | 'IIF'</div> + <div>           | 'OPTIMIZE'</div> + <div>           | 'LIMIT'</div> + <div>           | 'OFFSET'</div> + <div>           | 'PROCEDURE'</div> + <div>           | 'PUBLIC'</div> + <div>           | 'CASEWHEN'</div> + <div>           | 'IN'</div> + <div>           | 'GROUPING'</div> + <div>           | 'ORDER'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#relobjectnameext2" title="relobjectnameext2">relobjectnameext2</a></li><li><a href="#relobjectnamelist" title="relobjectnamelist">relobjectnamelist</a></li><li><a href="#set" title="set">set</a></li><li><a href="#show" title="show">show</a></li><li><a href="#showcolumns" title="showcolumns">showcolumns</a></li><li><a href="#showtables" title="showtables">showtables</a></li><li><a href="#simplejdbcnamedparameter" title="simplejdbcnamedparameter">simplejdbcnamedparameter</a></li><li><a href="#use" title="use">use</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RelObjectNameExt2 +====================================================================================================================== + + +.. 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="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="43" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">RelObjectNameExt</text></a><rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-select" xlink:title="K_SELECT" shape="rect"> + <rect x="43" y="57" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">K_SELECT</text></a><rect x="43" y="85" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">CURRENT</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 m36 0 h4 m0 0 h58 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 m56 0 h4 m0 0 h38 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 m50 0 h4 m0 0 h44 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="#relobjectnameext2" title="RelObjectNameExt2" shape="rect">RelObjectNameExt2</a></div> + <div>         ::= <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a></div> + <div>           | 'FROM'</div> + <div>           | <a href="#k-select" title="K_SELECT" shape="rect">K_SELECT</a></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="#insertconflicttarget" title="insertconflicttarget">insertconflicttarget</a></li><li><a href="#jdbcnamedparameter" title="jdbcnamedparameter">jdbcnamedparameter</a></li><li><a href="#oraclenamedfunctionparameter" title="oraclenamedfunctionparameter">oraclenamedfunctionparameter</a></li><li><a href="#relobjectnamelist" title="relobjectnamelist">relobjectnamelist</a></li><li><a href="#uservariable" title="uservariable">uservariable</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Table +====================================================================================================================== + + +.. 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="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="23" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectNameList</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="#table" title="Table" shape="rect">Table</a>    ::= <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alltablecolumns" title="alltablecolumns">alltablecolumns</a></li><li><a href="#alterexpression" title="alterexpression">alterexpression</a></li><li><a href="#altertable" title="altertable">altertable</a></li><li><a href="#alterview" title="alterview">alterview</a></li><li><a href="#analyze" title="analyze">analyze</a></li><li><a href="#comment" title="comment">comment</a></li><li><a href="#createindex" title="createindex">createindex</a></li><li><a href="#createtable" title="createtable">createtable</a></li><li><a href="#createview" title="createview">createview</a></li><li><a href="#describe" title="describe">describe</a></li><li><a href="#drop" title="drop">drop</a></li><li><a href="#fromitem" title="fromitem">fromitem</a></li><li><a href="#insert" title="insert">insert</a></li><li><a href="#intoclause" title="intoclause">intoclause</a></li><li><a href="#merge" title="merge">merge</a></li><li><a href="#outputclause" title="outputclause">outputclause</a></li><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#purgestatement" title="purgestatement">purgestatement</a></li><li><a href="#renametablestatement" title="renametablestatement">renametablestatement</a></li><li><a href="#spannerinterleavein" title="spannerinterleavein">spannerinterleavein</a></li><li><a href="#tablewithalias" title="tablewithalias">tablewithalias</a></li><li><a href="#truncate" title="truncate">truncate</a></li><li><a href="#upsert" title="upsert">upsert</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + TableWithAlias +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="159" 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" xlink:title="Table" shape="rect"> + <rect x="23" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="85" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="34">Alias</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m20 0 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="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="#tablewithalias" title="TableWithAlias" shape="rect">TableWithAlias</a></div> + <div>         ::= <a href="#table" title="Table" shape="rect">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="#delete" title="delete">delete</a></li><li><a href="#merge" title="merge">merge</a></li><li><a href="#update" title="update">update</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SelectWithWithItems +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="217" height="70"> + <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="#withlist" xlink:title="WithList" shape="rect"> + <rect x="63" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">WithList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select" xlink:title="Select" shape="rect"> + <rect x="117" y="1" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="13">Select</text></a><rect x="161" y="1" width="12" 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="#withlist" xlink:title="WithList" shape="rect"> + <rect x="63" y="50" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="62">WithList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#select" xlink:title="Select" shape="rect"> + <rect x="137" y="29" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="41">Select</text></a><path class="line" d="m17 10 h2 m20 0 h4 m12 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m12 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-128 10 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 m36 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="#selectwithwithitems" title="SelectWithWithItems" shape="rect">SelectWithWithItems</a></div> + <div>         ::= '(' <a href="#withlist" title="WithList" shape="rect">WithList</a> <a href="#select" title="Select" shape="rect">Select</a> ')'</div> + <div>           | <a href="#withlist" title="WithList" shape="rect">WithList</a>? <a href="#select" title="Select" shape="rect">Select</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createtable" title="createtable">createtable</a></li><li><a href="#createview" title="createview">createview</a></li><li><a href="#explain" title="explain">explain</a></li><li><a href="#insert" title="insert">insert</a></li><li><a href="#upsert" title="upsert">upsert</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Select +====================================================================================================================== + + +.. 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="#selectbody" xlink:title="SelectBody" shape="rect"> + <rect x="23" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SelectBody</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="#select" title="Select" shape="rect">Select</a>   ::= <a href="#selectbody" title="SelectBody" shape="rect">SelectBody</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#selectwithwithitems" title="selectwithwithitems">selectwithwithitems</a></li><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SelectBody +====================================================================================================================== + + +.. 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="#setoperationlist" xlink:title="SetOperationList" shape="rect"> + <rect x="23" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SetOperationList</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="#selectbody" title="SelectBody" shape="rect">SelectBody</a></div> + <div>         ::= <a href="#setoperationlist" title="SetOperationList" shape="rect">SetOperationList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alterview" title="alterview">alterview</a></li><li><a href="#pivotxml" title="pivotxml">pivotxml</a></li><li><a href="#select" title="select">select</a></li><li><a href="#setoperationlist" title="setoperationlist">setoperationlist</a></li><li><a href="#setoperationlistwithoutintialselect" title="setoperationlistwithoutintialselect">setoperationlistwithoutintialselect</a></li><li><a href="#subselect" title="subselect">subselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PlainSelect +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="779" height="626"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-select" xlink:title="K_SELECT" shape="rect"> + <rect x="23" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">K_SELECT</text></a><rect x="107" y="22" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="34">STRAIGHT_JOIN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#skip" xlink:title="Skip" shape="rect"> + <rect x="237" y="22" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="241" y="34">Skip</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#first" xlink:title="First" shape="rect"> + <rect x="313" y="22" width="26" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="34">First</text></a><rect x="387" y="22" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="391" y="34">ALL</text> + <rect x="387" y="50" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="391" y="62">DISTINCT</text> + <rect x="465" y="71" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="469" y="83">ON</text> + <rect x="495" y="71" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="499" y="83">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectitemslist" xlink:title="SelectItemsList" shape="rect"> + <rect x="515" y="71" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="519" y="83">SelectItemsList</text></a><rect x="601" y="71" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="605" y="83">)</text> + <rect x="387" y="99" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="391" y="111">UNIQUE</text> + <rect x="387" y="127" width="132" height="18" class="terminal" rx="4"/> + <text class="terminal" x="391" y="139">SQL_CALC_FOUND_ROWS</text> + <rect x="387" y="155" width="84" height="18" class="terminal" rx="4"/> + <text class="terminal" x="391" y="167">SQL_NO_CACHE</text> + <rect x="387" y="183" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="391" y="195">SQL_CACHE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#top" xlink:title="Top" shape="rect"> + <rect x="681" y="22" width="26" height="18" class="nonterminal"/> + <text class="nonterminal" x="685" y="34">Top</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectitemslist" xlink:title="SelectItemsList" shape="rect"> + <rect x="61" y="225" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="65" y="237">SelectItemsList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#intoclause" xlink:title="IntoClause" shape="rect"> + <rect x="167" y="246" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="258">IntoClause</text></a><rect x="273" y="246" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="258">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fromitem" xlink:title="FromItem" shape="rect"> + <rect x="317" y="246" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="321" y="258">FromItem</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#joinslist" xlink:title="JoinsList" shape="rect"> + <rect x="379" y="246" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="383" y="258">JoinsList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ksqlwindowclause" xlink:title="KSQLWindowClause" shape="rect"> + <rect x="473" y="246" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="477" y="258">KSQLWindowClause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whereclause" xlink:title="WhereClause" shape="rect"> + <rect x="625" y="246" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="629" y="258">WhereClause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#oraclehierarchicalqueryclause" xlink:title="OracleHierarchicalQueryClause" shape="rect"> + <rect x="111" y="300" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="312">OracleHierarchicalQueryClause</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#groupbycolumnreferences" xlink:title="GroupByColumnReferences" shape="rect"> + <rect x="305" y="300" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="309" y="312">GroupByColumnReferences</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#having" xlink:title="Having" shape="rect"> + <rect x="489" y="300" width="40" height="18" class="nonterminal"/> + <text class="nonterminal" x="493" y="312">Having</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="577" y="300" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="581" y="312">OrderByElements</text></a><rect x="37" y="370" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="41" y="382">WINDOW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="121" y="370" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="125" y="382">RelObjectName</text></a><rect x="209" y="370" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="213" y="382">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#windowdefinition" xlink:title="windowDefinition" shape="rect"> + <rect x="237" y="370" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="241" y="382">windowDefinition</text></a><rect x="121" y="342" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="354">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="389" y="391" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="393" y="403">OrderByElements</text></a><rect x="527" y="391" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="531" y="403">EMIT</text> + <rect x="565" y="391" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="569" y="403">CHANGES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#limitwithoffset" xlink:title="LimitWithOffset" shape="rect"> + <rect x="665" y="391" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="669" y="403">LimitWithOffset</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#offset" xlink:title="Offset" shape="rect"> + <rect x="210" y="445" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="214" y="457">Offset</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#limitwithoffset" xlink:title="LimitWithOffset" shape="rect"> + <rect x="294" y="445" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="298" y="457">LimitWithOffset</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fetch" xlink:title="Fetch" shape="rect"> + <rect x="418" y="445" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="422" y="457">Fetch</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#withisolation" xlink:title="WithIsolation" shape="rect"> + <rect x="500" y="445" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="504" y="457">WithIsolation</text></a><rect x="135" y="499" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="511">FOR</text> + <rect x="169" y="499" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="173" y="511">UPDATE</text> + <rect x="241" y="520" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="532">OF</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="269" y="520" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="273" y="532">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#wait" xlink:title="Wait" shape="rect"> + <rect x="351" y="520" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="355" y="532">Wait</text></a><rect x="429" y="520" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="433" y="532">NOWAIT</text> + <rect x="429" y="548" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="433" y="560">SKIP</text> + <rect x="467" y="548" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="471" y="560">LOCKED</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#optimizefor" xlink:title="OptimizeFor" shape="rect"> + <rect x="579" y="499" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="583" y="511">OptimizeFor</text></a><rect x="495" y="606" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="499" y="618">FOR</text> + <rect x="529" y="606" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="533" y="618">XML</text> + <rect x="565" y="606" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="569" y="618">PATH</text> + <rect x="605" y="606" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="609" y="618">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="625" y="606" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="629" y="618">S_CHAR_LITERAL</text></a><rect x="723" y="606" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="727" y="618">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m56 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 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 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 m40 -21 h10 m0 0 h244 m-274 0 h20 m254 0 h20 m-294 0 q10 0 10 10 m274 0 q0 -10 10 -10 m-284 10 v1 m274 0 v-1 m-274 1 q0 10 10 10 m254 0 q10 0 10 -10 m-264 10 h4 m24 0 h4 m0 0 h222 m-264 -10 v20 m274 0 v-20 m-274 20 v8 m274 0 v-8 m-274 8 q0 10 10 10 m254 0 q10 0 10 -10 m-264 10 h4 m50 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 m22 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m78 0 h4 m0 0 h4 m12 0 h4 m-244 -31 v20 m274 0 v-20 m-274 20 v29 m274 0 v-29 m-274 29 q0 10 10 10 m254 0 q10 0 10 -10 m-264 10 h4 m44 0 h4 m0 0 h202 m-264 -10 v20 m274 0 v-20 m-274 20 v8 m274 0 v-8 m-274 8 q0 10 10 10 m254 0 q10 0 10 -10 m-264 10 h4 m132 0 h4 m0 0 h114 m-264 -10 v20 m274 0 v-20 m-274 20 v8 m274 0 v-8 m-274 8 q0 10 10 10 m254 0 q10 0 10 -10 m-264 10 h4 m84 0 h4 m0 0 h162 m-264 -10 v20 m274 0 v-20 m-274 20 v8 m274 0 v-8 m-274 8 q0 10 10 10 m254 0 q10 0 10 -10 m-264 10 h4 m64 0 h4 m0 0 h182 m40 -182 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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-698 224 l2 0 m2 0 l2 0 m2 0 l2 0 m2 0 h4 m78 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 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 m36 0 h4 m0 0 h4 m54 0 h4 m0 0 h4 m46 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 m104 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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-658 54 l2 0 m2 0 l2 0 m2 0 l2 0 m22 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 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 m40 -21 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 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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-702 91 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m56 0 h4 m20 0 h4 m80 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m84 0 h4 m-228 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m208 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-208 0 h4 m8 0 h4 m0 0 h192 m-312 28 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 h10 m0 0 h302 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 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 m30 0 h4 m0 0 h4 m52 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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-603 54 l2 0 m2 0 l2 0 m2 0 l2 0 m22 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 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 m40 -21 h10 m0 0 h32 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v1 m62 0 v-1 m-62 1 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m34 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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-505 54 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h394 m-424 0 h20 m404 0 h20 m-444 0 q10 0 10 10 m424 0 q0 -10 10 -10 m-434 10 v1 m424 0 v-1 m-424 1 q0 10 10 10 m404 0 q10 0 10 -10 m-414 10 h4 m26 0 h4 m0 0 h4 m44 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 m20 0 h4 m0 0 h4 m34 0 h4 m40 -21 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 m40 -21 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 m48 0 h4 m0 0 h34 m-100 -10 v20 m110 0 v-20 m-110 20 v8 m110 0 v-8 m-110 8 q0 10 10 10 m90 0 q10 0 10 -10 m-100 10 h4 m30 0 h4 m0 0 h4 m44 0 h4 m60 -70 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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-220 107 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h238 m-268 0 h20 m248 0 h20 m-288 0 q10 0 10 10 m268 0 q0 -10 10 -10 m-278 10 v1 m268 0 v-1 m-268 1 q0 10 10 10 m248 0 q10 0 10 -10 m-258 10 h4 m26 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="769 594 777 590 777 598"/> + <polygon points="769 594 761 590 761 598"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#plainselect" title="PlainSelect" shape="rect">PlainSelect</a></div> + <div>         ::= <a href="#k-select" title="K_SELECT" shape="rect">K_SELECT</a> 'STRAIGHT_JOIN'? <a href="#skip" title="Skip" shape="rect">Skip</a>? <a href="#first" title="First" shape="rect">First</a>? ( 'ALL' | 'DISTINCT' ( 'ON' '(' <a href="#selectitemslist" title="SelectItemsList" shape="rect">SelectItemsList</a> ')' )? | 'UNIQUE' | 'SQL_CALC_FOUND_ROWS' | 'SQL_NO_CACHE' | 'SQL_CACHE' )? <a href="#top" title="Top" shape="rect">Top</a>? <a href="#selectitemslist" title="SelectItemsList" shape="rect">SelectItemsList</a> <a href="#intoclause" title="IntoClause" shape="rect">IntoClause</a>? ( 'FROM' <a href="#fromitem" title="FromItem" shape="rect">FromItem</a> <a href="#joinslist" title="JoinsList" shape="rect">JoinsList</a> )? <a href="#ksqlwindowclause" title="KSQLWindowClause" shape="rect">KSQLWindowClause</a>? <a href="#whereclause" title="WhereClause" shape="rect">WhereClause</a>? <a href="#oraclehierarchicalqueryclause" title="OracleHierarchicalQueryClause" shape="rect">OracleHierarchicalQueryClause</a>? <a href="#groupbycolumnreferences" title="GroupByColumnReferences" shape="rect">GroupByColumnReferences</a>? <a href="#having" title="Having" shape="rect">Having</a>? <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? ( 'WINDOW' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> 'AS' <a href="#windowdefinition" title="windowDefinition" shape="rect">windowDefinition</a> ( ',' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> 'AS' <a href="#windowdefinition" title="windowDefinition" shape="rect">windowDefinition</a> )* )? <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? ( 'EMIT' 'CHANGES' )? <a href="#limitwithoffset" title="LimitWithOffset" shape="rect">LimitWithOffset</a>? <a href="#offset" title="Offset" shape="rect">Offset</a>? <a href="#limitwithoffset" title="LimitWithOffset" shape="rect">LimitWithOffset</a>? <a href="#fetch" title="Fetch" shape="rect">Fetch</a>? <a href="#withisolation" title="WithIsolation" shape="rect">WithIsolation</a>? ( 'FOR' 'UPDATE' ( 'OF' <a href="#table" title="Table" shape="rect">Table</a> )? <a href="#wait" title="Wait" shape="rect">Wait</a>? ( 'NOWAIT' | 'SKIP' 'LOCKED' )? )? <a href="#optimizefor" title="OptimizeFor" shape="rect">OptimizeFor</a>? ( 'FOR' 'XML' 'PATH' '(' <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_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="#setoperationlist" title="setoperationlist">setoperationlist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SetOperationList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="771" height="238"> + <polygon points="9 171 1 167 1 175"/> + <polygon points="17 171 9 167 9 175"/> + <rect x="63" y="162" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="174">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectbody" xlink:title="SelectBody" shape="rect"> + <rect x="83" y="162" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="174">SelectBody</text></a><rect x="151" y="162" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="155" y="174">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#plainselect" xlink:title="PlainSelect" shape="rect"> + <rect x="63" y="190" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="202">PlainSelect</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#values" xlink:title="Values" shape="rect"> + <rect x="63" y="218" width="40" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="230">Values</text></a><rect x="63" y="106" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="118">ALL</text> + <rect x="63" y="134" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="146">DISTINCT</text> + <rect x="141" y="85" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="97">UNION</text> + <rect x="43" y="57" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">INTERSECT</text> + <rect x="43" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">MINUS</text> + <rect x="43" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">EXCEPT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="231" y="183" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="235" y="195">OrderByElements</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#limitwithoffset" xlink:title="LimitWithOffset" shape="rect"> + <rect x="369" y="183" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="373" y="195">LimitWithOffset</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#offset" xlink:title="Offset" shape="rect"> + <rect x="493" y="183" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="497" y="195">Offset</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fetch" xlink:title="Fetch" shape="rect"> + <rect x="577" y="183" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="581" y="195">Fetch</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#withisolation" xlink:title="WithIsolation" shape="rect"> + <rect x="659" y="183" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="663" y="195">WithIsolation</text></a><path class="line" d="m17 171 h2 m40 0 h4 m12 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 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 m56 0 h4 m0 0 h44 m-118 -10 v20 m128 0 v-20 m-128 20 v8 m128 0 v-8 m-128 8 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m40 0 h4 m0 0 h60 m-148 -56 l20 0 m-1 0 q-9 0 -9 -10 l0 -57 q0 -10 10 -10 m148 77 l20 0 m-20 0 q10 0 10 -10 l0 -57 q0 -10 -10 -10 m-128 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 m40 0 h4 m0 0 h2 m-158 10 l0 -28 q0 -10 10 -10 m158 38 l0 -28 q0 -10 -10 -10 m-148 0 h4 m58 0 h4 m0 0 h82 m-158 10 l0 -28 q0 -10 10 -10 m158 38 l0 -28 q0 -10 -10 -10 m-148 0 h4 m40 0 h4 m0 0 h100 m-158 10 l0 -28 q0 -10 10 -10 m158 38 l0 -28 q0 -10 -10 -10 m-148 0 h4 m42 0 h4 m0 0 h98 m40 161 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 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 m40 -21 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 m40 -21 h10 m0 0 h32 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v1 m62 0 v-1 m-62 1 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m34 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="761 171 769 167 769 175"/> + <polygon points="761 171 753 167 753 175"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#setoperationlist" title="SetOperationList" shape="rect">SetOperationList</a></div> + <div>         ::= ( '(' <a href="#selectbody" title="SelectBody" shape="rect">SelectBody</a> ')' | <a href="#plainselect" title="PlainSelect" shape="rect">PlainSelect</a> | <a href="#values" title="Values" shape="rect">Values</a> ) ( ( 'UNION' ( 'ALL' | 'DISTINCT' )? | 'INTERSECT' | 'MINUS' | 'EXCEPT' ) ( '(' + <a href="#selectbody" title="SelectBody" shape="rect">SelectBody</a> ')' | <a href="#plainselect" title="PlainSelect" shape="rect">PlainSelect</a> | <a href="#values" title="Values" shape="rect">Values</a> ) )* <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? <a href="#limitwithoffset" title="LimitWithOffset" shape="rect">LimitWithOffset</a>? <a href="#offset" title="Offset" shape="rect">Offset</a>? <a href="#fetch" title="Fetch" shape="rect">Fetch</a>? <a href="#withisolation" title="WithIsolation" shape="rect">WithIsolation</a>?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#selectbody" title="selectbody">selectbody</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SetOperationListWithoutIntialSelect +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="373" height="166"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="63" y="13" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="25">UNION</text> + <rect x="131" y="34" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="46">ALL</text> + <rect x="131" y="62" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="74">DISTINCT</text> + <rect x="63" y="90" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="102">INTERSECT</text> + <rect x="63" y="118" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="130">MINUS</text> + <rect x="63" y="146" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="158">EXCEPT</text> + <rect x="229" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="25">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectbody" xlink:title="SelectBody" shape="rect"> + <rect x="249" y="13" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="25">SelectBody</text></a><rect x="317" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="321" y="25">)</text> + <path class="line" d="m17 22 h2 m40 0 h4 m40 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 m-146 -49 h20 m146 0 h20 m-186 0 q10 0 10 10 m166 0 q0 -10 10 -10 m-176 10 v57 m166 0 v-57 m-166 57 q0 10 10 10 m146 0 q10 0 10 -10 m-156 10 h4 m58 0 h4 m0 0 h80 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 m40 0 h4 m0 0 h98 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 m42 0 h4 m0 0 h96 m20 -133 h4 m12 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m-314 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m294 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-294 0 h10 m0 0 h284 m23 21 h-3"/> + <polygon points="363 22 371 18 371 26"/> + <polygon points="363 22 355 18 355 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="#setoperationlistwithoutintialselect" title="SetOperationListWithoutIntialSelect" shape="rect">SetOperationListWithoutIntialSelect</a></div> + <div>         ::= ( ( 'UNION' ( 'ALL' | 'DISTINCT' )? | 'INTERSECT' | 'MINUS' | 'EXCEPT' + ) '(' <a href="#selectbody" title="SelectBody" shape="rect">SelectBody</a> ')' )+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + WithList +====================================================================================================================== + + +.. 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"/> + <rect x="23" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#withitem" xlink:title="WithItem" shape="rect"> + <rect x="85" y="29" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="41">WithItem</text></a><rect x="85" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="13">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m34 0 h4 m20 0 h4 m52 0 h4 m-80 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m60 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-60 0 h4 m8 0 h4 m0 0 h44 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="#withlist" title="WithList" shape="rect">WithList</a> ::= 'WITH' <a href="#withitem" title="WithItem" shape="rect">WithItem</a> ( ',' <a href="#withitem" title="WithItem" shape="rect">WithItem</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#selectwithwithitems" title="selectwithwithitems">selectwithwithitems</a></li><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li><li><a href="#subselect" title="subselect">subselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + WithItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="671" height="49"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">RECURSIVE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="131" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="13">RelObjectName</text></a><rect x="239" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="243" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectitemslist" xlink:title="SelectItemsList" shape="rect"> + <rect x="259" y="22" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="34">SelectItemsList</text></a><rect x="345" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="349" y="34">)</text> + <rect x="385" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="389" y="13">AS</text> + <rect x="413" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="417" y="13">(</text> + <rect x="453" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="457" y="13">VALUES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="503" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="507" y="13">SimpleExpressionList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="453" y="29" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="457" y="41">SubSelect</text></a><rect x="635" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="639" y="13">)</text> + <path class="line" d="m17 10 h2 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 m80 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 m12 0 h4 m0 0 h4 m78 0 h4 m0 0 h4 m12 0 h4 m20 -21 h4 m20 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m42 0 h4 m0 0 h4 m104 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 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m54 0 h4 m0 0 h100 m20 -28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="661 10 669 6 669 14"/> + <polygon points="661 10 653 6 653 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#withitem" title="WithItem" shape="rect">WithItem</a> ::= 'RECURSIVE'? <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ( '(' <a href="#selectitemslist" title="SelectItemsList" shape="rect">SelectItemsList</a> ')' )? 'AS' '(' ( 'VALUES' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a> | <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ) ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#withlist" title="withlist">withlist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SelectItemsList +====================================================================================================================== + + +.. 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="#selectitem" xlink:title="SelectItem" shape="rect"> + <rect x="43" y="29" width="58" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">SelectItem</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="#selectitemslist" title="SelectItemsList" shape="rect">SelectItemsList</a></div> + <div>         ::= <a href="#selectitem" title="SelectItem" shape="rect">SelectItem</a> ( ',' <a href="#selectitem" title="SelectItem" shape="rect">SelectItem</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" title="delete">delete</a></li><li><a href="#insert" title="insert">insert</a></li><li><a href="#outputclause" title="outputclause">outputclause</a></li><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#update" title="update">update</a></li><li><a href="#withitem" title="withitem">withitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SelectExpressionItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="185" 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="#expression" xlink:title="Expression" shape="rect"> + <rect x="23" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="111" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="34">Alias</text></a><path class="line" d="m17 10 h2 m0 0 h4 m60 0 h4 m20 0 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="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="#selectexpressionitem" title="SelectExpressionItem" shape="rect">SelectExpressionItem</a></div> + <div>         ::= <a href="#expression" title="Expression" shape="rect">Expression</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="#listexpressionitem" title="listexpressionitem">listexpressionitem</a></li><li><a href="#selectitem" title="selectitem">selectitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SelectItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="77"> + <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><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alltablecolumns" xlink:title="AllTableColumns" shape="rect"> + <rect x="43" y="29" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">AllTableColumns</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectexpressionitem" xlink:title="SelectExpressionItem" shape="rect"> + <rect x="43" y="57" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">SelectExpressionItem</text></a><path class="line" d="m17 10 h2 m20 0 h4 m14 0 h4 m0 0 h94 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 m84 0 h4 m0 0 h24 m-126 -10 v20 m136 0 v-20 m-136 20 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 -56 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="#selectitem" title="SelectItem" shape="rect">SelectItem</a></div> + <div>         ::= '*'</div> + <div>           | <a href="#alltablecolumns" title="AllTableColumns" shape="rect">AllTableColumns</a></div> + <div>           | <a href="#selectexpressionitem" title="SelectExpressionItem" shape="rect">SelectExpressionItem</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#selectitemslist" title="selectitemslist">selectitemslist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AllTableColumns +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="119" 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" xlink:title="Table" shape="rect"> + <rect x="23" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Table</text></a><rect x="65" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">.</text> + <rect x="81" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="85" y="13">*</text> + <path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m14 0 h4 m3 0 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="#alltablecolumns" title="AllTableColumns" shape="rect">AllTableColumns</a></div> + <div>         ::= <a href="#table" title="Table" shape="rect">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="#internalfunction" title="internalfunction">internalfunction</a></li><li><a href="#selectitem" title="selectitem">selectitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Alias +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="617" height="82"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="43" y="50" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamewithoutstart" xlink:title="RelObjectNameWithoutStart" shape="rect"> + <rect x="111" y="29" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="41">RelObjectNameWithoutStart</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="111" y="57" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="69">S_CHAR_LITERAL</text></a><rect x="297" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="301" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="337" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="341" y="41">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="445" y="50" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="449" y="62">ColDataType</text></a><rect x="337" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="341" y="13">,</text> + <rect x="561" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="565" y="41">)</text> + <path class="line" d="m17 38 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 m40 -21 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 m90 0 h4 m0 0 h48 m40 -28 h4 m12 0 h4 m20 0 h4 m80 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-204 -21 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m204 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-204 0 h4 m8 0 h4 m0 0 h188 m20 28 h4 m12 0 h4 m-304 0 h20 m284 0 h20 m-324 0 q10 0 10 10 m304 0 q0 -10 10 -10 m-314 10 v22 m304 0 v-22 m-304 22 q0 10 10 10 m284 0 q10 0 10 -10 m-294 10 h10 m0 0 h274 m23 -42 h-3"/> + <polygon points="607 38 615 34 615 42"/> + <polygon points="607 38 599 34 599 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="#alias" title="Alias" shape="rect">Alias</a>    ::= 'AS'? ( <a href="#relobjectnamewithoutstart" title="RelObjectNameWithoutStart" shape="rect">RelObjectNameWithoutStart</a> | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> ) ( '(' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a>? ( ',' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a>? )* ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#expressionlistitem" title="expressionlistitem">expressionlistitem</a></li><li><a href="#fromitem" title="fromitem">fromitem</a></li><li><a href="#functionitem" title="functionitem">functionitem</a></li><li><a href="#merge" title="merge">merge</a></li><li><a href="#pivot" title="pivot">pivot</a></li><li><a href="#pivotselectexpritem" title="pivotselectexpritem">pivotselectexpritem</a></li><li><a href="#selectexpressionitem" title="selectexpressionitem">selectexpressionitem</a></li><li><a href="#tablefunction" title="tablefunction">tablefunction</a></li><li><a href="#tablewithalias" title="tablewithalias">tablewithalias</a></li><li><a href="#unpivot" title="unpivot">unpivot</a></li><li><a href="#valueslist" title="valueslist">valueslist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQLServerHint +====================================================================================================================== + + +.. 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="43" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">INDEX</text> + <rect x="87" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="107" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="13">RelObjectName</text></a><rect x="195" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="13">)</text> + <rect x="43" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">NOLOCK</text> + <path class="line" d="m17 10 h2 m20 0 h4 m36 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m80 0 h4 m0 0 h4 m12 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="#sqlserverhint" title="SQLServerHint" shape="rect">SQLServerHint</a></div> + <div>         ::= 'INDEX' '(' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ')'</div> + <div>           | 'NOLOCK'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sqlserverhints" title="sqlserverhints">sqlserverhints</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQLServerHints +====================================================================================================================== + + +.. 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"/> + <rect x="23" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">WITH</text> + <rect x="65" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sqlserverhint" xlink:title="SQLServerHint" shape="rect"> + <rect x="105" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="41">SQLServerHint</text></a><rect x="105" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="13">,</text> + <rect x="207" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m34 0 h4 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="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="#sqlserverhints" title="SQLServerHints" shape="rect">SQLServerHints</a></div> + <div>         ::= 'WITH' '(' <a href="#sqlserverhint" title="SQLServerHint" shape="rect">SQLServerHint</a> ( ',' <a href="#sqlserverhint" title="SQLServerHint" shape="rect">SQLServerHint</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + MySQLIndexHint +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="445" height="133"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="43" y="29" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">USE</text> + <rect x="43" y="57" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">SHOW</text> + <rect x="43" y="85" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">IGNORE</text> + <rect x="43" y="113" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">FORCE</text> + <rect x="135" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="41">INDEX</text> + <rect x="135" y="57" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="69">KEY</text> + <rect x="199" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamewithoutvalue" xlink:title="RelObjectNameWithoutValue" shape="rect"> + <rect x="239" y="29" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="243" y="41">RelObjectNameWithoutValue</text></a><rect x="239" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="243" y="13">,</text> + <rect x="409" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="413" y="41">)</text> + <path class="line" d="m17 38 h2 m20 0 h4 m26 0 h4 m0 0 h18 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 m40 0 h4 m0 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 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 m38 0 h4 m0 0 h6 m40 -84 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 m24 0 h4 m0 0 h12 m20 -28 h4 m12 0 h4 m20 0 h4 m142 0 h4 m-170 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m150 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-150 0 h4 m8 0 h4 m0 0 h134 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="435 38 443 34 443 42"/> + <polygon points="435 38 427 34 427 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="#mysqlindexhint" title="MySQLIndexHint" shape="rect">MySQLIndexHint</a></div> + <div>         ::= ( 'USE' | 'SHOW' | 'IGNORE' | 'FORCE' ) ( 'INDEX' | 'KEY' ) '(' <a href="#relobjectnamewithoutvalue" title="RelObjectNameWithoutValue" shape="rect">RelObjectNameWithoutValue</a> ( ',' <a href="#relobjectnamewithoutvalue" title="RelObjectNameWithoutValue" shape="rect">RelObjectNameWithoutValue</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + FunctionItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="173" 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="#function" xlink:title="Function" shape="rect"> + <rect x="23" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="99" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="34">Alias</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m20 0 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="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="#functionitem" title="FunctionItem" shape="rect">FunctionItem</a></div> + <div>         ::= <a href="#function" title="Function" shape="rect">Function</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="#pivotfunctionitems" title="pivotfunctionitems">pivotfunctionitems</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PivotForColumns +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="213" height="77"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <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="#column" xlink:title="Column" shape="rect"> + <rect x="83" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">Column</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="157" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="41">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="43" y="57" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">Column</text></a><path class="line" d="m17 38 h2 m20 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 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 m46 0 h4 m0 0 h80 m23 -28 h-3"/> + <polygon points="203 38 211 34 211 42"/> + <polygon points="203 38 195 34 195 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="#pivotforcolumns" title="PivotForColumns" shape="rect">PivotForColumns</a></div> + <div>         ::= '(' <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')'</div> + <div>           | <a href="#column" title="Column" shape="rect">Column</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#pivot" title="pivot">pivot</a></li><li><a href="#pivotxml" title="pivotxml">pivotxml</a></li><li><a href="#unpivot" title="unpivot">unpivot</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PivotFunctionItems +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" 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="#functionitem" xlink:title="FunctionItem" shape="rect"> + <rect x="43" y="29" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">FunctionItem</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 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 m23 28 h-3"/> + <polygon points="145 38 153 34 153 42"/> + <polygon points="145 38 137 34 137 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="#pivotfunctionitems" title="PivotFunctionItems" shape="rect">PivotFunctionItems</a></div> + <div>         ::= <a href="#functionitem" title="FunctionItem" shape="rect">FunctionItem</a> ( ',' <a href="#functionitem" title="FunctionItem" shape="rect">FunctionItem</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#pivot" title="pivot">pivot</a></li><li><a href="#pivotxml" title="pivotxml">pivotxml</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PivotSingleInItems +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="187" 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="#pivotselectexpritem" xlink:title="PivotSelectExprItem" shape="rect"> + <rect x="43" y="29" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">PivotSelectExprItem</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 m100 0 h4 m-128 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m108 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-108 0 h4 m8 0 h4 m0 0 h92 m23 28 h-3"/> + <polygon points="177 38 185 34 185 42"/> + <polygon points="177 38 169 34 169 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="#pivotsingleinitems" title="PivotSingleInItems" shape="rect">PivotSingleInItems</a></div> + <div>         ::= <a href="#pivotselectexpritem" title="PivotSelectExprItem" shape="rect">PivotSelectExprItem</a> ( ',' <a href="#pivotselectexpritem" title="PivotSelectExprItem" shape="rect">PivotSelectExprItem</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#pivot" title="pivot">pivot</a></li><li><a href="#pivotxml" title="pivotxml">pivotxml</a></li><li><a href="#unpivot" title="unpivot">unpivot</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PivotSelectExprItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="215" 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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SimpleExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="141" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="34">Alias</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m20 0 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="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="#pivotselectexpritem" title="PivotSelectExprItem" shape="rect">PivotSelectExprItem</a></div> + <div>         ::= <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</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="#pivotsingleinitems" title="pivotsingleinitems">pivotsingleinitems</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ExpressionListItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="269" 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="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="43" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SimpleExpressionList</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="#alias" xlink:title="Alias" shape="rect"> + <rect x="195" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="199" y="34">Alias</text></a><path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m0 0 h4 m104 0 h4 m0 0 h4 m12 0 h4 m20 0 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="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="#expressionlistitem" title="ExpressionListItem" shape="rect">ExpressionListItem</a></div> + <div>         ::= '(' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</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="#pivotmultiinitems" title="pivotmultiinitems">pivotmultiinitems</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PivotMultiInItems +====================================================================================================================== + + +.. 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="#expressionlistitem" xlink:title="ExpressionListItem" shape="rect"> + <rect x="43" y="29" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">ExpressionListItem</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="#pivotmultiinitems" title="PivotMultiInItems" shape="rect">PivotMultiInItems</a></div> + <div>         ::= <a href="#expressionlistitem" title="ExpressionListItem" shape="rect">ExpressionListItem</a> ( ',' <a href="#expressionlistitem" title="ExpressionListItem" shape="rect">ExpressionListItem</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#pivot" title="pivot">pivot</a></li><li><a href="#pivotxml" title="pivotxml">pivotxml</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Pivot +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="641" 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">PIVOT</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="#pivotfunctionitems" xlink:title="PivotFunctionItems" shape="rect"> + <rect x="87" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="91" y="13">PivotFunctionItems</text></a><rect x="191" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotforcolumns" xlink:title="PivotForColumns" shape="rect"> + <rect x="225" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="229" y="13">PivotForColumns</text></a><rect x="319" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="323" y="13">IN</text> + <rect x="345" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="349" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotsingleinitems" xlink:title="PivotSingleInItems" shape="rect"> + <rect x="385" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="389" y="13">PivotSingleInItems</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotmultiinitems" xlink:title="PivotMultiInItems" shape="rect"> + <rect x="385" y="29" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="389" y="41">PivotMultiInItems</text></a><rect x="507" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="511" y="13">)</text> + <rect x="527" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="531" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="567" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="571" y="34">Alias</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m96 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m12 0 h4 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 m86 0 h4 m0 0 h8 m20 -28 h4 m12 0 h4 m0 0 h4 m12 0 h4 m20 0 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="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="#pivot" title="Pivot" shape="rect">Pivot</a>    ::= 'PIVOT' '(' <a href="#pivotfunctionitems" title="PivotFunctionItems" shape="rect">PivotFunctionItems</a> 'FOR' <a href="#pivotforcolumns" title="PivotForColumns" shape="rect">PivotForColumns</a> 'IN' '(' ( <a href="#pivotsingleinitems" title="PivotSingleInItems" shape="rect">PivotSingleInItems</a> | <a href="#pivotmultiinitems" title="PivotMultiInItems" shape="rect">PivotMultiInItems</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="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PivotXml +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="599" height="105"> + <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">PIVOT</text> + <rect x="67" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="13">XML</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="#pivotfunctionitems" xlink:title="PivotFunctionItems" shape="rect"> + <rect x="123" y="1" width="96" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="13">PivotFunctionItems</text></a><rect x="227" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotforcolumns" xlink:title="PivotForColumns" shape="rect"> + <rect x="261" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="265" y="13">PivotForColumns</text></a><rect x="355" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="359" y="13">IN</text> + <rect x="381" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="385" y="13">(</text> + <rect x="421" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="425" y="13">ANY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectbody" xlink:title="SelectBody" shape="rect"> + <rect x="421" y="29" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="41">SelectBody</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotsingleinitems" xlink:title="PivotSingleInItems" shape="rect"> + <rect x="421" y="57" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="69">PivotSingleInItems</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotmultiinitems" xlink:title="PivotMultiInItems" shape="rect"> + <rect x="421" y="85" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="97">PivotMultiInItems</text></a><rect x="543" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="547" y="13">)</text> + <rect x="563" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="567" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m96 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m26 0 h4 m0 0 h68 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 m60 0 h4 m0 0 h34 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 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 m20 -84 h4 m12 0 h4 m0 0 h4 m12 0 h4 m3 0 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="#pivotxml" title="PivotXml" shape="rect">PivotXml</a> ::= 'PIVOT' 'XML' '(' <a href="#pivotfunctionitems" title="PivotFunctionItems" shape="rect">PivotFunctionItems</a> 'FOR' <a href="#pivotforcolumns" title="PivotForColumns" shape="rect">PivotForColumns</a> 'IN' '(' ( 'ANY' | <a href="#selectbody" title="SelectBody" shape="rect">SelectBody</a> | <a href="#pivotsingleinitems" title="PivotSingleInItems" shape="rect">PivotSingleInItems</a> | <a href="#pivotmultiinitems" title="PivotMultiInItems" shape="rect">PivotMultiInItems</a> ) ')' ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + UnPivot +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="787" height="70"> + <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">UNPIVOT</text> + <rect x="121" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="34">INCLUDE</text> + <rect x="121" y="50" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="62">EXCLUDE</text> + <rect x="197" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="34">NULLS</text> + <rect x="263" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotforcolumns" xlink:title="PivotForColumns" shape="rect"> + <rect x="283" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="287" y="13">PivotForColumns</text></a><rect x="377" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="381" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotforcolumns" xlink:title="PivotForColumns" shape="rect"> + <rect x="411" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="415" y="13">PivotForColumns</text></a><rect x="505" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="509" y="13">IN</text> + <rect x="531" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="535" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotsingleinitems" xlink:title="PivotSingleInItems" shape="rect"> + <rect x="551" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="555" y="13">PivotSingleInItems</text></a><rect x="653" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="657" y="13">)</text> + <rect x="673" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="677" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="713" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="717" y="34">Alias</text></a><path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m20 0 h10 m0 0 h132 m-162 0 h20 m142 0 h20 m-182 0 q10 0 10 10 m162 0 q0 -10 10 -10 m-172 10 v1 m162 0 v-1 m-162 1 q0 10 10 10 m142 0 q10 0 10 -10 m-132 10 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 m48 0 h4 m20 -28 h4 m38 0 h4 m20 -21 h4 m12 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m86 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m94 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m12 0 h4 m20 0 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="777 10 785 6 785 14"/> + <polygon points="777 10 769 6 769 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#unpivot" title="UnPivot" shape="rect">UnPivot</a>  ::= 'UNPIVOT' ( ( 'INCLUDE' | 'EXCLUDE' ) 'NULLS' )? '(' <a href="#pivotforcolumns" title="PivotForColumns" shape="rect">PivotForColumns</a> 'FOR' <a href="#pivotforcolumns" title="PivotForColumns" shape="rect">PivotForColumns</a> 'IN' '(' <a href="#pivotsingleinitems" title="PivotSingleInItems" shape="rect">PivotSingleInItems</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="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + IntoClause +====================================================================================================================== + + +.. 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"/> + <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="#table" xlink:title="Table" shape="rect"> + <rect x="83" y="29" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">Table</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 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 m8 0 h4 m0 0 h26 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="#intoclause" title="IntoClause" shape="rect">IntoClause</a></div> + <div>         ::= 'INTO' <a href="#table" title="Table" shape="rect">Table</a> ( ',' <a href="#table" title="Table" shape="rect">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="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + FromItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="1059" height="182"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#valueslist" xlink:title="ValuesList" shape="rect"> + <rect x="43" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">ValuesList</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="#fromitem" xlink:title="FromItem" shape="rect"> + <rect x="103" y="29" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="41">FromItem</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subjoin" xlink:title="SubJoin" shape="rect"> + <rect x="185" y="50" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="189" y="62">SubJoin</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="103" y="78" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="90">SubSelect</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#setoperationlistwithoutintialselect" xlink:title="SetOperationListWithoutIntialSelect" shape="rect"> + <rect x="297" y="50" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="301" y="62">SetOperationListWithoutIntialSelect</text></a><rect x="493" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="497" y="41">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unpivot" xlink:title="UnPivot" shape="rect"> + <rect x="533" y="50" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="537" y="62">UnPivot</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#tablefunction" xlink:title="TableFunction" shape="rect"> + <rect x="63" y="106" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="118">TableFunction</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="63" y="134" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="146">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lateralsubselect" xlink:title="LateralSubSelect" shape="rect"> + <rect x="63" y="162" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="174">LateralSubSelect</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="645" y="50" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="649" y="62">Alias</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unpivot" xlink:title="UnPivot" shape="rect"> + <rect x="723" y="50" width="44" height="18" class="nonterminal"/> + <text class="nonterminal" x="727" y="62">UnPivot</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivotxml" xlink:title="PivotXml" shape="rect"> + <rect x="815" y="50" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="819" y="62">PivotXml</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pivot" xlink:title="Pivot" shape="rect"> + <rect x="815" y="78" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="819" y="90">Pivot</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mysqlindexhint" xlink:title="MySQLIndexHint" shape="rect"> + <rect x="911" y="50" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="915" y="62">MySQLIndexHint</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sqlserverhints" xlink:title="SQLServerHints" shape="rect"> + <rect x="911" y="78" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="915" y="90">SQLServerHints</text></a><path class="line" d="m17 10 h2 m20 0 h4 m54 0 h4 m0 0 h918 m-1000 0 h20 m980 0 h20 m-1020 0 q10 0 10 10 m1000 0 q0 -10 10 -10 m-1010 10 v8 m1000 0 v-8 m-1000 8 q0 10 10 10 m980 0 q10 0 10 -10 m-970 10 h4 m12 0 h4 m20 0 h4 m54 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 m-154 -21 h20 m154 0 h20 m-194 0 q10 0 10 10 m174 0 q0 -10 10 -10 m-184 10 v29 m174 0 v-29 m-174 29 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m54 0 h4 m0 0 h92 m40 -49 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 m20 -21 h4 m12 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 m-542 -21 h20 m542 0 h20 m-582 0 q10 0 10 10 m562 0 q0 -10 10 -10 m-572 10 v57 m562 0 v-57 m-562 57 q0 10 10 10 m542 0 q10 0 10 -10 m-552 10 h4 m72 0 h4 m0 0 h462 m-552 -10 v20 m562 0 v-20 m-562 20 v8 m562 0 v-8 m-562 8 q0 10 10 10 m542 0 q10 0 10 -10 m-552 10 h4 m34 0 h4 m0 0 h500 m-552 -10 v20 m562 0 v-20 m-562 20 v8 m562 0 v-8 m-562 8 q0 10 10 10 m542 0 q10 0 10 -10 m-552 10 h4 m84 0 h4 m0 0 h450 m40 -133 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 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 m40 -21 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-66 -10 v20 m76 0 v-20 m-76 20 v8 m76 0 v-8 m-76 8 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m30 0 h4 m0 0 h18 m40 -49 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 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 m80 0 h4 m0 0 h4 m43 -77 h-3"/> + <polygon points="1049 10 1057 6 1057 14"/> + <polygon points="1049 10 1041 6 1041 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#fromitem" title="FromItem" shape="rect">FromItem</a> ::= <a href="#valueslist" title="ValuesList" shape="rect">ValuesList</a></div> + <div>           | ( '(' ( <a href="#fromitem" title="FromItem" shape="rect">FromItem</a> <a href="#subjoin" title="SubJoin" shape="rect">SubJoin</a>? | <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ) <a href="#setoperationlistwithoutintialselect" title="SetOperationListWithoutIntialSelect" shape="rect">SetOperationListWithoutIntialSelect</a>? ')' <a href="#unpivot" title="UnPivot" shape="rect">UnPivot</a>? | <a href="#tablefunction" title="TableFunction" shape="rect">TableFunction</a> | <a href="#table" title="Table" shape="rect">Table</a> | <a href="#lateralsubselect" title="LateralSubSelect" shape="rect">LateralSubSelect</a> ) <a href="#alias" title="Alias" shape="rect">Alias</a>? <a href="#unpivot" title="UnPivot" shape="rect">UnPivot</a>? ( <a href="#pivotxml" title="PivotXml" shape="rect">PivotXml</a> | <a href="#pivot" title="Pivot" shape="rect">Pivot</a> )? ( <a href="#mysqlindexhint" title="MySQLIndexHint" shape="rect">MySQLIndexHint</a> | <a href="#sqlserverhints" title="SQLServerHints" shape="rect">SQLServerHints</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fromitem" title="fromitem">fromitem</a></li><li><a href="#joinerexpression" title="joinerexpression">joinerexpression</a></li><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#update" title="update">update</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ValuesList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="673" height="133"> + <polygon points="9 66 1 62 1 70"/> + <polygon points="17 66 9 62 9 70"/> + <rect x="23" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="69">(</text> + <rect x="43" y="57" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">VALUES</text> + <rect x="133" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="69">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="173" y="57" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="177" y="69">SimpleExpression</text></a><rect x="173" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="41">,</text> + <rect x="291" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="295" y="69">)</text> + <rect x="133" y="1" width="8" 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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="133" y="113" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="137" y="125">SimpleExpression</text></a><rect x="133" y="85" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="97">,</text> + <rect x="351" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="355" y="69">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="391" y="57" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="395" y="69">Alias</text></a><rect x="449" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="453" y="69">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="489" y="57" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="493" y="69">RelObjectName</text></a><rect x="489" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="493" y="41">,</text> + <rect x="597" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="601" y="69">)</text> + <path class="line" d="m17 66 h2 m0 0 h4 m12 0 h4 m0 0 h4 m42 0 h4 m40 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 m-198 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -36 q0 -10 10 -10 m178 56 l20 0 m-20 0 q10 0 10 -10 l0 -36 q0 -10 -10 -10 m-178 0 h4 m8 0 h4 m0 0 h162 m-218 56 h20 m218 0 h20 m-258 0 q10 0 10 10 m238 0 q0 -10 10 -10 m-248 10 v36 m238 0 v-36 m-238 36 q0 10 10 10 m218 0 q10 0 10 -10 m-208 10 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 h80 m20 -56 h4 m12 0 h4 m20 0 h4 m30 0 h4 m20 0 h4 m12 0 h4 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 m20 28 h4 m12 0 h4 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 h10 m0 0 h158 m-246 -21 h20 m246 0 h20 m-286 0 q10 0 10 10 m266 0 q0 -10 10 -10 m-276 10 v13 m266 0 v-13 m-266 13 q0 10 10 10 m246 0 q10 0 10 -10 m-256 10 h10 m0 0 h236 m23 -33 h-3"/> + <polygon points="663 66 671 62 671 70"/> + <polygon points="663 66 655 62 655 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="#valueslist" title="ValuesList" shape="rect">ValuesList</a></div> + <div>         ::= '(' 'VALUES' ( '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* ')' ( ',' '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* ')' )* | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )* ) ')' ( <a href="#alias" title="Alias" shape="rect">Alias</a> ( '(' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ( ',' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> )* ')' )? )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + LateralSubSelect +====================================================================================================================== + + +.. 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="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LATERAL</text> + <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="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="97" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="13">SubSelect</text></a><rect x="159" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="163" 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 m54 0 h4 m0 0 h4 m12 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="#lateralsubselect" title="LateralSubSelect" shape="rect">LateralSubSelect</a></div> + <div>         ::= 'LATERAL' '(' <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SubJoin +====================================================================================================================== + + +.. 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"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subjoinslist" xlink:title="SubJoinsList" shape="rect"> + <rect x="23" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SubJoinsList</text></a><path class="line" d="m17 10 h2 m0 0 h4 m64 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="#subjoin" title="SubJoin" shape="rect">SubJoin</a>  ::= <a href="#subjoinslist" title="SubJoinsList" shape="rect">SubJoinsList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + JoinsList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="171" 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="#joinerexpression" xlink:title="JoinerExpression" shape="rect"> + <rect x="43" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">JoinerExpression</text></a><path class="line" d="m17 31 h2 m20 0 h10 m0 0 h82 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 h4 m84 0 h4 m23 21 h-3"/> + <polygon points="161 31 169 27 169 35"/> + <polygon points="161 31 153 27 153 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="#joinslist" title="JoinsList" shape="rect">JoinsList</a></div> + <div>         ::= <a href="#joinerexpression" title="JoinerExpression" shape="rect">JoinerExpression</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" title="delete">delete</a></li><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#update" title="update">update</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SubJoinsList +====================================================================================================================== + + +.. 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="#joinerexpression" xlink:title="JoinerExpression" shape="rect"> + <rect x="43" y="13" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">JoinerExpression</text></a><path class="line" d="m17 22 h2 m20 0 h4 m84 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 m23 21 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="#subjoinslist" title="SubJoinsList" shape="rect">SubJoinsList</a></div> + <div>         ::= <a href="#joinerexpression" title="JoinerExpression" shape="rect">JoinerExpression</a>+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#subjoin" title="subjoin">subjoin</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + JoinerExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="641" height="346"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">GLOBAL</text> + <rect x="135" y="22" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="34">NATURAL</text> + <rect x="253" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="34">RIGHT</text> + <rect x="253" y="50" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="62">FULL</text> + <rect x="337" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="341" y="34">OUTER</text> + <rect x="233" y="78" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="90">LEFT</text> + <rect x="289" y="99" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="293" y="111">SEMI</text> + <rect x="289" y="127" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="293" y="139">OUTER</text> + <rect x="233" y="155" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="167">INNER</text> + <rect x="233" y="183" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="195">CROSS</text> + <rect x="445" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="449" y="13">JOIN</text> + <rect x="445" y="29" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="449" y="41">,</text> + <rect x="481" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="485" y="62">OUTER</text> + <rect x="445" y="78" width="82" height="18" class="terminal" rx="4"/> + <text class="terminal" x="449" y="90">STRAIGHT_JOIN</text> + <rect x="445" y="106" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="449" y="118">APPLY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fromitem" xlink:title="FromItem" shape="rect"> + <rect x="569" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="573" y="13">FromItem</text></a><rect x="283" y="258" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="287" y="270">WITHIN</text> + <rect x="335" y="258" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="270">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#joinwindow" xlink:title="JoinWindow" shape="rect"> + <rect x="355" y="258" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="359" y="270">JoinWindow</text></a><rect x="427" y="258" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="431" y="270">)</text> + <rect x="487" y="237" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="491" y="249">ON</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="517" y="237" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="521" y="249">Expression</text></a><rect x="263" y="314" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="326">USING</text> + <rect x="309" y="314" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="313" y="326">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="349" y="314" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="353" y="326">Column</text></a><rect x="349" y="286" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="353" y="298">,</text> + <rect x="423" y="314" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="326">)</text> + <path class="line" d="m17 10 h2 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 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 m60 -21 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 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 m40 -49 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 m-172 -21 h20 m172 0 h20 m-212 0 q10 0 10 10 m192 0 q0 -10 10 -10 m-202 10 v57 m192 0 v-57 m-192 57 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m28 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 m30 0 h4 m0 0 h10 m-58 -10 v20 m68 0 v-20 m-68 20 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 m20 -49 h48 m-182 -10 v20 m192 0 v-20 m-192 20 v57 m192 0 v-57 m-192 57 q0 10 10 10 m172 0 q10 0 10 -10 m-182 10 h4 m36 0 h4 m0 0 h128 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 m40 0 h4 m0 0 h124 m40 -182 h4 m30 0 h4 m0 0 h66 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 m8 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 m-94 -31 v20 m124 0 v-20 m-124 20 v29 m124 0 v-29 m-124 29 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m82 0 h4 m0 0 h14 m-114 -10 v20 m124 0 v-20 m-124 20 v8 m124 0 v-8 m-124 8 q0 10 10 10 m104 0 q10 0 10 -10 m-114 10 h4 m36 0 h4 m0 0 h60 m20 -105 h4 m54 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-412 236 l2 0 m2 0 l2 0 m2 0 l2 0 m42 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 m44 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m64 0 h4 m0 0 h4 m12 0 h4 m40 -21 h4 m22 0 h4 m0 0 h4 m60 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 m-342 21 h20 m342 0 h20 m-382 0 q10 0 10 10 m362 0 q0 -10 10 -10 m-372 10 v57 m362 0 v-57 m-362 57 q0 10 10 10 m342 0 q10 0 10 -10 m-352 10 h4 m38 0 h4 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 m0 0 h162 m-352 -10 v20 m362 0 v-20 m-362 20 v1 m362 0 v-1 m-362 1 q0 10 10 10 m342 0 q10 0 10 -10 m-352 10 h10 m0 0 h332 m23 -98 h-3"/> + <polygon points="631 246 639 242 639 250"/> + <polygon points="631 246 623 242 623 250"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#joinerexpression" title="JoinerExpression" shape="rect">JoinerExpression</a></div> + <div>         ::= 'GLOBAL'? 'NATURAL'? ( ( 'RIGHT' | 'FULL' )? 'OUTER'? | 'LEFT' ( 'SEMI' + | 'OUTER' )? | 'INNER' | 'CROSS' ) ( 'JOIN' | ',' 'OUTER'? | 'STRAIGHT_JOIN' | 'APPLY' + ) <a href="#fromitem" title="FromItem" shape="rect">FromItem</a> ( ( 'WITHIN' '(' <a href="#joinwindow" title="JoinWindow" shape="rect">JoinWindow</a> ')' )? ( 'ON' <a href="#expression" title="Expression" shape="rect">Expression</a> )+ | 'USING' '(' <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#joinslist" title="joinslist">joinslist</a></li><li><a href="#subjoinslist" title="subjoinslist">subjoinslist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + JoinWindow +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="479" 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="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="23" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="99" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="13">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-date-literal" xlink:title="K_DATE_LITERAL" shape="rect"> + <rect x="99" y="29" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="41">K_DATE_LITERAL</text></a><rect x="235" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="34">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="251" y="22" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="255" y="34">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="327" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="34">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-date-literal" xlink:title="K_DATE_LITERAL" shape="rect"> + <rect x="327" y="50" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="62">K_DATE_LITERAL</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m20 0 h4 m74 0 h4 m0 0 h14 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 m88 0 h4 m40 -28 h10 m0 0 h198 m-228 0 h20 m208 0 h20 m-248 0 q10 0 10 10 m228 0 q0 -10 10 -10 m-238 10 v1 m228 0 v-1 m-228 1 q0 10 10 10 m208 0 q10 0 10 -10 m-218 10 h4 m8 0 h4 m0 0 h4 m48 0 h4 m20 0 h4 m74 0 h4 m0 0 h14 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 m88 0 h4 m43 -49 h-3"/> + <polygon points="469 10 477 6 477 14"/> + <polygon points="469 10 461 6 461 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#joinwindow" title="JoinWindow" shape="rect">JoinWindow</a></div> + <div>         ::= <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#k-date-literal" title="K_DATE_LITERAL" shape="rect">K_DATE_LITERAL</a> ) ( ',' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#k-date-literal" title="K_DATE_LITERAL" shape="rect">K_DATE_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="#joinerexpression" title="joinerexpression">joinerexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + KSQLWindowClause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="659" height="77"> + <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> + <rect x="107" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="13">HOPPING</text> + <rect x="167" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="171" y="13">(</text> + <rect x="187" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="13">SIZE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="223" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="227" y="13">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="279" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="13">S_IDENTIFIER</text></a><rect x="361" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" y="13">,</text> + <rect x="377" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="381" y="13">ADVANCE</text> + <rect x="437" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="441" y="13">BY</text> + <rect x="107" y="29" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="41">SESSION</text> + <rect x="165" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="41">(</text> + <rect x="107" y="57" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="69">TUMBLING</text> + <rect x="171" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="175" y="69">(</text> + <rect x="191" y="57" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="69">SIZE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="485" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="489" y="13">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="541" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="545" y="13">S_IDENTIFIER</text></a><rect x="623" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="627" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m20 0 h4 m52 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m52 0 h4 m0 0 h4 m20 0 h4 m-378 0 h20 m358 0 h20 m-398 0 q10 0 10 10 m378 0 q0 -10 10 -10 m-388 10 v8 m378 0 v-8 m-378 8 q0 10 10 10 m358 0 q10 0 10 -10 m-368 10 h4 m50 0 h4 m0 0 h4 m12 0 h4 m0 0 h280 m-368 -10 v20 m378 0 v-20 m-378 20 v8 m378 0 v-8 m-378 8 q0 10 10 10 m358 0 q10 0 10 -10 m-368 10 h4 m56 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m28 0 h4 m0 0 h238 m20 -56 h4 m48 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m12 0 h4 m3 0 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="#ksqlwindowclause" title="KSQLWindowClause" shape="rect">KSQLWindowClause</a></div> + <div>         ::= 'WINDOW' ( 'HOPPING' '(' 'SIZE' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> ',' 'ADVANCE' 'BY' | 'SESSION' '(' | 'TUMBLING' '(' 'SIZE' ) <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_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="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + WhereClause +====================================================================================================================== + + +.. 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="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="#expression" xlink:title="Expression" shape="rect"> + <rect x="73" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="77" y="13">Expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m60 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="#whereclause" title="WhereClause" shape="rect">WhereClause</a></div> + <div>         ::= 'WHERE' <a href="#expression" title="Expression" shape="rect">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="#delete" title="delete">delete</a></li><li><a href="#insertconflictaction" title="insertconflictaction">insertconflictaction</a></li><li><a href="#insertconflicttarget" title="insertconflicttarget">insertconflicttarget</a></li><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#update" title="update">update</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OracleHierarchicalQueryClause +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="563" height="91"> + <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="87" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#andexpression" xlink:title="AndExpression" shape="rect"> + <rect x="129" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="133" y="13">AndExpression</text></a><rect x="215" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="13">CONNECT</text> + <rect x="275" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="279" y="13">BY</text> + <rect x="323" y="22" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="327" y="34">NOCYCLE</text> + <rect x="43" y="50" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">CONNECT</text> + <rect x="103" y="50" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="62">BY</text> + <rect x="151" y="71" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="155" y="83">NOCYCLE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#andexpression" xlink:title="AndExpression" shape="rect"> + <rect x="249" y="71" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="83">AndExpression</text></a><rect x="335" y="71" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="83">START</text> + <rect x="379" y="71" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="383" y="83">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#andexpression" xlink:title="AndExpression" shape="rect"> + <rect x="461" y="1" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="465" y="13">AndExpression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m36 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m78 0 h4 m0 0 h4 m52 0 h4 m0 0 h4 m20 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 h40 m-418 0 h20 m398 0 h20 m-438 0 q10 0 10 10 m418 0 q0 -10 10 -10 m-428 10 v29 m418 0 v-29 m-418 29 q0 10 10 10 m398 0 q10 0 10 -10 m-408 10 h4 m52 0 h4 m0 0 h4 m20 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 m40 -21 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 m78 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m34 0 h4 m40 -70 h4 m78 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="#oraclehierarchicalqueryclause" title="OracleHierarchicalQueryClause" shape="rect">OracleHierarchicalQueryClause</a></div> + <div>         ::= ( 'START' 'WITH' <a href="#andexpression" title="AndExpression" shape="rect">AndExpression</a> 'CONNECT' 'BY' 'NOCYCLE'? | 'CONNECT' 'BY' 'NOCYCLE'? ( <a href="#andexpression" title="AndExpression" shape="rect">AndExpression</a> 'START' 'WITH' )? ) <a href="#andexpression" title="AndExpression" shape="rect">AndExpression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + GroupByColumnReferences +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="775" height="217"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">GROUP</text> + <rect x="73" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="41">BY</text> + <rect x="141" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="41">(</text> + <rect x="161" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="41">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="141" y="57" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="145" y="69">ComplexExpressionList</text></a><rect x="303" y="29" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="307" y="41">GROUPING</text> + <rect x="369" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="373" y="41">SETS</text> + <rect x="407" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="411" y="41">(</text> + <rect x="467" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="471" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="507" y="50" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="511" y="62">SimpleExpressionList</text></a><rect x="639" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="643" y="41">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="467" y="78" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="471" y="90">SimpleExpression</text></a><rect x="447" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="451" y="13">,</text> + <rect x="699" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="703" y="41">)</text> + <rect x="121" y="148" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="160">GROUPING</text> + <rect x="187" y="148" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="160">SETS</text> + <rect x="225" y="148" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="229" y="160">(</text> + <rect x="285" y="148" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="289" y="160">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="325" y="169" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="329" y="181">SimpleExpressionList</text></a><rect x="457" y="148" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="461" y="160">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="285" y="197" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="289" y="209">SimpleExpression</text></a><rect x="265" y="120" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="269" y="132">,</text> + <rect x="517" y="148" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="521" y="160">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m42 0 h4 m0 0 h4 m20 0 h4 m40 0 h4 m12 0 h4 m0 0 h4 m12 0 h4 m0 0 h82 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 m114 0 h4 m40 -28 h4 m58 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m12 0 h4 m40 0 h4 m12 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 m20 -21 h4 m12 0 h4 m-212 0 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 m90 0 h4 m0 0 h94 m-232 -49 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m232 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-232 0 h4 m8 0 h4 m0 0 h216 m20 28 h4 m12 0 h4 m-436 0 h20 m416 0 h20 m-456 0 q10 0 10 10 m436 0 q0 -10 10 -10 m-446 10 v50 m436 0 v-50 m-436 50 q0 10 10 10 m416 0 q10 0 10 -10 m-426 10 h10 m0 0 h406 m-618 -70 h20 m618 0 h20 m-658 0 q10 0 10 10 m638 0 q0 -10 10 -10 m-648 10 v99 m638 0 v-99 m-638 99 q0 10 10 10 m618 0 q10 0 10 -10 m-628 10 h4 m58 0 h4 m0 0 h4 m30 0 h4 m0 0 h4 m12 0 h4 m40 0 h4 m12 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 m20 -21 h4 m12 0 h4 m-212 0 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 m90 0 h4 m0 0 h94 m-232 -49 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m232 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-232 0 h4 m8 0 h4 m0 0 h216 m20 28 h4 m12 0 h4 m0 0 h202 m23 -119 h-3"/> + <polygon points="765 38 773 34 773 42"/> + <polygon points="765 38 757 34 757 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="#groupbycolumnreferences" title="GroupByColumnReferences" shape="rect">GroupByColumnReferences</a></div> + <div>         ::= 'GROUP' 'BY' ( ( '(' ')' | <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> ) ( 'GROUPING' 'SETS' '(' ( '(' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a>? ')' | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ) ( ',' ( '(' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a>? ')' | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ) )* ')' )? | 'GROUPING' 'SETS' '(' ( '(' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a>? ')' | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ) ( ',' ( '(' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a>? ')' | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ) )* ')' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Having +====================================================================================================================== + + +.. 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="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="#expression" xlink:title="Expression" shape="rect"> + <rect x="75" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="79" y="13">Expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m44 0 h4 m0 0 h4 m60 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="#having" title="Having" shape="rect">Having</a>   ::= 'HAVING' <a href="#expression" title="Expression" shape="rect">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="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OrderByElements +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="347" 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">ORDER</text> + <rect x="91" y="50" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="62">SIBLINGS</text> + <rect x="171" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="175" y="41">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelement" xlink:title="OrderByElement" shape="rect"> + <rect x="219" y="29" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="223" y="41">OrderByElement</text></a><rect x="219" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="13">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m40 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 m20 0 h4 m20 0 h4 m84 0 h4 m-112 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m92 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-92 0 h4 m8 0 h4 m0 0 h76 m23 28 h-3"/> + <polygon points="337 38 345 34 345 42"/> + <polygon points="337 38 329 34 329 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="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a></div> + <div>         ::= 'ORDER' 'SIBLINGS'? 'BY' <a href="#orderbyelement" title="OrderByElement" shape="rect">OrderByElement</a> ( ',' <a href="#orderbyelement" title="OrderByElement" shape="rect">OrderByElement</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" title="delete">delete</a></li><li><a href="#internalfunction" title="internalfunction">internalfunction</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#keepexpression" title="keepexpression">keepexpression</a></li><li><a href="#mysqlgroupconcat" title="mysqlgroupconcat">mysqlgroupconcat</a></li><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#setoperationlist" title="setoperationlist">setoperationlist</a></li><li><a href="#update" title="update">update</a></li><li><a href="#xmlserializeexpr" title="xmlserializeexpr">xmlserializeexpr</a></li><li><a href="#windowdefinition" title="windowdefinition">windowdefinition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OrderByElement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="355" 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="#expression" xlink:title="Expression" shape="rect"> + <rect x="23" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Expression</text></a><rect x="111" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="34">ASC</text> + <rect x="111" y="50" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="62">DESC</text> + <rect x="191" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="34">NULLS</text> + <rect x="257" y="43" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="55">FIRST</text> + <rect x="257" y="71" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="83">LAST</text> + <path class="line" d="m17 10 h2 m0 0 h4 m60 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 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 m40 -49 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 m38 0 h4 m20 0 h10 m0 0 h32 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v1 m62 0 v-1 m-62 1 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m34 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 m30 0 h4 m0 0 h4 m43 -70 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="#orderbyelement" title="OrderByElement" shape="rect">OrderByElement</a></div> + <div>         ::= <a href="#expression" title="Expression" shape="rect">Expression</a> ( 'ASC' | 'DESC' )? ( '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="#orderbyelements" title="orderbyelements">orderbyelements</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SimpleJdbcParameter +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" 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="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="63" y="22" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">S_LONG</text></a><path class="line" d="m17 10 h2 m0 0 h4 m12 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 m23 -21 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="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a></div> + <div>         ::= '?' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</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" title="fetch">fetch</a></li><li><a href="#first" title="first">first</a></li><li><a href="#fulltextsearch" title="fulltextsearch">fulltextsearch</a></li><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#skip" title="skip">skip</a></li><li><a href="#top" title="top">top</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SimpleJdbcNamedParameter +====================================================================================================================== + + +.. 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="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="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="41" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="45" y="13">RelObjectNameExt</text></a><path class="line" d="m17 10 h2 m0 0 h4 m10 0 h4 m0 0 h4 m94 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="#simplejdbcnamedparameter" title="SimpleJdbcNamedParameter" shape="rect">SimpleJdbcNamedParameter</a></div> + <div>         ::= ':' <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#fulltextsearch" title="fulltextsearch">fulltextsearch</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + LimitWithOffset +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="273" 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">LIMIT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="85" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="13">Expression</text></a><rect x="153" y="1" width="8" 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="#expression" xlink:title="Expression" shape="rect"> + <rect x="169" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="13">Expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#plainlimit" xlink:title="PlainLimit" shape="rect"> + <rect x="43" y="29" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">PlainLimit</text></a><path class="line" d="m17 10 h2 m20 0 h4 m34 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m8 0 h4 m0 0 h4 m60 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 m50 0 h4 m0 0 h136 m23 -28 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="#limitwithoffset" title="LimitWithOffset" shape="rect">LimitWithOffset</a></div> + <div>         ::= 'LIMIT' <a href="#expression" title="Expression" shape="rect">Expression</a> ',' <a href="#expression" title="Expression" shape="rect">Expression</a></div> + <div>           | <a href="#plainlimit" title="PlainLimit" shape="rect">PlainLimit</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#setoperationlist" title="setoperationlist">setoperationlist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PlainLimit +====================================================================================================================== + + +.. 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"/> + <rect x="23" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">LIMIT</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="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="105" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">SubSelect</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="#expression" xlink:title="Expression" shape="rect"> + <rect x="85" y="29" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="41">Expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m20 0 h4 m12 0 h4 m0 0 h4 m54 0 h4 m0 0 h4 m12 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 m60 0 h4 m0 0 h34 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="#plainlimit" title="PlainLimit" shape="rect">PlainLimit</a></div> + <div>         ::= 'LIMIT' ( '(' <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ')' | <a href="#expression" title="Expression" shape="rect">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="#delete" title="delete">delete</a></li><li><a href="#limitwithoffset" title="limitwithoffset">limitwithoffset</a></li><li><a href="#update" title="update">update</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Offset +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="243" height="70"> + <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="#expression" xlink:title="Expression" shape="rect"> + <rect x="73" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="77" y="13">Expression</text></a><rect x="161" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="34">ROWS</text> + <rect x="161" y="50" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="62">ROW</text> + <path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m60 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 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 m32 0 h4 m0 0 h6 m23 -49 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="#offset" title="Offset" shape="rect">Offset</a>   ::= 'OFFSET' <a href="#expression" title="Expression" shape="rect">Expression</a> ( 'ROWS' | 'ROW' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#setoperationlist" title="setoperationlist">setoperationlist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Fetch +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="449" 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="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="169" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="13">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcparameter" xlink:title="SimpleJdbcParameter" shape="rect"> + <rect x="169" y="29" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="41">SimpleJdbcParameter</text></a><rect x="325" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="329" y="13">ROWS</text> + <rect x="325" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="329" y="41">ROW</text> + <rect x="391" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="395" 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 h4 m48 0 h4 m0 0 h60 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 m40 -28 h4 m38 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 m32 0 h4 m0 0 h6 m20 -28 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="439 10 447 6 447 14"/> + <polygon points="439 10 431 6 431 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><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" title="Fetch" shape="rect">Fetch</a>    ::= 'FETCH' ( 'FIRST' | 'NEXT' ) ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a> ) ( 'ROWS' | 'ROW' ) 'ONLY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#setoperationlist" title="setoperationlist">setoperationlist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + WithIsolation +====================================================================================================================== + + +.. 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="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-isolation" xlink:title="K_ISOLATION" shape="rect"> + <rect x="65" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">K_ISOLATION</text></a><path class="line" d="m17 10 h2 m0 0 h4 m34 0 h4 m0 0 h4 m72 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="#withisolation" title="WithIsolation" shape="rect">WithIsolation</a></div> + <div>         ::= 'WITH' <a href="#k-isolation" title="K_ISOLATION" shape="rect">K_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="#plainselect" title="plainselect">plainselect</a></li><li><a href="#setoperationlist" title="setoperationlist">setoperationlist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OptimizeFor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="235" 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">OPTIMIZE</text> + <rect x="83" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="117" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="13">S_LONG</text></a><rect x="173" y="1" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="13">ROWS</text> + <path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m38 0 h4 m3 0 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="#optimizefor" title="OptimizeFor" shape="rect">OptimizeFor</a></div> + <div>         ::= 'OPTIMIZE' 'FOR' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</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="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Top +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="455" height="126"> + <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">TOP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="77" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="13">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcparameter" xlink:title="SimpleJdbcParameter" shape="rect"> + <rect x="77" y="29" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="41">SimpleJdbcParameter</text></a><rect x="77" y="57" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="69">:</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="115" y="78" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="90">S_IDENTIFIER</text></a><rect x="77" y="106" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="81" y="118">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#additiveexpression" xlink:title="AdditiveExpression" shape="rect"> + <rect x="97" y="106" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="118">AdditiveExpression</text></a><rect x="199" y="106" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="118">)</text> + <rect x="259" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="34">PERCENT</text> + <rect x="355" y="22" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="359" y="34">WITH TIES</text> + <path class="line" d="m17 10 h2 m0 0 h4 m26 0 h4 m20 0 h4 m48 0 h4 m0 0 h86 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 m108 0 h4 m0 0 h26 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 m10 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 m20 -21 h2 m-152 -10 v20 m162 0 v-20 m-162 20 v29 m162 0 v-29 m-162 29 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m12 0 h4 m0 0 h4 m94 0 h4 m0 0 h4 m12 0 h4 m40 -105 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 m40 -21 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="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="#top" title="Top" shape="rect">Top</a>      ::= 'TOP' ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a> | ':' <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a>? | '(' <a href="#additiveexpression" title="AdditiveExpression" shape="rect">AdditiveExpression</a> ')' ) 'PERCENT'? 'WITH TIES'?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Skip +====================================================================================================================== + + +.. 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"/> + <rect x="23" y="1" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">SKIP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="81" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="13">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="81" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="41">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcparameter" xlink:title="SimpleJdbcParameter" shape="rect"> + <rect x="81" y="57" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="69">SimpleJdbcParameter</text></a><path class="line" d="m17 10 h2 m0 0 h4 m30 0 h4 m20 0 h4 m48 0 h4 m0 0 h60 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 m74 0 h4 m0 0 h34 m-126 -10 v20 m136 0 v-20 m-136 20 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 -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="#skip" title="Skip" shape="rect">Skip</a>     ::= 'SKIP' ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + First +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="277" 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">FIRST</text> + <rect x="43" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LIMIT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="125" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="13">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="125" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="41">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcparameter" xlink:title="SimpleJdbcParameter" shape="rect"> + <rect x="125" y="57" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="69">SimpleJdbcParameter</text></a><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 m34 0 h4 m40 -28 h4 m48 0 h4 m0 0 h60 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 m74 0 h4 m0 0 h34 m-126 -10 v20 m136 0 v-20 m-136 20 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 -56 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="#first" title="First" shape="rect">First</a>    ::= ( 'FIRST' | 'LIMIT' ) ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Expression +====================================================================================================================== + + +.. 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="#xorexpression" xlink:title="XorExpression" shape="rect"> + <rect x="23" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">XorExpression</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="#expression" title="Expression" shape="rect">Expression</a></div> + <div>         ::= <a href="#xorexpression" title="XorExpression" shape="rect">XorExpression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alterexpression" title="alterexpression">alterexpression</a></li><li><a href="#analyticexpression" title="analyticexpression">analyticexpression</a></li><li><a href="#casewhenexpression" title="casewhenexpression">casewhenexpression</a></li><li><a href="#complexexpressionlist" title="complexexpressionlist">complexexpressionlist</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#createtable" title="createtable">createtable</a></li><li><a href="#declare" title="declare">declare</a></li><li><a href="#having" title="having">having</a></li><li><a href="#insertconflictaction" title="insertconflictaction">insertconflictaction</a></li><li><a href="#joinerexpression" title="joinerexpression">joinerexpression</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#jsonfunction" title="jsonfunction">jsonfunction</a></li><li><a href="#likeexpression" title="likeexpression">likeexpression</a></li><li><a href="#limitwithoffset" title="limitwithoffset">limitwithoffset</a></li><li><a href="#merge" title="merge">merge</a></li><li><a href="#mergeinsertclause" title="mergeinsertclause">mergeinsertclause</a></li><li><a href="#mergeupdateclause" title="mergeupdateclause">mergeupdateclause</a></li><li><a href="#offset" title="offset">offset</a></li><li><a href="#oraclenamedfunctionparameter" title="oraclenamedfunctionparameter">oraclenamedfunctionparameter</a></li><li><a href="#orderbyelement" title="orderbyelement">orderbyelement</a></li><li><a href="#plainlimit" title="plainlimit">plainlimit</a></li><li><a href="#sqlexpressionlist" title="sqlexpressionlist">sqlexpressionlist</a></li><li><a href="#selectexpressionitem" title="selectexpressionitem">selectexpressionitem</a></li><li><a href="#set" title="set">set</a></li><li><a href="#showtables" title="showtables">showtables</a></li><li><a href="#update" title="update">update</a></li><li><a href="#whenthensearchcondition" title="whenthensearchcondition">whenthensearchcondition</a></li><li><a href="#whereclause" title="whereclause">whereclause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + XorExpression +====================================================================================================================== + + +.. 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="#orexpression" xlink:title="OrExpression" shape="rect"> + <rect x="43" y="29" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">OrExpression</text></a><rect x="43" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">XOR</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 m28 0 h4 m0 0 h42 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="#xorexpression" title="XorExpression" shape="rect">XorExpression</a></div> + <div>         ::= <a href="#orexpression" title="OrExpression" shape="rect">OrExpression</a> ( 'XOR' <a href="#orexpression" title="OrExpression" shape="rect">OrExpression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#andexpression" title="andexpression">andexpression</a></li><li><a href="#expression" title="expression">expression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OrExpression +====================================================================================================================== + + +.. 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="#andexpression" xlink:title="AndExpression" shape="rect"> + <rect x="43" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">AndExpression</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 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 m22 0 h4 m0 0 h56 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="#orexpression" title="OrExpression" shape="rect">OrExpression</a></div> + <div>         ::= <a href="#andexpression" title="AndExpression" shape="rect">AndExpression</a> ( 'OR' <a href="#andexpression" title="AndExpression" shape="rect">AndExpression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#xorexpression" title="xorexpression">xorexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AndExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" height="154"> + <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="#condition" xlink:title="Condition" shape="rect"> + <rect x="63" y="57" width="52" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="69">Condition</text></a><rect x="83" y="106" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="118">NOT</text> + <rect x="83" y="134" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="146">!</text> + <rect x="139" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="97">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#xorexpression" xlink:title="XorExpression" shape="rect"> + <rect x="159" y="85" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="163" y="97">XorExpression</text></a><rect x="241" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="97">)</text> + <rect x="43" y="29" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">AND</text> + <rect x="43" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">&&</text> + <path class="line" d="m17 66 h2 m40 0 h4 m52 0 h4 m0 0 h138 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-188 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 m-46 -10 v20 m56 0 v-20 m-56 20 v8 m56 0 v-8 m-56 8 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m10 0 h4 m0 0 h18 m20 -49 h4 m12 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m12 0 h4 m-238 -28 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m238 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-238 0 h4 m28 0 h4 m0 0 h202 m-248 10 l0 -28 q0 -10 10 -10 m248 38 l0 -28 q0 -10 -10 -10 m-238 0 h4 m22 0 h4 m0 0 h208 m23 56 h-3"/> + <polygon points="307 66 315 62 315 70"/> + <polygon points="307 66 299 62 299 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="#andexpression" title="AndExpression" shape="rect">AndExpression</a></div> + <div>         ::= ( <a href="#condition" title="Condition" shape="rect">Condition</a> | ( 'NOT' | '!' )? '(' <a href="#xorexpression" title="XorExpression" shape="rect">XorExpression</a> ')' ) ( ( 'AND' | '&&' ) ( <a href="#condition" title="Condition" shape="rect">Condition</a> | ( 'NOT' | '!' )? '(' <a href="#xorexpression" title="XorExpression" shape="rect">XorExpression</a> ')' ) )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#orexpression" title="orexpression">orexpression</a></li><li><a href="#oraclehierarchicalqueryclause" title="oraclehierarchicalqueryclause">oraclehierarchicalqueryclause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Condition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="249" 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="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="#regularcondition" xlink:title="RegularCondition" shape="rect"> + <rect x="119" y="1" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="13">RegularCondition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sqlcondition" xlink:title="SQLCondition" shape="rect"> + <rect x="119" y="29" width="70" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="41">SQLCondition</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 m-46 -10 v20 m56 0 v-20 m-56 20 v8 m56 0 v-8 m-56 8 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m10 0 h4 m0 0 h18 m40 -49 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 m70 0 h4 m0 0 h16 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="#condition" title="Condition" shape="rect">Condition</a></div> + <div>         ::= ( 'NOT' | '!' )? ( <a href="#regularcondition" title="RegularCondition" shape="rect">RegularCondition</a> | <a href="#sqlcondition" title="SQLCondition" shape="rect">SQLCondition</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#andexpression" title="andexpression">andexpression</a></li><li><a href="#statement" title="statement">statement</a></li><li><a href="#statements" title="statements">statements</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OverlapsCondition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="567" 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="#simpleexpressionlistatleasttwoitems" xlink:title="SimpleExpressionListAtLeastTwoItems" shape="rect"> + <rect x="43" y="1" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SimpleExpressionListAtLeastTwoItems</text></a><rect x="235" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="13">)</text> + <rect x="255" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="259" y="13">OVERLAPS</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="#simpleexpressionlistatleasttwoitems" xlink:title="SimpleExpressionListAtLeastTwoItems" shape="rect"> + <rect x="339" y="1" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="343" y="13">SimpleExpressionListAtLeastTwoItems</text></a><rect x="531" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="535" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m0 0 h4 m184 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m184 0 h4 m0 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="557 10 565 6 565 14"/> + <polygon points="557 10 549 6 549 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#overlapscondition" title="OverlapsCondition" shape="rect">OverlapsCondition</a></div> + <div>         ::= '(' <a href="#simpleexpressionlistatleasttwoitems" title="SimpleExpressionListAtLeastTwoItems" shape="rect">SimpleExpressionListAtLeastTwoItems</a> ')' 'OVERLAPS' '(' <a href="#simpleexpressionlistatleasttwoitems" title="SimpleExpressionListAtLeastTwoItems" shape="rect">SimpleExpressionListAtLeastTwoItems</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RegularCondition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="797" height="744"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="34">PRIOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comparisonitem" xlink:title="ComparisonItem" shape="rect"> + <rect x="109" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="113" y="13">ComparisonItem</text></a><rect x="225" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="229" y="34">(</text> + <rect x="245" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="34">+</text> + <rect x="267" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="271" y="34">)</text> + <rect x="327" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="13">></text> + <rect x="327" y="29" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="41"><</text> + <rect x="327" y="57" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="69">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#op-greaterthanequals" xlink:title="OP_GREATERTHANEQUALS" shape="rect"> + <rect x="327" y="85" width="134" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="97">OP_GREATERTHANEQUALS</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#op-minorthanequals" xlink:title="OP_MINORTHANEQUALS" shape="rect"> + <rect x="327" y="113" width="124" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="125">OP_MINORTHANEQUALS</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#op-notequalsstandard" xlink:title="OP_NOTEQUALSSTANDARD" shape="rect"> + <rect x="327" y="141" width="138" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="153">OP_NOTEQUALSSTANDARD</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#op-notequalsbang" xlink:title="OP_NOTEQUALSBANG" shape="rect"> + <rect x="327" y="169" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="181">OP_NOTEQUALSBANG</text></a><rect x="327" y="197" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="209">@@</text> + <rect x="327" y="225" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="237">~</text> + <rect x="367" y="274" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="371" y="286">NOT</text> + <rect x="423" y="253" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="265">REGEXP</text> + <rect x="347" y="302" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="351" y="314">RLIKE</text> + <rect x="515" y="274" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="519" y="286">BINARY</text> + <rect x="327" y="330" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="342">~*</text> + <rect x="327" y="358" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="370">!~</text> + <rect x="327" y="386" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="398">!~*</text> + <rect x="327" y="414" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="426">@></text> + <rect x="327" y="442" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="454"><@</text> + <rect x="327" y="470" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="482">?</text> + <rect x="327" y="498" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="510">?|</text> + <rect x="327" y="526" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="538">?&</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#op-concat" xlink:title="OP_CONCAT" shape="rect"> + <rect x="327" y="554" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="331" y="566">OP_CONCAT</text></a><rect x="327" y="582" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="594">-</text> + <rect x="327" y="610" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="622">-#</text> + <rect x="327" y="638" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="650"><-></text> + <rect x="327" y="666" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="678"><#></text> + <rect x="625" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="629" y="34">PRIOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#comparisonitem" xlink:title="ComparisonItem" shape="rect"> + <rect x="691" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="695" y="13">ComparisonItem</text></a><rect x="699" y="724" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="703" y="736">(</text> + <rect x="719" y="724" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="723" y="736">+</text> + <rect x="741" y="724" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="745" y="736">)</text> + <path class="line" d="m17 10 h2 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 m88 0 h4 m20 0 h10 m0 0 h52 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v1 m82 0 v-1 m-82 1 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m12 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m12 0 h4 m40 -21 h4 m14 0 h4 m0 0 h236 m-278 0 h20 m258 0 h20 m-298 0 q10 0 10 10 m278 0 q0 -10 10 -10 m-288 10 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m14 0 h4 m0 0 h236 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m14 0 h4 m0 0 h236 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m134 0 h4 m0 0 h116 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m124 0 h4 m0 0 h126 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m138 0 h4 m0 0 h112 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m112 0 h4 m0 0 h138 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m26 0 h4 m0 0 h224 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m14 0 h4 m0 0 h236 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-228 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 m44 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 v29 m148 0 v-29 m-148 29 q0 10 10 10 m128 0 q10 0 10 -10 m-138 10 h4 m34 0 h4 m0 0 h86 m40 -49 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 m-248 -31 v20 m278 0 v-20 m-278 20 v57 m278 0 v-57 m-278 57 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m20 0 h4 m0 0 h230 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m16 0 h4 m0 0 h234 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m22 0 h4 m0 0 h228 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m24 0 h4 m0 0 h226 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m24 0 h4 m0 0 h226 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m12 0 h4 m0 0 h238 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m16 0 h4 m0 0 h234 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m20 0 h4 m0 0 h230 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m68 0 h4 m0 0 h182 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m10 0 h4 m0 0 h240 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m18 0 h4 m0 0 h232 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m26 0 h4 m0 0 h224 m-268 -10 v20 m278 0 v-20 m-278 20 v8 m278 0 v-8 m-278 8 q0 10 10 10 m258 0 q10 0 10 -10 m-268 10 h4 m30 0 h4 m0 0 h220 m40 -665 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 m88 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-132 702 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h52 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v1 m82 0 v-1 m-82 1 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m12 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="787 712 795 708 795 716"/> + <polygon points="787 712 779 708 779 716"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#regularcondition" title="RegularCondition" shape="rect">RegularCondition</a></div> + <div>         ::= 'PRIOR'? <a href="#comparisonitem" title="ComparisonItem" shape="rect">ComparisonItem</a> ( '(' '+' ')' )? ( '>' | '<' | '=' | <a href="#op-greaterthanequals" title="OP_GREATERTHANEQUALS" shape="rect">OP_GREATERTHANEQUALS</a> | <a href="#op-minorthanequals" title="OP_MINORTHANEQUALS" shape="rect">OP_MINORTHANEQUALS</a> | <a href="#op-notequalsstandard" title="OP_NOTEQUALSSTANDARD" shape="rect">OP_NOTEQUALSSTANDARD</a> | <a href="#op-notequalsbang" title="OP_NOTEQUALSBANG" shape="rect">OP_NOTEQUALSBANG</a> | '@@' | '~' | ( 'NOT'? 'REGEXP' | 'RLIKE' ) 'BINARY'? | '~*' | '!~' | '!~*' | '@>' + | '<@' | '?' | '?|' | '?&' | <a href="#op-concat" title="OP_CONCAT" shape="rect">OP_CONCAT</a> | '-' | '-#' | '<->' | '<#>' ) 'PRIOR'? <a href="#comparisonitem" title="ComparisonItem" shape="rect">ComparisonItem</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" title="condition">condition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQLCondition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="329" height="266"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#existsexpression" xlink:title="ExistsExpression" shape="rect"> + <rect x="43" y="1" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">ExistsExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#inexpression" xlink:title="InExpression" shape="rect"> + <rect x="43" y="29" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">InExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#overlapscondition" xlink:title="OverlapsCondition" shape="rect"> + <rect x="43" y="57" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">OverlapsCondition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="43" y="85" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">SimpleExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#between" xlink:title="Between" shape="rect"> + <rect x="161" y="106" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="118">Between</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#isnullexpression" xlink:title="IsNullExpression" shape="rect"> + <rect x="161" y="134" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="146">IsNullExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#isbooleanexpression" xlink:title="IsBooleanExpression" shape="rect"> + <rect x="161" y="162" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="174">IsBooleanExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#likeexpression" xlink:title="LikeExpression" shape="rect"> + <rect x="161" y="190" width="76" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="202">LikeExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#isdistinctexpression" xlink:title="IsDistinctExpression" shape="rect"> + <rect x="161" y="218" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="230">IsDistinctExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#similartoexpression" xlink:title="SimilarToExpression" shape="rect"> + <rect x="161" y="246" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="258">SimilarToExpression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m84 0 h4 m0 0 h158 m-270 0 h20 m250 0 h20 m-290 0 q10 0 10 10 m270 0 q0 -10 10 -10 m-280 10 v8 m270 0 v-8 m-270 8 q0 10 10 10 m250 0 q10 0 10 -10 m-260 10 h4 m68 0 h4 m0 0 h174 m-260 -10 v20 m270 0 v-20 m-270 20 v8 m270 0 v-8 m-270 8 q0 10 10 10 m250 0 q10 0 10 -10 m-260 10 h4 m92 0 h4 m0 0 h150 m-260 -10 v20 m270 0 v-20 m-270 20 v8 m270 0 v-8 m-270 8 q0 10 10 10 m250 0 q10 0 10 -10 m-260 10 h4 m90 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 m50 0 h4 m0 0 h54 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 m82 0 h4 m0 0 h22 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 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 m76 0 h4 m0 0 h28 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 m98 0 h4 m0 0 h6 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 m98 0 h4 m0 0 h6 m43 -245 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="#sqlcondition" title="SQLCondition" shape="rect">SQLCondition</a></div> + <div>         ::= <a href="#existsexpression" title="ExistsExpression" shape="rect">ExistsExpression</a></div> + <div>           | <a href="#inexpression" title="InExpression" shape="rect">InExpression</a></div> + <div>           | <a href="#overlapscondition" title="OverlapsCondition" shape="rect">OverlapsCondition</a></div> + <div>           | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( <a href="#between" title="Between" shape="rect">Between</a> | <a href="#isnullexpression" title="IsNullExpression" shape="rect">IsNullExpression</a> | <a href="#isbooleanexpression" title="IsBooleanExpression" shape="rect">IsBooleanExpression</a> | <a href="#likeexpression" title="LikeExpression" shape="rect">LikeExpression</a> | <a href="#isdistinctexpression" title="IsDistinctExpression" shape="rect">IsDistinctExpression</a> | <a href="#similartoexpression" title="SimilarToExpression" shape="rect">SimilarToExpression</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" title="condition">condition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + InExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="583" 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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SimpleExpression</text></a><rect x="141" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="34">(</text> + <rect x="161" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="34">+</text> + <rect x="183" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="34">)</text> + <rect x="243" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="34">NOT</text> + <rect x="299" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="303" y="13">IN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="345" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="349" y="13">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#function" xlink:title="Function" shape="rect"> + <rect x="345" y="29" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="349" y="41">Function</text></a><rect x="345" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="349" y="69">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="385" y="57" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="389" y="69">ComplexExpressionList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="385" y="85" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="389" y="97">SubSelect</text></a><rect x="527" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="531" y="69">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="345" y="113" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="349" y="125">SimpleExpression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 m20 0 h10 m0 0 h52 m-82 0 h20 m62 0 h20 m-102 0 q10 0 10 10 m82 0 q0 -10 10 -10 m-92 10 v1 m82 0 v-1 m-82 1 q0 10 10 10 m62 0 q10 0 10 -10 m-72 10 h4 m12 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m12 0 h4 m40 -21 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 m20 0 h4 m90 0 h4 m0 0 h104 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 m48 0 h4 m0 0 h146 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 m12 0 h4 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 m54 0 h4 m0 0 h60 m20 -28 h4 m12 0 h4 m-212 -10 v20 m222 0 v-20 m-222 20 v36 m222 0 v-36 m-222 36 q0 10 10 10 m202 0 q10 0 10 -10 m-212 10 h4 m90 0 h4 m0 0 h104 m23 -112 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="#inexpression" title="InExpression" shape="rect">InExpression</a></div> + <div>         ::= <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( '(' '+' ')' )? 'NOT'? 'IN' ( <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#function" title="Function" shape="rect">Function</a> | '(' ( <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> | <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ) ')' | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + MultiInExpressions +====================================================================================================================== + + +.. 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> + <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="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="83" y="29" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">SimpleExpressionList</text></a><rect x="195" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="41">)</text> + <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 m12 0 h4 m0 0 h4 m104 0 h4 m0 0 h4 m12 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="#multiinexpressions" title="MultiInExpressions" shape="rect">MultiInExpressions</a></div> + <div>         ::= '(' '(' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a> ')' ( ',' '(' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</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> + + +====================================================================================================================== + Between +====================================================================================================================== + + +.. 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="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><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="159" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="163" y="13">SimpleExpression</text></a><rect x="257" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="261" y="13">AND</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="293" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="297" y="13">SimpleExpression</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 m0 0 h4 m90 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m90 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="#between" title="Between" shape="rect">Between</a>  ::= 'NOT'? 'BETWEEN' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> 'AND' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + LikeExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="519" 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="119" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">LIKE</text> + <rect x="119" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="41">ILIKE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="177" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="13">SimpleExpression</text></a><rect x="295" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="299" y="34">ESCAPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="365" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="369" y="34">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="365" y="50" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="369" y="62">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 m40 -21 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 m20 -28 h4 m90 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 m42 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 m60 0 h4 m0 0 h30 m43 -49 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="#likeexpression" title="LikeExpression" shape="rect">LikeExpression</a></div> + <div>         ::= 'NOT'? ( 'LIKE' | 'ILIKE' ) <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( 'ESCAPE' ( <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#expression" title="Expression" shape="rect">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="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SimilarToExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="483" 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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="181" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="13">SimpleExpression</text></a><rect x="299" y="22" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="303" y="34">ESCAPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="349" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="353" y="34">S_CHAR_LITERAL</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 m90 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 m42 0 h4 m0 0 h4 m90 0 h4 m23 -21 h-3"/> + <polygon points="473 10 481 6 481 14"/> + <polygon points="473 10 465 6 465 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#similartoexpression" title="SimilarToExpression" shape="rect">SimilarToExpression</a></div> + <div>         ::= 'NOT'? 'SIMILAR' 'TO' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( 'ESCAPE' <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_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="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + IsDistinctExpression +====================================================================================================================== + + +.. 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="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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="227" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="231" y="13">SimpleExpression</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 m90 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="#isdistinctexpression" title="IsDistinctExpression" shape="rect">IsDistinctExpression</a></div> + <div>         ::= 'IS' 'NOT'? 'DISTINCT' 'FROM' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + IsNullExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="221" height="70"> + <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">ISNULL</text> + <rect x="43" y="29" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">IS</text> + <rect x="89" y="50" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="62">NOT</text> + <rect x="145" y="29" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="41">NULL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h94 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 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 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="#isnullexpression" title="IsNullExpression" shape="rect">IsNullExpression</a></div> + <div>         ::= 'ISNULL'</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="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + IsBooleanExpression +====================================================================================================================== + + +.. 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"/> + <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="145" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="13">TRUE</text> + <rect x="145" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="41">FALSE</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 h4 m32 0 h4 m0 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="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="#isbooleanexpression" title="IsBooleanExpression" shape="rect">IsBooleanExpression</a></div> + <div>         ::= 'IS' 'NOT'? ( 'TRUE' | 'FALSE' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ExistsExpression +====================================================================================================================== + + +.. 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">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="71" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="75" y="13">SimpleExpression</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="#existsexpression" title="ExistsExpression" shape="rect">ExistsExpression</a></div> + <div>         ::= 'EXISTS' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#sqlcondition" title="sqlcondition">sqlcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SQLExpressionList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="147" 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="#expression" xlink:title="Expression" shape="rect"> + <rect x="43" y="29" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">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 m60 0 h4 m-88 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m68 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-68 0 h4 m8 0 h4 m0 0 h52 m23 28 h-3"/> + <polygon points="137 38 145 34 145 42"/> + <polygon points="137 38 129 34 129 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="#sqlexpressionlist" title="SQLExpressionList" shape="rect">SQLExpressionList</a></div> + <div>         ::= <a href="#expression" title="Expression" shape="rect">Expression</a> ( ',' <a href="#expression" title="Expression" shape="rect">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> + + +====================================================================================================================== + SimpleExpressionList +====================================================================================================================== + + +.. 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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="43" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">SimpleExpression</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="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a></div> + <div>         ::= <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#anycomparisonexpression" title="anycomparisonexpression">anycomparisonexpression</a></li><li><a href="#execute" title="execute">execute</a></li><li><a href="#expressionlistitem" title="expressionlistitem">expressionlistitem</a></li><li><a href="#groupbycolumnreferences" title="groupbycolumnreferences">groupbycolumnreferences</a></li><li><a href="#internalfunction" title="internalfunction">internalfunction</a></li><li><a href="#multiinexpressions" title="multiinexpressions">multiinexpressions</a></li><li><a href="#mysqlgroupconcat" title="mysqlgroupconcat">mysqlgroupconcat</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#specialstringfunctionwithnamedparameters" title="specialstringfunctionwithnamedparameters">specialstringfunctionwithnamedparameters</a></li><li><a href="#values" title="values">values</a></li><li><a href="#withitem" title="withitem">withitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ComplexExpressionList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="285" height="77"> + <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="#oraclenamedfunctionparameter" xlink:title="OracleNamedFunctionParameter" shape="rect"> + <rect x="63" y="29" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">OracleNamedFunctionParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="63" y="57" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="69">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 m40 0 h4 m158 0 h4 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 m60 0 h4 m0 0 h98 m-206 -28 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 m23 28 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="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a></div> + <div>         ::= ( <a href="#oraclenamedfunctionparameter" title="OracleNamedFunctionParameter" shape="rect">OracleNamedFunctionParameter</a> | <a href="#expression" title="Expression" shape="rect">Expression</a> ) ( ',' ( <a href="#oraclenamedfunctionparameter" title="OracleNamedFunctionParameter" shape="rect">OracleNamedFunctionParameter</a> | <a href="#expression" title="Expression" shape="rect">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="#groupbycolumnreferences" title="groupbycolumnreferences">groupbycolumnreferences</a></li><li><a href="#inexpression" title="inexpression">inexpression</a></li><li><a href="#insertconflictaction" title="insertconflictaction">insertconflictaction</a></li><li><a href="#internalfunction" title="internalfunction">internalfunction</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#specialstringfunctionwithnamedparameters" title="specialstringfunctionwithnamedparameters">specialstringfunctionwithnamedparameters</a></li><li><a href="#update" title="update">update</a></li><li><a href="#windowdefinition" title="windowdefinition">windowdefinition</a></li><li><a href="#windowfun" title="windowfun">windowfun</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + NamedExpressionList1 +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="431" 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">BOTH</text> + <rect x="43" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">LEADING</text> + <rect x="43" y="57" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">TRAILING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="123" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="127" y="13">SimpleExpression</text></a><rect x="241" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="13">FROM</text> + <rect x="241" y="29" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="41">IN</text> + <rect x="241" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="69">PLACING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="317" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="321" y="13">SimpleExpression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m34 0 h4 m0 0 h18 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 m48 0 h4 m0 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 m52 0 h4 m20 -56 h4 m90 0 h4 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 m18 0 h4 m0 0 h30 m-66 -10 v20 m76 0 v-20 m-76 20 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 m20 -56 h4 m90 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="#namedexpressionlist1" title="NamedExpressionList1" shape="rect">NamedExpressionList1</a></div> + <div>         ::= ( 'BOTH' | 'LEADING' | 'TRAILING' ) <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( 'FROM' | 'IN' | 'PLACING' ) <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#specialstringfunctionwithnamedparameters" title="specialstringfunctionwithnamedparameters">specialstringfunctionwithnamedparameters</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + NamedExpressionListExprFirst +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="725" 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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="23" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">SimpleExpression</text></a><rect x="141" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="13">FROM</text> + <rect x="141" y="29" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="41">IN</text> + <rect x="141" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="69">PLACING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="217" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="221" y="13">SimpleExpression</text></a><rect x="355" y="22" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="359" y="34">FOR</text> + <rect x="355" y="50" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="359" y="62">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="419" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="423" y="34">SimpleExpression</text></a><rect x="537" y="43" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="541" y="55">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="571" y="43" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="575" y="55">SimpleExpression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m90 0 h4 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 m18 0 h4 m0 0 h30 m-66 -10 v20 m76 0 v-20 m-76 20 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 m20 -56 h4 m90 0 h4 m20 0 h10 m0 0 h344 m-374 0 h20 m354 0 h20 m-394 0 q10 0 10 10 m374 0 q0 -10 10 -10 m-384 10 v1 m374 0 v-1 m-374 1 q0 10 10 10 m354 0 q10 0 10 -10 m-344 10 h4 m26 0 h4 m0 0 h10 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 m90 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 m26 0 h4 m0 0 h4 m90 0 h4 m43 -42 h-3"/> + <polygon points="715 10 723 6 723 14"/> + <polygon points="715 10 707 6 707 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#namedexpressionlistexprfirst" title="NamedExpressionListExprFirst" shape="rect">NamedExpressionListExprFirst</a></div> + <div>         ::= <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( 'FROM' | 'IN' | 'PLACING' ) <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ( 'FOR' | 'FROM' ) <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( 'FOR' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )? )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#specialstringfunctionwithnamedparameters" title="specialstringfunctionwithnamedparameters">specialstringfunctionwithnamedparameters</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SimpleExpressionListAtLeastTwoItems +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="291" 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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="23" y="13" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="25">SimpleExpression</text></a><rect x="141" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="25">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="157" y="13" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="25">SimpleExpression</text></a><path class="line" d="m17 22 h2 m0 0 h4 m90 0 h4 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="281 22 289 18 289 26"/> + <polygon points="281 22 273 18 273 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="#simpleexpressionlistatleasttwoitems" title="SimpleExpressionListAtLeastTwoItems" shape="rect">SimpleExpressionListAtLeastTwoItems</a></div> + <div>         ::= <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ( ',' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> )+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#overlapscondition" title="overlapscondition">overlapscondition</a></li><li><a href="#valuelistexpression" title="valuelistexpression">valuelistexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ComparisonItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="219" 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="#anycomparisonexpression" xlink:title="AnyComparisonExpression" shape="rect"> + <rect x="43" y="1" width="132" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">AnyComparisonExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#valuelistexpression" xlink:title="ValueListExpression" shape="rect"> + <rect x="43" y="29" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">ValueListExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="43" y="57" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">SimpleExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rowconstructor" xlink:title="RowConstructor" shape="rect"> + <rect x="43" y="85" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">RowConstructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#primaryexpression" xlink:title="PrimaryExpression" shape="rect"> + <rect x="43" y="113" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">PrimaryExpression</text></a><path class="line" d="m17 10 h2 m20 0 h4 m132 0 h4 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 m98 0 h4 m0 0 h34 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 m90 0 h4 m0 0 h42 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 m82 0 h4 m0 0 h50 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 m94 0 h4 m0 0 h38 m23 -112 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="#comparisonitem" title="ComparisonItem" shape="rect">ComparisonItem</a></div> + <div>         ::= <a href="#anycomparisonexpression" title="AnyComparisonExpression" shape="rect">AnyComparisonExpression</a></div> + <div>           | <a href="#valuelistexpression" title="ValueListExpression" shape="rect">ValueListExpression</a></div> + <div>           | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a></div> + <div>           | <a href="#rowconstructor" title="RowConstructor" shape="rect">RowConstructor</a></div> + <div>           | <a href="#primaryexpression" title="PrimaryExpression" shape="rect">PrimaryExpression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regularcondition" title="regularcondition">regularcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AnyComparisonExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="365" height="77"> + <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">ANY</text> + <rect x="43" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SOME</text> + <rect x="43" y="57" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">ALL</text> + <rect x="107" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="13">(</text> + <rect x="147" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="13">VALUES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="197" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="201" y="13">SimpleExpressionList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="147" y="29" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="41">SubSelect</text></a><rect x="329" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="333" y="13">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m26 0 h4 m0 0 h10 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 m24 0 h4 m0 0 h12 m20 -56 h4 m12 0 h4 m20 0 h4 m42 0 h4 m0 0 h4 m104 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 v8 m182 0 v-8 m-182 8 q0 10 10 10 m162 0 q10 0 10 -10 m-172 10 h4 m54 0 h4 m0 0 h100 m20 -28 h4 m12 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="#anycomparisonexpression" title="AnyComparisonExpression" shape="rect">AnyComparisonExpression</a></div> + <div>         ::= ( 'ANY' | 'SOME' | 'ALL' ) '(' ( 'VALUES' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a> | <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ) ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#comparisonitem" title="comparisonitem">comparisonitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SimpleExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="317" 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="#uservariable" xlink:title="UserVariable" shape="rect"> + <rect x="43" y="22" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">UserVariable</text></a><rect x="137" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="34">=</text> + <rect x="137" y="50" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="62">:=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#concatexpression" xlink:title="ConcatExpression" shape="rect"> + <rect x="201" y="1" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="205" y="13">ConcatExpression</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 m66 0 h4 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 m40 -49 h4 m92 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="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a></div> + <div>         ::= ( <a href="#uservariable" title="UserVariable" shape="rect">UserVariable</a> ( '=' | ':=' ) )? <a href="#concatexpression" title="ConcatExpression" shape="rect">ConcatExpression</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#arrayconstructor" title="arrayconstructor">arrayconstructor</a></li><li><a href="#arrayexpression" title="arrayexpression">arrayexpression</a></li><li><a href="#between" title="between">between</a></li><li><a href="#castexpression" title="castexpression">castexpression</a></li><li><a href="#comparisonitem" title="comparisonitem">comparisonitem</a></li><li><a href="#existsexpression" title="existsexpression">existsexpression</a></li><li><a href="#extractexpression" title="extractexpression">extractexpression</a></li><li><a href="#groupbycolumnreferences" title="groupbycolumnreferences">groupbycolumnreferences</a></li><li><a href="#inexpression" title="inexpression">inexpression</a></li><li><a href="#insert" title="insert">insert</a></li><li><a href="#insertconflictaction" title="insertconflictaction">insertconflictaction</a></li><li><a href="#isdistinctexpression" title="isdistinctexpression">isdistinctexpression</a></li><li><a href="#likeexpression" title="likeexpression">likeexpression</a></li><li><a href="#mergeinsertclause" title="mergeinsertclause">mergeinsertclause</a></li><li><a href="#mergeupdateclause" title="mergeupdateclause">mergeupdateclause</a></li><li><a href="#namedexpressionlist1" title="namedexpressionlist1">namedexpressionlist1</a></li><li><a href="#namedexpressionlistexprfirst" title="namedexpressionlistexprfirst">namedexpressionlistexprfirst</a></li><li><a href="#pivotselectexpritem" title="pivotselectexpritem">pivotselectexpritem</a></li><li><a href="#sqlcondition" title="sqlcondition">sqlcondition</a></li><li><a href="#safecastexpression" title="safecastexpression">safecastexpression</a></li><li><a href="#showtables" title="showtables">showtables</a></li><li><a href="#similartoexpression" title="similartoexpression">similartoexpression</a></li><li><a href="#simpleexpressionlist" title="simpleexpressionlist">simpleexpressionlist</a></li><li><a href="#simpleexpressionlistatleasttwoitems" title="simpleexpressionlistatleasttwoitems">simpleexpressionlistatleasttwoitems</a></li><li><a href="#trycastexpression" title="trycastexpression">trycastexpression</a></li><li><a href="#update" title="update">update</a></li><li><a href="#upsert" title="upsert">upsert</a></li><li><a href="#valueslist" title="valueslist">valueslist</a></li><li><a href="#variableexpression" title="variableexpression">variableexpression</a></li><li><a href="#windowoffset" title="windowoffset">windowoffset</a></li><li><a href="#xmlserializeexpr" title="xmlserializeexpr">xmlserializeexpr</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ConcatExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="155" 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="#bitwiseandor" xlink:title="BitwiseAndOr" shape="rect"> + <rect x="43" y="29" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">BitwiseAndOr</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#op-concat" xlink:title="OP_CONCAT" shape="rect"> + <rect x="43" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">OP_CONCAT</text></a><path class="line" d="m17 38 h2 m20 0 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 m68 0 h4 m23 28 h-3"/> + <polygon points="145 38 153 34 153 42"/> + <polygon points="145 38 137 34 137 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="#concatexpression" title="ConcatExpression" shape="rect">ConcatExpression</a></div> + <div>         ::= <a href="#bitwiseandor" title="BitwiseAndOr" shape="rect">BitwiseAndOr</a> ( <a href="#op-concat" title="OP_CONCAT" shape="rect">OP_CONCAT</a> <a href="#bitwiseandor" title="BitwiseAndOr" shape="rect">BitwiseAndOr</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#simpleexpression" title="simpleexpression">simpleexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + BitwiseAndOr +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="181" height="133"> + <polygon points="9 122 1 118 1 126"/> + <polygon points="17 122 9 118 9 126"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#additiveexpression" xlink:title="AdditiveExpression" shape="rect"> + <rect x="43" y="113" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">AdditiveExpression</text></a><rect x="43" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">|</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="29" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41"><<</text> + <rect x="43" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">>></text> + <path class="line" d="m17 122 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 m12 0 h4 m0 0 h82 m-112 10 l0 -28 q0 -10 10 -10 m112 38 l0 -28 q0 -10 -10 -10 m-102 0 h4 m14 0 h4 m0 0 h80 m-112 10 l0 -28 q0 -10 10 -10 m112 38 l0 -28 q0 -10 -10 -10 m-102 0 h4 m22 0 h4 m0 0 h72 m-112 10 l0 -28 q0 -10 10 -10 m112 38 l0 -28 q0 -10 -10 -10 m-102 0 h4 m22 0 h4 m0 0 h72 m23 112 h-3"/> + <polygon points="171 122 179 118 179 126"/> + <polygon points="171 122 163 118 163 126"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#bitwiseandor" title="BitwiseAndOr" shape="rect">BitwiseAndOr</a></div> + <div>         ::= <a href="#additiveexpression" title="AdditiveExpression" shape="rect">AdditiveExpression</a> ( ( '|' | '&' | '<<' | '>>' ) <a href="#additiveexpression" title="AdditiveExpression" shape="rect">AdditiveExpression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#concatexpression" title="concatexpression">concatexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AdditiveExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" 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="#multiplicativeexpression" xlink:title="MultiplicativeExpression" shape="rect"> + <rect x="43" y="57" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">MultiplicativeExpression</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 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 m14 0 h4 m0 0 h98 m-130 10 l0 -28 q0 -10 10 -10 m130 38 l0 -28 q0 -10 -10 -10 m-120 0 h4 m10 0 h4 m0 0 h102 m23 56 h-3"/> + <polygon points="189 66 197 62 197 70"/> + <polygon points="189 66 181 62 181 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="#additiveexpression" title="AdditiveExpression" shape="rect">AdditiveExpression</a></div> + <div>         ::= <a href="#multiplicativeexpression" title="MultiplicativeExpression" shape="rect">MultiplicativeExpression</a> ( ( '+' | '-' ) <a href="#multiplicativeexpression" title="MultiplicativeExpression" shape="rect">MultiplicativeExpression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#bitwiseandor" title="bitwiseandor">bitwiseandor</a></li><li><a href="#top" title="top">top</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + MultiplicativeExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" height="133"> + <polygon points="9 122 1 118 1 126"/> + <polygon points="17 122 9 118 9 126"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#bitwisexor" xlink:title="BitwiseXor" shape="rect"> + <rect x="43" y="113" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">BitwiseXor</text></a><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="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">/</text> + <rect x="43" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">DIV</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 122 h2 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 m14 0 h4 m0 0 h42 m-74 10 l0 -28 q0 -10 10 -10 m74 38 l0 -28 q0 -10 -10 -10 m-64 0 h4 m12 0 h4 m0 0 h44 m-74 10 l0 -28 q0 -10 10 -10 m74 38 l0 -28 q0 -10 -10 -10 m-64 0 h4 m24 0 h4 m0 0 h32 m-74 10 l0 -28 q0 -10 10 -10 m74 38 l0 -28 q0 -10 -10 -10 m-64 0 h4 m20 0 h4 m0 0 h36 m23 112 h-3"/> + <polygon points="133 122 141 118 141 126"/> + <polygon points="133 122 125 118 125 126"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multiplicativeexpression" title="MultiplicativeExpression" shape="rect">MultiplicativeExpression</a></div> + <div>         ::= <a href="#bitwisexor" title="BitwiseXor" shape="rect">BitwiseXor</a> ( ( '*' | '/' | 'DIV' | '%' ) <a href="#bitwisexor" title="BitwiseXor" shape="rect">BitwiseXor</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#additiveexpression" title="additiveexpression">additiveexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + BitwiseXor +====================================================================================================================== + + +.. 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="#primaryexpression" xlink:title="PrimaryExpression" shape="rect"> + <rect x="43" y="29" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">PrimaryExpression</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 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 m14 0 h4 m0 0 h80 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="#bitwisexor" title="BitwiseXor" shape="rect">BitwiseXor</a></div> + <div>         ::= <a href="#primaryexpression" title="PrimaryExpression" shape="rect">PrimaryExpression</a> ( '^' <a href="#primaryexpression" title="PrimaryExpression" shape="rect">PrimaryExpression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#multiplicativeexpression" title="multiplicativeexpression">multiplicativeexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ArrayExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="453" height="75"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="43" y="13" width="12" 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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="83" y="34" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="46">SimpleExpression</text></a><rect x="221" y="34" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="46">:</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="259" y="55" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="263" y="67">SimpleExpression</text></a><rect x="397" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="401" y="25">]</text> + <path class="line" d="m17 22 h2 m20 0 h4 m12 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 m40 -21 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 m10 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 m40 -42 h4 m12 0 h4 m-394 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m374 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-374 0 h10 m0 0 h364 m23 21 h-3"/> + <polygon points="443 22 451 18 451 26"/> + <polygon points="443 22 435 18 435 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="#arrayexpression" title="ArrayExpression" shape="rect">ArrayExpression</a></div> + <div>         ::= ( '[' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a>? ( ':' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a>? )? ']' )+</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PrimaryExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="789" height="1163"> + <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="43" y="50" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">!</text> + <rect x="119" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="34">+</text> + <rect x="119" y="50" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="62">-</text> + <rect x="119" y="78" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="90">~</text> + <rect x="181" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="13">NULL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#casewhenexpression" xlink:title="CaseWhenExpression" shape="rect"> + <rect x="181" y="29" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="41">CaseWhenExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcparameter" xlink:title="SimpleJdbcParameter" shape="rect"> + <rect x="181" y="57" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="69">SimpleJdbcParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#jdbcnamedparameter" xlink:title="JdbcNamedParameter" shape="rect"> + <rect x="181" y="85" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="97">JdbcNamedParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#uservariable" xlink:title="UserVariable" shape="rect"> + <rect x="181" y="113" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="125">UserVariable</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#numericbind" xlink:title="NumericBind" shape="rect"> + <rect x="181" y="141" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="153">NumericBind</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#extractexpression" xlink:title="ExtractExpression" shape="rect"> + <rect x="181" y="169" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="181">ExtractExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mysqlgroupconcat" xlink:title="MySQLGroupConcat" shape="rect"> + <rect x="181" y="197" width="102" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="209">MySQLGroupConcat</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#xmlserializeexpr" xlink:title="XMLSerializeExpr" shape="rect"> + <rect x="181" y="225" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="237">XMLSerializeExpr</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#jsonexpression" xlink:title="JsonExpression" shape="rect"> + <rect x="181" y="253" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="265">JsonExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#jsonfunction" xlink:title="JsonFunction" shape="rect"> + <rect x="181" y="281" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="293">JsonFunction</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#jsonaggregatefunction" xlink:title="JsonAggregateFunction" shape="rect"> + <rect x="181" y="309" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="321">JsonAggregateFunction</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fulltextsearch" xlink:title="FullTextSearch" shape="rect"> + <rect x="181" y="337" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="349">FullTextSearch</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#function" xlink:title="Function" shape="rect"> + <rect x="181" y="365" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="377">Function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#analyticexpression" xlink:title="AnalyticExpression" shape="rect"> + <rect x="257" y="386" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="261" y="398">AnalyticExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#intervalexpression" xlink:title="IntervalExpression" shape="rect"> + <rect x="181" y="414" width="92" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="426">IntervalExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-double" xlink:title="S_DOUBLE" shape="rect"> + <rect x="181" y="442" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="454">S_DOUBLE</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="181" y="470" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="482">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-hex" xlink:title="S_HEX" shape="rect"> + <rect x="181" y="498" width="40" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="510">S_HEX</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#castexpression" xlink:title="CastExpression" shape="rect"> + <rect x="181" y="526" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="538">CastExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#trycastexpression" xlink:title="TryCastExpression" shape="rect"> + <rect x="181" y="554" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="566">TryCastExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#safecastexpression" xlink:title="SafeCastExpression" shape="rect"> + <rect x="181" y="582" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="594">SafeCastExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-time-key-expr" xlink:title="K_TIME_KEY_EXPR" shape="rect"> + <rect x="181" y="610" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="622">K_TIME_KEY_EXPR</text></a><rect x="181" y="638" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="650">CURRENT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#datetimeliteralexpression" xlink:title="DateTimeLiteralExpression" shape="rect"> + <rect x="181" y="666" width="128" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="678">DateTimeLiteralExpression</text></a><rect x="181" y="694" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="706">ARRAY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#arrayconstructor" xlink:title="ArrayConstructor" shape="rect"> + <rect x="227" y="694" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="231" y="706">ArrayConstructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nextvalexpression" xlink:title="NextValExpression" shape="rect"> + <rect x="181" y="722" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="734">NextValExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#connectbyrootoperator" xlink:title="ConnectByRootOperator" shape="rect"> + <rect x="181" y="750" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="762">ConnectByRootOperator</text></a><rect x="181" y="778" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="790">ALL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="181" y="806" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="818">Column</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="181" y="834" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="185" y="846">S_CHAR_LITERAL</text></a><rect x="201" y="862" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="874">{d</text> + <rect x="201" y="890" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="902">{t</text> + <rect x="201" y="918" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="930">{ts</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="249" y="862" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="253" y="874">S_CHAR_LITERAL</text></a><rect x="347" y="862" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="351" y="874">}</text> + <rect x="181" y="946" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="958">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="221" y="946" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="958">SubSelect</text></a><rect x="283" y="946" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="287" y="958">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="241" y="974" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="986">ComplexExpressionList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="241" y="1002" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="1014">SimpleExpressionList</text></a><rect x="383" y="974" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="387" y="986">)</text> + <rect x="423" y="995" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="1007">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext" xlink:title="RelObjectNameExt" shape="rect"> + <rect x="439" y="995" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="443" y="1007">RelObjectNameExt</text></a><rect x="621" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="625" y="34">COLLATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="677" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="681" y="34">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#intervalexpressionwithoutinterval" xlink:title="IntervalExpressionWithoutInterval" shape="rect"> + <rect x="160" y="1077" width="162" height="18" class="nonterminal"/> + <text class="nonterminal" x="164" y="1089">IntervalExpressionWithoutInterval</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#arrayexpression" xlink:title="ArrayExpression" shape="rect"> + <rect x="370" y="1077" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="374" y="1089">ArrayExpression</text></a><rect x="520" y="1056" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="524" y="1068">::</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="540" y="1056" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="544" y="1068">ColDataType</text></a><rect x="449" y="1131" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="453" y="1143">AT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-datetimeliteral" xlink:title="K_DATETIMELITERAL" shape="rect"> + <rect x="477" y="1131" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="481" y="1143">K_DATETIMELITERAL</text></a><rect x="589" y="1131" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="593" y="1143">ZONE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#primaryexpression" xlink:title="PrimaryExpression" shape="rect"> + <rect x="631" y="1131" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="635" y="1143">PrimaryExpression</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 m-46 -10 v20 m56 0 v-20 m-56 20 v8 m56 0 v-8 m-56 8 q0 10 10 10 m36 0 q10 0 10 -10 m-46 10 h4 m10 0 h4 m0 0 h18 m40 -49 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 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 m14 0 h4 m40 -77 h4 m32 0 h4 m0 0 h360 m-420 0 h20 m400 0 h20 m-440 0 q10 0 10 10 m420 0 q0 -10 10 -10 m-430 10 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m112 0 h4 m0 0 h280 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m108 0 h4 m0 0 h284 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m112 0 h4 m0 0 h280 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m66 0 h4 m0 0 h326 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m66 0 h4 m0 0 h326 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m90 0 h4 m0 0 h302 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m102 0 h4 m0 0 h290 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m86 0 h4 m0 0 h306 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m80 0 h4 m0 0 h312 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m68 0 h4 m0 0 h324 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m116 0 h4 m0 0 h276 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m74 0 h4 m0 0 h318 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m48 0 h4 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 m20 -21 h204 m-410 -10 v20 m420 0 v-20 m-420 20 v29 m420 0 v-29 m-420 29 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m92 0 h4 m0 0 h300 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m60 0 h4 m0 0 h332 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m48 0 h4 m0 0 h344 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m40 0 h4 m0 0 h352 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m80 0 h4 m0 0 h312 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m94 0 h4 m0 0 h298 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m100 0 h4 m0 0 h292 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m98 0 h4 m0 0 h294 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m50 0 h4 m0 0 h342 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m128 0 h4 m0 0 h264 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m38 0 h4 m0 0 h4 m86 0 h4 m0 0 h260 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m94 0 h4 m0 0 h298 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m120 0 h4 m0 0 h272 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m24 0 h4 m0 0 h368 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m46 0 h4 m0 0 h346 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m90 0 h4 m0 0 h302 m-410 -10 v20 m420 0 v-20 m-420 20 v8 m420 0 v-8 m-420 8 q0 10 10 10 m400 0 q10 0 10 -10 m-390 10 h4 m18 0 h4 m0 0 h2 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 m16 0 h4 m0 0 h4 m-38 -10 v20 m48 0 v-20 m-48 20 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 m20 -56 h4 m90 0 h4 m0 0 h4 m14 0 h4 m0 0 h212 m-410 -10 v20 m420 0 v-20 m-420 20 v64 m420 0 v-64 m-420 64 q0 10 10 10 m400 0 q10 0 10 -10 m-410 10 h4 m12 0 h4 m20 0 h4 m54 0 h4 m0 0 h4 m12 0 h4 m0 0 h258 m-360 0 h20 m340 0 h20 m-380 0 q10 0 10 10 m360 0 q0 -10 10 -10 m-370 10 v8 m360 0 v-8 m-360 8 q0 10 10 10 m340 0 q10 0 10 -10 m-330 10 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 m104 0 h4 m0 0 h10 m20 -28 h4 m12 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 m8 0 h4 m0 0 h4 m94 0 h4 m80 -994 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 m48 0 h4 m0 0 h4 m74 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-663 1055 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h160 m-190 0 h20 m170 0 h20 m-210 0 q10 0 10 10 m190 0 q0 -10 10 -10 m-200 10 v1 m190 0 v-1 m-190 1 q0 10 10 10 m170 0 q10 0 10 -10 m-180 10 h4 m162 0 h4 m40 -21 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 m60 -21 h4 m12 0 h4 m0 0 h4 m68 0 h4 m-116 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m96 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-96 0 h10 m0 0 h86 m-136 21 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 h10 m0 0 h126 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-271 75 l2 0 m2 0 l2 0 m2 0 l2 0 m42 0 h4 m20 0 h4 m0 0 h4 m104 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m94 0 h4 m-304 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m284 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-284 0 h10 m0 0 h274 m-324 21 h20 m324 0 h20 m-364 0 q10 0 10 10 m344 0 q0 -10 10 -10 m-354 10 v1 m344 0 v-1 m-344 1 q0 10 10 10 m324 0 q10 0 10 -10 m-334 10 h10 m0 0 h314 m23 -21 h-3"/> + <polygon points="779 1140 787 1136 787 1144"/> + <polygon points="779 1140 771 1136 771 1144"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#primaryexpression" title="PrimaryExpression" shape="rect">PrimaryExpression</a></div> + <div>         ::= ( 'NOT' | '!' )? ( '+' | '-' | '~' )? ( 'NULL' | <a href="#casewhenexpression" title="CaseWhenExpression" shape="rect">CaseWhenExpression</a> | <a href="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a> | <a href="#jdbcnamedparameter" title="JdbcNamedParameter" shape="rect">JdbcNamedParameter</a> | <a href="#uservariable" title="UserVariable" shape="rect">UserVariable</a> | <a href="#numericbind" title="NumericBind" shape="rect">NumericBind</a> | <a href="#extractexpression" title="ExtractExpression" shape="rect">ExtractExpression</a> | <a href="#mysqlgroupconcat" title="MySQLGroupConcat" shape="rect">MySQLGroupConcat</a> | <a href="#xmlserializeexpr" title="XMLSerializeExpr" shape="rect">XMLSerializeExpr</a> | <a href="#jsonexpression" title="JsonExpression" shape="rect">JsonExpression</a> | <a href="#jsonfunction" title="JsonFunction" shape="rect">JsonFunction</a> | <a href="#jsonaggregatefunction" title="JsonAggregateFunction" shape="rect">JsonAggregateFunction</a> | <a href="#fulltextsearch" title="FullTextSearch" shape="rect">FullTextSearch</a> | <a href="#function" title="Function" shape="rect">Function</a> <a href="#analyticexpression" title="AnalyticExpression" shape="rect">AnalyticExpression</a>? | <a href="#intervalexpression" title="IntervalExpression" shape="rect">IntervalExpression</a> | <a href="#s-double" title="S_DOUBLE" shape="rect">S_DOUBLE</a> | <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#s-hex" title="S_HEX" shape="rect">S_HEX</a> | <a href="#castexpression" title="CastExpression" shape="rect">CastExpression</a> | <a href="#trycastexpression" title="TryCastExpression" shape="rect">TryCastExpression</a> | <a href="#safecastexpression" title="SafeCastExpression" shape="rect">SafeCastExpression</a> | <a href="#k-time-key-expr" title="K_TIME_KEY_EXPR" shape="rect">K_TIME_KEY_EXPR</a> | 'CURRENT' | <a href="#datetimeliteralexpression" title="DateTimeLiteralExpression" shape="rect">DateTimeLiteralExpression</a> | 'ARRAY' <a href="#arrayconstructor" title="ArrayConstructor" shape="rect">ArrayConstructor</a> | <a href="#nextvalexpression" title="NextValExpression" shape="rect">NextValExpression</a> | <a href="#connectbyrootoperator" title="ConnectByRootOperator" shape="rect">ConnectByRootOperator</a> | 'ALL' | <a href="#column" title="Column" shape="rect">Column</a> | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | ( '{d' | '{t' | '{ts' ) <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> '}' | '(' ( <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ')' | ( <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> | <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a> ) ')' ( '.' <a href="#relobjectnameext" title="RelObjectNameExt" shape="rect">RelObjectNameExt</a> )? ) ) ( 'COLLATE' <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> )? <a href="#intervalexpressionwithoutinterval" title="IntervalExpressionWithoutInterval" shape="rect">IntervalExpressionWithoutInterval</a>? <a href="#arrayexpression" title="ArrayExpression" shape="rect">ArrayExpression</a>? ( '::' <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> )* ( 'AT' <a href="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a> 'ZONE' <a href="#primaryexpression" title="PrimaryExpression" shape="rect">PrimaryExpression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#bitwisexor" title="bitwisexor">bitwisexor</a></li><li><a href="#comparisonitem" title="comparisonitem">comparisonitem</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ConnectByRootOperator +====================================================================================================================== + + +.. 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="104" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">CONNECT_BY_ROOT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="135" y="1" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">Column</text></a><path class="line" d="m17 10 h2 m0 0 h4 m104 0 h4 m0 0 h4 m46 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="#connectbyrootoperator" title="ConnectByRootOperator" shape="rect">ConnectByRootOperator</a></div> + <div>         ::= 'CONNECT_BY_ROOT' <a href="#column" title="Column" shape="rect">Column</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + NextValExpression +====================================================================================================================== + + +.. 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="#k-nextval" xlink:title="K_NEXTVAL" shape="rect"> + <rect x="23" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">K_NEXTVAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="95" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="99" y="13">RelObjectNameList</text></a><path class="line" d="m17 10 h2 m0 0 h4 m64 0 h4 m0 0 h4 m94 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="#nextvalexpression" title="NextValExpression" shape="rect">NextValExpression</a></div> + <div>         ::= <a href="#k-nextval" title="K_NEXTVAL" shape="rect">K_NEXTVAL</a> <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + JdbcNamedParameter +====================================================================================================================== + + +.. 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="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="#relobjectnameext2" xlink:title="RelObjectNameExt2" shape="rect"> + <rect x="41" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="45" y="13">RelObjectNameExt2</text></a><path class="line" d="m17 10 h2 m0 0 h4 m10 0 h4 m0 0 h4 m100 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="#jdbcnamedparameter" title="JdbcNamedParameter" shape="rect">JdbcNamedParameter</a></div> + <div>         ::= ':' <a href="#relobjectnameext2" title="RelObjectNameExt2" shape="rect">RelObjectNameExt2</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OracleNamedFunctionParameter +====================================================================================================================== + + +.. 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"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnameext2" xlink:title="RelObjectNameExt2" shape="rect"> + <rect x="23" y="1" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectNameExt2</text></a><rect x="131" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="13">=></text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="161" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="13">Expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m100 0 h4 m0 0 h4 m22 0 h4 m0 0 h4 m60 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="#oraclenamedfunctionparameter" title="OracleNamedFunctionParameter" shape="rect">OracleNamedFunctionParameter</a></div> + <div>         ::= <a href="#relobjectnameext2" title="RelObjectNameExt2" shape="rect">RelObjectNameExt2</a> '=>' <a href="#expression" title="Expression" shape="rect">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="#complexexpressionlist" title="complexexpressionlist">complexexpressionlist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + UserVariable +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="261" height="77"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="43" y="29" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">@</text> + <rect x="43" y="57" width="26" 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="#relobjectnameext2" xlink:title="RelObjectNameExt2" shape="rect"> + <rect x="117" y="29" width="100" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="41">RelObjectNameExt2</text></a><rect x="117" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="13">.</text> + <path class="line" d="m17 38 h2 m20 0 h4 m16 0 h4 m0 0 h10 m-54 0 h20 m34 0 h20 m-74 0 q10 0 10 10 m54 0 q0 -10 10 -10 m-64 10 v8 m54 0 v-8 m-54 8 q0 10 10 10 m34 0 q10 0 10 -10 m-44 10 h4 m26 0 h4 m40 -28 h4 m100 0 h4 m-128 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m108 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-108 0 h4 m8 0 h4 m0 0 h92 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="#uservariable" title="UserVariable" shape="rect">UserVariable</a></div> + <div>         ::= ( '@' | '@@' ) <a href="#relobjectnameext2" title="RelObjectNameExt2" shape="rect">RelObjectNameExt2</a> ( '.' <a href="#relobjectnameext2" title="RelObjectNameExt2" shape="rect">RelObjectNameExt2</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" title="declare">declare</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#outputclause" title="outputclause">outputclause</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#set" title="set">set</a></li><li><a href="#simpleexpression" title="simpleexpression">simpleexpression</a></li><li><a href="#variableexpression" title="variableexpression">variableexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + NumericBind +====================================================================================================================== + + +.. 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"/> + <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="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="41" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="45" y="13">S_LONG</text></a><path class="line" d="m17 10 h2 m0 0 h4 m10 0 h4 m0 0 h4 m48 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="#numericbind" title="NumericBind" shape="rect">NumericBind</a></div> + <div>         ::= ':' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + DateTimeLiteralExpression +====================================================================================================================== + + +.. 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"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-datetimeliteral" xlink:title="K_DATETIMELITERAL" shape="rect"> + <rect x="23" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">K_DATETIMELITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="135" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="139" y="13">S_CHAR_LITERAL</text></a><path class="line" d="m17 10 h2 m0 0 h4 m104 0 h4 m0 0 h4 m90 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="#datetimeliteralexpression" title="DateTimeLiteralExpression" shape="rect">DateTimeLiteralExpression</a></div> + <div>         ::= <a href="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a> <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_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="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ArrayConstructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="297" height="89"> + <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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="103" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="41">SimpleExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#arrayconstructor" xlink:title="ArrayConstructor" shape="rect"> + <rect x="103" y="57" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="69">ArrayConstructor</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="261" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="265" y="41">]</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m60 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 m86 0 h4 m0 0 h4 m-138 -28 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 m-178 28 h20 m178 0 h20 m-218 0 q10 0 10 10 m198 0 q0 -10 10 -10 m-208 10 v29 m198 0 v-29 m-198 29 q0 10 10 10 m178 0 q10 0 10 -10 m-188 10 h10 m0 0 h168 m20 -49 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="287 38 295 34 295 42"/> + <polygon points="287 38 279 34 279 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="#arrayconstructor" title="ArrayConstructor" shape="rect">ArrayConstructor</a></div> + <div>         ::= '[' ( ( <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> | <a href="#arrayconstructor" title="ArrayConstructor" shape="rect">ArrayConstructor</a> ) ( ',' ( <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> | <a href="#arrayconstructor" title="ArrayConstructor" shape="rect">ArrayConstructor</a> ) )* )? ']'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#arrayconstructor" title="arrayconstructor">arrayconstructor</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + JsonExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="671" height="285"> + <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="#casewhenexpression" xlink:title="CaseWhenExpression" shape="rect"> + <rect x="43" y="13" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">CaseWhenExpression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcparameter" xlink:title="SimpleJdbcParameter" shape="rect"> + <rect x="43" y="41" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="53">SimpleJdbcParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#jdbcnamedparameter" xlink:title="JdbcNamedParameter" shape="rect"> + <rect x="43" y="69" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="81">JdbcNamedParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#uservariable" xlink:title="UserVariable" shape="rect"> + <rect x="43" y="97" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="109">UserVariable</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#jsonfunction" xlink:title="JsonFunction" shape="rect"> + <rect x="43" y="125" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="137">JsonFunction</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#jsonaggregatefunction" xlink:title="JsonAggregateFunction" shape="rect"> + <rect x="43" y="153" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="165">JsonAggregateFunction</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#fulltextsearch" xlink:title="FullTextSearch" shape="rect"> + <rect x="43" y="181" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="193">FullTextSearch</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="43" y="209" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="221">Column</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="43" y="237" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="249">S_CHAR_LITERAL</text></a><rect x="43" y="265" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="277">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="63" y="265" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="277">SubSelect</text></a><rect x="125" y="265" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="277">)</text> + <rect x="227" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="25">::</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="247" y="13" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="251" y="25">ColDataType</text></a><rect x="423" y="13" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="25">-></text> + <rect x="423" y="41" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="53">->></text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="497" y="13" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="501" y="25">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="497" y="41" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="501" y="53">S_LONG</text></a><rect x="423" y="69" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="81">#></text> + <rect x="423" y="97" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="109">#>></text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="481" y="69" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="485" y="81">S_CHAR_LITERAL</text></a><path class="line" d="m17 22 h2 m20 0 h4 m112 0 h4 m0 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 m108 0 h4 m0 0 h8 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m112 0 h4 m0 0 h4 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m66 0 h4 m0 0 h50 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m68 0 h4 m0 0 h48 m-134 -10 v20 m144 0 v-20 m-144 20 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 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m74 0 h4 m0 0 h42 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m46 0 h4 m0 0 h70 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m90 0 h4 m0 0 h26 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m12 0 h4 m0 0 h4 m54 0 h4 m0 0 h4 m12 0 h4 m0 0 h22 m60 -252 h4 m12 0 h4 m0 0 h4 m68 0 h4 m-116 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m96 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-96 0 h10 m0 0 h86 m-136 21 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 h10 m0 0 h126 m80 -21 h4 m18 0 h4 m0 0 h8 m-54 0 h20 m34 0 h20 m-74 0 q10 0 10 10 m54 0 q0 -10 10 -10 m-64 10 v8 m54 0 v-8 m-54 8 q0 10 10 10 m34 0 q10 0 10 -10 m-44 10 h4 m26 0 h4 m40 -28 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 m48 0 h4 m0 0 h42 m-212 -28 h20 m212 0 h20 m-252 0 q10 0 10 10 m232 0 q0 -10 10 -10 m-242 10 v36 m232 0 v-36 m-232 36 q0 10 10 10 m212 0 q10 0 10 -10 m-202 10 h4 m22 0 h4 m0 0 h8 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 m20 -28 h4 m90 0 h4 m0 0 h36 m-252 -56 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m252 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-252 0 h10 m0 0 h242 m23 21 h-3"/> + <polygon points="661 22 669 18 669 26"/> + <polygon points="661 22 653 18 653 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="#jsonexpression" title="JsonExpression" shape="rect">JsonExpression</a></div> + <div>         ::= ( <a href="#casewhenexpression" title="CaseWhenExpression" shape="rect">CaseWhenExpression</a> | <a href="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a> | <a href="#jdbcnamedparameter" title="JdbcNamedParameter" shape="rect">JdbcNamedParameter</a> | <a href="#uservariable" title="UserVariable" shape="rect">UserVariable</a> | <a href="#jsonfunction" title="JsonFunction" shape="rect">JsonFunction</a> | <a href="#jsonaggregatefunction" title="JsonAggregateFunction" shape="rect">JsonAggregateFunction</a> | <a href="#fulltextsearch" title="FullTextSearch" shape="rect">FullTextSearch</a> | <a href="#column" title="Column" shape="rect">Column</a> | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | '(' <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ')' ) ( '::' <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> )* ( ( '->' | '->>' ) ( <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ) | ( '#>' | '#>>' ) <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_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="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + JsonFunction +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="1697" height="295"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="43" y="13" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="25">JSON_OBJECT</text> + <rect x="125" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="25">(</text> + <rect x="185" y="34" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="46">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="237" y="13" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="241" y="25">S_CHAR_LITERAL</text></a><rect x="375" y="34" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="46">:</text> + <rect x="375" y="62" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="74">,</text> + <rect x="375" y="90" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="102">VALUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="439" y="34" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="443" y="46">Expression</text></a><rect x="527" y="55" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="531" y="67">FORMAT</text> + <rect x="581" y="55" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="585" y="67">JSON</text> + <rect x="701" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="705" y="25">,</text> + <rect x="737" y="34" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="741" y="46">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="789" y="13" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="793" y="25">S_CHAR_LITERAL</text></a><rect x="907" y="13" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="911" y="25">:</text> + <rect x="907" y="41" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="911" y="53">,</text> + <rect x="907" y="69" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="911" y="81">VALUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="971" y="13" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="975" y="25">Expression</text></a><rect x="1059" y="34" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1063" y="46">FORMAT</text> + <rect x="1113" y="34" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1117" y="46">JSON</text> + <rect x="1273" y="34" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1277" y="46">NULL</text> + <rect x="1273" y="62" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1277" y="74">ABSENT</text> + <rect x="1345" y="34" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1349" y="46">ON</text> + <rect x="1375" y="34" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1379" y="46">NULL</text> + <rect x="1475" y="34" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1479" y="46">WITH</text> + <rect x="1475" y="62" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1479" y="74">WITHOUT</text> + <rect x="1557" y="34" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1561" y="46">UNIQUE</text> + <rect x="1609" y="34" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1613" y="46">KEYS</text> + <rect x="43" y="144" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="156">JSON_ARRAY</text> + <rect x="121" y="144" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="156">(</text> + <rect x="201" y="144" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="156">NULL</text> + <rect x="241" y="144" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="156">ON</text> + <rect x="271" y="144" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="156">NULL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="221" y="200" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="212">Expression</text></a><rect x="309" y="221" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="313" y="233">FORMAT</text> + <rect x="363" y="221" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="367" y="233">JSON</text> + <rect x="221" y="172" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="184">,</text> + <rect x="523" y="165" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="527" y="177">ABSENT</text> + <rect x="575" y="165" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="579" y="177">ON</text> + <rect x="605" y="165" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="609" y="177">NULL</text> + <rect x="1661" y="275" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1665" y="287">)</text> + <path class="line" d="m17 22 h2 m20 0 h4 m74 0 h4 m0 0 h4 m12 0 h4 m40 0 h10 m0 0 h22 m-52 0 h20 m32 0 h20 m-72 0 q10 0 10 10 m52 0 q0 -10 10 -10 m-62 10 v1 m52 0 v-1 m-52 1 q0 10 10 10 m32 0 q10 0 10 -10 m-42 10 h4 m24 0 h4 m20 -21 h4 m90 0 h4 m20 0 h10 m0 0 h276 m-306 0 h20 m286 0 h20 m-326 0 q10 0 10 10 m306 0 q0 -10 10 -10 m-316 10 v1 m306 0 v-1 m-306 1 q0 10 10 10 m286 0 q10 0 10 -10 m-276 10 h4 m10 0 h4 m0 0 h26 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 m8 0 h4 m0 0 h28 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 m20 -56 h4 m60 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 m46 0 h4 m0 0 h4 m32 0 h4 m80 -42 h4 m8 0 h4 m20 0 h10 m0 0 h22 m-52 0 h20 m32 0 h20 m-72 0 q10 0 10 10 m52 0 q0 -10 10 -10 m-62 10 v1 m52 0 v-1 m-52 1 q0 10 10 10 m32 0 q10 0 10 -10 m-42 10 h4 m24 0 h4 m20 -21 h4 m90 0 h4 m20 0 h4 m10 0 h4 m0 0 h26 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 m8 0 h4 m0 0 h28 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 m20 -56 h4 m60 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 m46 0 h4 m0 0 h4 m32 0 h4 m-472 -21 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m472 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-472 0 h10 m0 0 h462 m-512 21 h20 m512 0 h20 m-552 0 q10 0 10 10 m532 0 q0 -10 10 -10 m-542 10 v57 m532 0 v-57 m-532 57 q0 10 10 10 m512 0 q10 0 10 -10 m-522 10 h10 m0 0 h502 m-1048 -77 h20 m1048 0 h20 m-1088 0 q10 0 10 10 m1068 0 q0 -10 10 -10 m-1078 10 v78 m1068 0 v-78 m-1068 78 q0 10 10 10 m1048 0 q10 0 10 -10 m-1058 10 h10 m0 0 h1038 m40 -98 h10 m0 0 h152 m-182 0 h20 m162 0 h20 m-202 0 q10 0 10 10 m182 0 q0 -10 10 -10 m-192 10 v1 m182 0 v-1 m-182 1 q0 10 10 10 m162 0 q10 0 10 -10 m-152 10 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 m22 0 h4 m0 0 h4 m32 0 h4 m40 -21 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-182 10 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 m0 0 h4 m30 0 h4 m-1624 -21 h20 m1624 0 h20 m-1664 0 q10 0 10 10 m1644 0 q0 -10 10 -10 m-1654 10 v111 m1644 0 v-111 m-1644 111 q0 10 10 10 m1624 0 q10 0 10 -10 m-1634 10 h4 m70 0 h4 m0 0 h4 m12 0 h4 m60 0 h4 m32 0 h4 m0 0 h4 m22 0 h4 m0 0 h4 m32 0 h4 m0 0 h132 m-262 0 h20 m242 0 h20 m-282 0 q10 0 10 10 m262 0 q0 -10 10 -10 m-272 10 v36 m262 0 v-36 m-262 36 q0 10 10 10 m242 0 q10 0 10 -10 m-232 10 h4 m60 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 m46 0 h4 m0 0 h4 m32 0 h4 m-202 -21 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m202 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-202 0 h4 m8 0 h4 m0 0 h186 m-262 -28 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m282 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-282 0 h10 m0 0 h272 m-322 21 h20 m322 0 h20 m-362 0 q10 0 10 10 m342 0 q0 -10 10 -10 m-352 10 v78 m342 0 v-78 m-342 78 q0 10 10 10 m322 0 q10 0 10 -10 m-332 10 h10 m0 0 h312 m40 -98 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 m44 0 h4 m0 0 h4 m22 0 h4 m0 0 h4 m32 0 h4 m20 -21 h1002 m22 -131 l2 0 m2 0 l2 0 m2 0 l2 0 m-50 262 l2 0 m2 0 l2 0 m2 0 l2 0 m2 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="1687 284 1695 280 1695 288"/> + <polygon points="1687 284 1679 280 1679 288"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#jsonfunction" title="JsonFunction" shape="rect">JsonFunction</a></div> + <div>         ::= ( 'JSON_OBJECT' '(' ( 'KEY'? <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> ( ( ':' | ',' | 'VALUE' ) <a href="#expression" title="Expression" shape="rect">Expression</a> ( 'FORMAT' 'JSON' )? )? ( ',' 'KEY'? <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> ( ':' | ',' | 'VALUE' ) <a href="#expression" title="Expression" shape="rect">Expression</a> ( 'FORMAT' 'JSON' )? )* )? ( ( 'NULL' | 'ABSENT' ) 'ON' 'NULL' )? ( ( 'WITH' | 'WITHOUT' + ) 'UNIQUE' 'KEYS' )? | 'JSON_ARRAY' '(' ( 'NULL' 'ON' 'NULL' | <a href="#expression" title="Expression" shape="rect">Expression</a> ( 'FORMAT' 'JSON' )? ( ',' <a href="#expression" title="Expression" shape="rect">Expression</a> ( 'FORMAT' 'JSON' )? )* )* ( 'ABSENT' 'ON' 'NULL' )? ) ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + JsonAggregateFunction +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="1253" height="436"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="92" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">JSON_OBJECTAGG</text> + <rect x="143" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" y="13">(</text> + <rect x="183" y="22" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="34">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dt-zone" xlink:title="DT_ZONE" shape="rect"> + <rect x="255" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="13">DT_ZONE</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-double" xlink:title="S_DOUBLE" shape="rect"> + <rect x="255" y="29" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="41">S_DOUBLE</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="255" y="57" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="69">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-hex" xlink:title="S_HEX" shape="rect"> + <rect x="255" y="85" width="40" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="97">S_HEX</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="255" y="113" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="125">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="255" y="141" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="153">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="255" y="169" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="181">S_QUOTED_IDENTIFIER</text></a><rect x="423" y="1" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="13">:</text> + <rect x="423" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="427" y="41">VALUE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="507" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="511" y="13">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="507" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="511" y="41">S_QUOTED_IDENTIFIER</text></a><rect x="675" y="22" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="679" y="34">FORMAT</text> + <rect x="729" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="733" y="34">JSON</text> + <rect x="829" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="833" y="34">NULL</text> + <rect x="829" y="50" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="833" y="62">ABSENT</text> + <rect x="901" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="905" y="34">ON</text> + <rect x="931" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="935" y="34">NULL</text> + <rect x="1031" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1035" y="34">WITH</text> + <rect x="1031" y="50" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1035" y="62">WITHOUT</text> + <rect x="1113" y="22" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1117" y="34">UNIQUE</text> + <rect x="1165" y="22" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1169" y="34">KEYS</text> + <rect x="43" y="197" width="90" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="209">JSON_ARRAYAGG</text> + <rect x="141" y="197" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="145" y="209">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="161" y="197" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="209">Expression</text></a><rect x="249" y="218" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="253" y="230">FORMAT</text> + <rect x="303" y="218" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="307" y="230">JSON</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="383" y="218" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="387" y="230">OrderByElements</text></a><rect x="541" y="218" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="545" y="230">NULL</text> + <rect x="541" y="246" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="545" y="258">ABSENT</text> + <rect x="613" y="218" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="617" y="230">ON</text> + <rect x="643" y="218" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="647" y="230">NULL</text> + <rect x="498" y="288" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="502" y="300">)</text> + <rect x="538" y="309" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="542" y="321">FILTER</text> + <rect x="584" y="309" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="588" y="321">(</text> + <rect x="604" y="309" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="608" y="321">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="654" y="309" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="658" y="321">Expression</text></a><rect x="722" y="309" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="726" y="321">)</text> + <rect x="527" y="367" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="531" y="379">OVER</text> + <rect x="569" y="367" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="573" y="379">(</text> + <rect x="609" y="388" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="613" y="400">PARTITION</text> + <rect x="675" y="388" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="679" y="400">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="723" y="388" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="727" y="400">ComplexExpressionList</text></a><rect x="723" y="416" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="727" y="428">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="743" y="416" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="747" y="428">ComplexExpressionList</text></a><rect x="865" y="416" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="869" y="428">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="945" y="388" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="949" y="400">OrderByElements</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#windowelement" xlink:title="WindowElement" shape="rect"> + <rect x="1083" y="388" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="1087" y="400">WindowElement</text></a><rect x="1197" y="367" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1201" y="379">)</text> + <path class="line" d="m17 10 h2 m20 0 h4 m92 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h22 m-52 0 h20 m32 0 h20 m-72 0 q10 0 10 10 m52 0 q0 -10 10 -10 m-62 10 v1 m52 0 v-1 m-52 1 q0 10 10 10 m32 0 q10 0 10 -10 m-42 10 h4 m24 0 h4 m40 -21 h4 m54 0 h4 m0 0 h66 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 m60 0 h4 m0 0 h60 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 m48 0 h4 m0 0 h72 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 m40 0 h4 m0 0 h80 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 m90 0 h4 m0 0 h30 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 m74 0 h4 m0 0 h46 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 m120 0 h4 m40 -168 h4 m10 0 h4 m0 0 h26 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 m40 -28 h4 m74 0 h4 m0 0 h46 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 m40 -28 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 m46 0 h4 m0 0 h4 m32 0 h4 m40 -21 h10 m0 0 h152 m-182 0 h20 m162 0 h20 m-202 0 q10 0 10 10 m182 0 q0 -10 10 -10 m-192 10 v1 m182 0 v-1 m-182 1 q0 10 10 10 m162 0 q10 0 10 -10 m-152 10 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 m22 0 h4 m0 0 h4 m32 0 h4 m40 -21 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-182 10 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 m0 0 h4 m30 0 h4 m-1180 -21 h20 m1180 0 h20 m-1220 0 q10 0 10 10 m1200 0 q0 -10 10 -10 m-1210 10 v176 m1200 0 v-176 m-1200 176 q0 10 10 10 m1180 0 q10 0 10 -10 m-1190 10 h4 m90 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m60 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 m46 0 h4 m0 0 h4 m32 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 h152 m-182 0 h20 m162 0 h20 m-202 0 q10 0 10 10 m182 0 q0 -10 10 -10 m-192 10 v1 m182 0 v-1 m-182 1 q0 10 10 10 m162 0 q10 0 10 -10 m-152 10 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 m22 0 h4 m0 0 h4 m32 0 h4 m20 -21 h520 m22 -196 l2 0 m2 0 l2 0 m2 0 l2 0 m-769 287 l2 0 m2 0 l2 0 m2 0 l2 0 m2 0 h4 m12 0 h4 m20 0 h10 m0 0 h194 m-224 0 h20 m204 0 h20 m-244 0 q10 0 10 10 m224 0 q0 -10 10 -10 m-234 10 v1 m224 0 v-1 m-224 1 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m38 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-279 58 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h680 m-710 0 h20 m690 0 h20 m-730 0 q10 0 10 10 m710 0 q0 -10 10 -10 m-720 10 v1 m710 0 v-1 m-710 1 q0 10 10 10 m690 0 q10 0 10 -10 m-700 10 h4 m34 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h286 m-316 0 h20 m296 0 h20 m-336 0 q10 0 10 10 m316 0 q0 -10 10 -10 m-326 10 v1 m316 0 v-1 m-316 1 q0 10 10 10 m296 0 q10 0 10 -10 m-306 10 h4 m58 0 h4 m0 0 h4 m20 0 h4 m20 0 h4 m114 0 h4 m0 0 h40 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 m12 0 h4 m0 0 h4 m114 0 h4 m0 0 h4 m12 0 h4 m60 -49 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 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 m12 0 h4 m23 -21 h-3"/> + <polygon points="1243 355 1251 351 1251 359"/> + <polygon points="1243 355 1235 351 1235 359"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#jsonaggregatefunction" title="JsonAggregateFunction" shape="rect">JsonAggregateFunction</a></div> + <div>         ::= ( 'JSON_OBJECTAGG' '(' 'KEY'? ( <a href="#dt-zone" title="DT_ZONE" shape="rect">DT_ZONE</a> | <a href="#s-double" title="S_DOUBLE" shape="rect">S_DOUBLE</a> | <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#s-hex" title="S_HEX" shape="rect">S_HEX</a> | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) ( ':' | 'VALUE' ) ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) ( 'FORMAT' 'JSON' )? ( ( 'NULL' | 'ABSENT' ) 'ON' 'NULL' )? ( ( 'WITH' | 'WITHOUT' + ) 'UNIQUE' 'KEYS' )? | 'JSON_ARRAYAGG' '(' <a href="#expression" title="Expression" shape="rect">Expression</a> ( 'FORMAT' 'JSON' )? <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? ( ( 'NULL' | 'ABSENT' ) 'ON' 'NULL' )? ) ')' ( 'FILTER' '(' 'WHERE' <a href="#expression" title="Expression" shape="rect">Expression</a> ')' )? ( 'OVER' '(' ( 'PARTITION' 'BY' ( <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> | '(' <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> ')' ) )? <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? <a href="#windowelement" title="WindowElement" shape="rect">WindowElement</a>? ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + IntervalExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="453" height="189"> + <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="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="34">-</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="161" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="13">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-double" xlink:title="S_DOUBLE" shape="rect"> + <rect x="161" y="29" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="41">S_DOUBLE</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="161" y="57" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="69">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcparameter" xlink:title="SimpleJdbcParameter" shape="rect"> + <rect x="161" y="85" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="97">SimpleJdbcParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#jdbcnamedparameter" xlink:title="JdbcNamedParameter" shape="rect"> + <rect x="161" y="113" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="125">JdbcNamedParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#function" xlink:title="Function" shape="rect"> + <rect x="161" y="141" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="153">Function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="161" y="169" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="181">Column</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="321" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="325" y="34">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-date-literal" xlink:title="K_DATE_LITERAL" shape="rect"> + <rect x="321" y="50" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="325" y="62">K_DATE_LITERAL</text></a><path class="line" d="m17 10 h2 m0 0 h4 m52 0 h4 m20 0 h10 m0 0 h8 m-38 0 h20 m18 0 h20 m-58 0 q10 0 10 10 m38 0 q0 -10 10 -10 m-48 10 v1 m38 0 v-1 m-38 1 q0 10 10 10 m18 0 q10 0 10 -10 m-28 10 h4 m10 0 h4 m40 -21 h4 m48 0 h4 m0 0 h64 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 m60 0 h4 m0 0 h52 m-130 -10 v20 m140 0 v-20 m-140 20 v8 m140 0 v-8 m-140 8 q0 10 10 10 m120 0 q10 0 10 -10 m-130 10 h4 m90 0 h4 m0 0 h22 m-130 -10 v20 m140 0 v-20 m-140 20 v8 m140 0 v-8 m-140 8 q0 10 10 10 m120 0 q10 0 10 -10 m-130 10 h4 m108 0 h4 m0 0 h4 m-130 -10 v20 m140 0 v-20 m-140 20 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 m-130 -10 v20 m140 0 v-20 m-140 20 v8 m140 0 v-8 m-140 8 q0 10 10 10 m120 0 q10 0 10 -10 m-130 10 h4 m48 0 h4 m0 0 h64 m-130 -10 v20 m140 0 v-20 m-140 20 v8 m140 0 v-8 m-140 8 q0 10 10 10 m120 0 q10 0 10 -10 m-130 10 h4 m46 0 h4 m0 0 h66 m40 -168 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 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 m88 0 h4 m23 -49 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="#intervalexpression" title="IntervalExpression" shape="rect">IntervalExpression</a></div> + <div>         ::= 'INTERVAL' '-'? ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#s-double" title="S_DOUBLE" shape="rect">S_DOUBLE</a> | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a> | <a href="#jdbcnamedparameter" title="JdbcNamedParameter" shape="rect">JdbcNamedParameter</a> | <a href="#function" title="Function" shape="rect">Function</a> | <a href="#column" title="Column" shape="rect">Column</a> ) ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#k-date-literal" title="K_DATE_LITERAL" shape="rect">K_DATE_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="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + IntervalExpressionWithoutInterval +====================================================================================================================== + + +.. 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="#k-date-literal" xlink:title="K_DATE_LITERAL" shape="rect"> + <rect x="23" y="1" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">K_DATE_LITERAL</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="#intervalexpressionwithoutinterval" title="IntervalExpressionWithoutInterval" shape="rect">IntervalExpressionWithoutInterval</a></div> + <div>         ::= <a href="#k-date-literal" title="K_DATE_LITERAL" shape="rect">K_DATE_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="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + KeepExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="379" 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="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="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="81" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="85" y="13">S_IDENTIFIER</text></a><rect x="183" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="13">FIRST</text> + <rect x="183" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="41">LAST</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="245" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="249" y="13">OrderByElements</text></a><rect x="343" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="347" 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 m74 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 m20 -28 h4 m90 0 h4 m0 0 h4 m12 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="#keepexpression" title="KeepExpression" shape="rect">KeepExpression</a></div> + <div>         ::= 'KEEP' '(' <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> ( 'FIRST' | 'LAST' ) <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#internalfunction" title="internalfunction">internalfunction</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + windowFun +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="623" height="210"> + <polygon points="11 10 3 6 3 14"/> + <polygon points="19 10 11 6 11 14"/> + <rect x="65" y="22" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="34">IGNORE</text> + <rect x="117" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="34">NULLS</text> + <rect x="183" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="13">OVER</text> + <rect x="45" y="50" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="49" y="62">WITHIN</text> + <rect x="97" y="50" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="62">GROUP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="37" y="92" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="41" y="104">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#windowdefinition" xlink:title="windowDefinition" shape="rect"> + <rect x="37" y="120" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="41" y="132">windowDefinition</text></a><rect x="149" y="141" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="153">OVER</text> + <rect x="191" y="141" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="153">(</text> + <rect x="231" y="162" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="174">PARTITION</text> + <rect x="297" y="162" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="301" y="174">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="345" y="162" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="349" y="174">ComplexExpressionList</text></a><rect x="345" y="190" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="349" y="202">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="365" y="190" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="369" y="202">ComplexExpressionList</text></a><rect x="487" y="190" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="491" y="202">)</text> + <rect x="547" y="141" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="551" y="153">)</text> + <path class="line" d="m19 10 h2 m40 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 m44 0 h4 m0 0 h4 m38 0 h4 m20 -21 h4 m34 0 h4 m-200 0 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 m44 0 h4 m0 0 h4 m42 0 h4 m0 0 h78 m22 -49 l2 0 m2 0 l2 0 m2 0 l2 0 m-252 91 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m80 0 h4 m0 0 h462 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 m84 0 h4 m20 0 h10 m0 0 h408 m-438 0 h20 m418 0 h20 m-458 0 q10 0 10 10 m438 0 q0 -10 10 -10 m-448 10 v1 m438 0 v-1 m-438 1 q0 10 10 10 m418 0 q10 0 10 -10 m-428 10 h4 m34 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h286 m-316 0 h20 m296 0 h20 m-336 0 q10 0 10 10 m316 0 q0 -10 10 -10 m-326 10 v1 m316 0 v-1 m-316 1 q0 10 10 10 m296 0 q10 0 10 -10 m-306 10 h4 m58 0 h4 m0 0 h4 m20 0 h4 m20 0 h4 m114 0 h4 m0 0 h40 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 m12 0 h4 m0 0 h4 m114 0 h4 m0 0 h4 m12 0 h4 m40 -49 h4 m12 0 h4 m43 -49 h-3"/> + <polygon points="613 101 621 97 621 105"/> + <polygon points="613 101 605 97 605 105"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#windowfun" title="windowFun" shape="rect">windowFun</a></div> + <div>         ::= ( ( 'IGNORE' 'NULLS' )? 'OVER' | 'WITHIN' 'GROUP' ) ( <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> | <a href="#windowdefinition" title="windowDefinition" shape="rect">windowDefinition</a> ( 'OVER' '(' ( 'PARTITION' 'BY' ( <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> | '(' <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> ')' ) )? ')' )? )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#analyticexpression" title="analyticexpression">analyticexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + windowDefinition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="687" height="70"> + <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="63" y="22" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="34">PARTITION</text> + <rect x="129" y="22" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="133" y="34">BY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="177" y="22" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="34">ComplexExpressionList</text></a><rect x="177" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="62">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="197" y="50" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="201" y="62">ComplexExpressionList</text></a><rect x="319" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="323" y="62">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="399" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="403" y="34">OrderByElements</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#windowelement" xlink:title="WindowElement" shape="rect"> + <rect x="537" y="22" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="541" y="34">WindowElement</text></a><rect x="651" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="655" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h286 m-316 0 h20 m296 0 h20 m-336 0 q10 0 10 10 m316 0 q0 -10 10 -10 m-326 10 v1 m316 0 v-1 m-316 1 q0 10 10 10 m296 0 q10 0 10 -10 m-306 10 h4 m58 0 h4 m0 0 h4 m20 0 h4 m20 0 h4 m114 0 h4 m0 0 h40 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 m12 0 h4 m0 0 h4 m114 0 h4 m0 0 h4 m12 0 h4 m60 -49 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 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 m12 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="#windowdefinition" title="windowDefinition" shape="rect">windowDefinition</a></div> + <div>         ::= '(' ( 'PARTITION' 'BY' ( <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> | '(' <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> ')' ) )? <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? <a href="#windowelement" title="WindowElement" shape="rect">WindowElement</a>? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#windowfun" title="windowfun">windowfun</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AnalyticExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="393" height="70"> + <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">FILTER</text> + <rect x="89" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="13">(</text> + <rect x="109" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="113" y="13">WHERE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="159" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="163" y="13">Expression</text></a><rect x="227" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#windowfun" xlink:title="windowFun" shape="rect"> + <rect x="267" y="22" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="271" y="34">windowFun</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#windowfun" xlink:title="windowFun" shape="rect"> + <rect x="43" y="50" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="62">windowFun</text></a><path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m42 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 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 m-314 -21 h20 m314 0 h20 m-354 0 q10 0 10 10 m334 0 q0 -10 10 -10 m-344 10 v29 m334 0 v-29 m-334 29 q0 10 10 10 m314 0 q10 0 10 -10 m-324 10 h4 m62 0 h4 m0 0 h244 m23 -49 h-3"/> + <polygon points="383 10 391 6 391 14"/> + <polygon points="383 10 375 6 375 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#analyticexpression" title="AnalyticExpression" shape="rect">AnalyticExpression</a></div> + <div>         ::= 'FILTER' '(' 'WHERE' <a href="#expression" title="Expression" shape="rect">Expression</a> ')' <a href="#windowfun" title="windowFun" shape="rect">windowFun</a>?</div> + <div>           | <a href="#windowfun" title="windowFun" shape="rect">windowFun</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + WindowElement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="427" 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> + <rect x="131" y="22" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="34">BETWEEN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#windowoffset" xlink:title="WindowOffset" shape="rect"> + <rect x="191" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="195" y="34">WindowOffset</text></a><rect x="273" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="34">AND</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#windowoffset" xlink:title="WindowOffset" shape="rect"> + <rect x="329" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="333" y="13">WindowOffset</text></a><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 m40 -28 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 m52 0 h4 m0 0 h4 m74 0 h4 m0 0 h4 m28 0 h4 m20 -21 h4 m74 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="#windowelement" title="WindowElement" shape="rect">WindowElement</a></div> + <div>         ::= ( 'ROWS' | 'RANGE' ) ( 'BETWEEN' <a href="#windowoffset" title="WindowOffset" shape="rect">WindowOffset</a> 'AND' )? <a href="#windowoffset" title="WindowOffset" shape="rect">WindowOffset</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#windowdefinition" title="windowdefinition">windowdefinition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + WindowOffset +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="331" height="77"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">UNBOUNDED</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="63" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">SimpleExpression</text></a><rect x="201" y="1" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="13">PRECEDING</text> + <rect x="201" y="29" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="205" y="41">FOLLOWING</text> + <rect x="43" y="57" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">CURRENT</text> + <rect x="101" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="69">ROW</text> + <path class="line" d="m17 10 h2 m40 0 h4 m68 0 h4 m0 0 h22 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 m40 -28 h4 m60 0 h4 m0 0 h6 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-252 -28 h20 m252 0 h20 m-292 0 q10 0 10 10 m272 0 q0 -10 10 -10 m-282 10 v36 m272 0 v-36 m-272 36 q0 10 10 10 m252 0 q10 0 10 -10 m-262 10 h4 m50 0 h4 m0 0 h4 m32 0 h4 m0 0 h154 m23 -56 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="#windowoffset" title="WindowOffset" shape="rect">WindowOffset</a></div> + <div>         ::= ( 'UNBOUNDED' | <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ) ( 'PRECEDING' | 'FOLLOWING' )</div> + <div>           | 'CURRENT' 'ROW'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#windowelement" title="windowelement">windowelement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ExtractExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="415" height="49"> + <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="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="119" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="13">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="119" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="41">S_CHAR_LITERAL</text></a><rect x="237" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="241" y="13">FROM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="281" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="285" y="13">SimpleExpression</text></a><rect x="379" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="383" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m80 0 h4 m0 0 h10 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 m20 -28 h4 m36 0 h4 m0 0 h4 m90 0 h4 m0 0 h4 m12 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="#extractexpression" title="ExtractExpression" shape="rect">ExtractExpression</a></div> + <div>         ::= 'EXTRACT' '(' ( <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> ) 'FROM' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CastExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="375" 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">CAST</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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="83" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="13">SimpleExpression</text></a><rect x="181" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="185" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rowconstructor" xlink:title="RowConstructor" shape="rect"> + <rect x="229" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="233" y="13">RowConstructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="229" y="29" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="233" y="41">ColDataType</text></a><rect x="339" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="343" 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 m90 0 h4 m0 0 h4 m20 0 h4 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 m68 0 h4 m0 0 h14 m20 -28 h4 m12 0 h4 m3 0 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="#castexpression" title="CastExpression" shape="rect">CastExpression</a></div> + <div>         ::= 'CAST' '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> 'AS' ( <a href="#rowconstructor" title="RowConstructor" shape="rect">RowConstructor</a> | <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> ) ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + TryCastExpression +====================================================================================================================== + + +.. 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="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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="105" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="109" y="13">SimpleExpression</text></a><rect x="203" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="207" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rowconstructor" xlink:title="RowConstructor" shape="rect"> + <rect x="251" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="255" y="13">RowConstructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="251" y="29" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="255" y="41">ColDataType</text></a><rect x="361" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" 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 m90 0 h4 m0 0 h4 m20 0 h4 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 m68 0 h4 m0 0 h14 m20 -28 h4 m12 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="#trycastexpression" title="TryCastExpression" shape="rect">TryCastExpression</a></div> + <div>         ::= 'TRY_CAST' '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> 'AS' ( <a href="#rowconstructor" title="RowConstructor" shape="rect">RowConstructor</a> | <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> ) ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SafeCastExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="403" height="49"> + <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">SAFE_CAST</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="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="111" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">SimpleExpression</text></a><rect x="209" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="213" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rowconstructor" xlink:title="RowConstructor" shape="rect"> + <rect x="257" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="261" y="13">RowConstructor</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="257" y="29" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="261" y="41">ColDataType</text></a><rect x="367" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="371" 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 m90 0 h4 m0 0 h4 m20 0 h4 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 m68 0 h4 m0 0 h14 m20 -28 h4 m12 0 h4 m3 0 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="#safecastexpression" title="SafeCastExpression" shape="rect">SafeCastExpression</a></div> + <div>         ::= 'SAFE_CAST' '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> 'AS' ( <a href="#rowconstructor" title="RowConstructor" shape="rect">RowConstructor</a> | <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> ) ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CaseWhenExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="761" height="103"> + <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="#expression" xlink:title="Expression" shape="rect"> + <rect x="83" y="34" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="46">Expression</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whenthensearchcondition" xlink:title="WhenThenSearchCondition" shape="rect"> + <rect x="191" y="13" width="136" height="18" class="nonterminal"/> + <text class="nonterminal" x="195" y="25">WhenThenSearchCondition</text></a><rect x="375" y="34" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="46">ELSE</text> + <rect x="451" y="55" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="455" y="67">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#casewhenexpression" xlink:title="CaseWhenExpression" shape="rect"> + <rect x="491" y="34" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="495" y="46">CaseWhenExpression</text></a><rect x="631" y="55" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="635" y="67">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="431" y="83" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="435" y="95">Expression</text></a><rect x="711" y="13" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="715" y="25">END</text> + <path class="line" d="m17 22 h2 m0 0 h4 m32 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 m40 -21 h4 m136 0 h4 m-164 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m144 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-144 0 h10 m0 0 h134 m40 21 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 m28 0 h4 m40 0 h10 m0 0 h10 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v1 m40 0 v-1 m-40 1 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m20 -21 h4 m112 0 h4 m20 0 h10 m0 0 h10 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v1 m40 0 v-1 m-40 1 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m-240 -21 h20 m240 0 h20 m-280 0 q10 0 10 10 m260 0 q0 -10 10 -10 m-270 10 v29 m260 0 v-29 m-260 29 q0 10 10 10 m240 0 q10 0 10 -10 m-250 10 h4 m60 0 h4 m0 0 h172 m40 -70 h4 m26 0 h4 m3 0 h-3"/> + <polygon points="751 22 759 18 759 26"/> + <polygon points="751 22 743 18 743 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="#casewhenexpression" title="CaseWhenExpression" shape="rect">CaseWhenExpression</a></div> + <div>         ::= 'CASE' <a href="#expression" title="Expression" shape="rect">Expression</a>? <a href="#whenthensearchcondition" title="WhenThenSearchCondition" shape="rect">WhenThenSearchCondition</a>+ ( 'ELSE' ( '('? <a href="#casewhenexpression" title="CaseWhenExpression" shape="rect">CaseWhenExpression</a> ')'? | <a href="#expression" title="Expression" shape="rect">Expression</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="#casewhenexpression" title="casewhenexpression">casewhenexpression</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#whenthensearchcondition" title="whenthensearchcondition">whenthensearchcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + WhenThenSearchCondition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="473" height="70"> + <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="#expression" xlink:title="Expression" shape="rect"> + <rect x="69" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="73" y="13">Expression</text></a><rect x="137" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="13">THEN</text> + <rect x="217" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#casewhenexpression" xlink:title="CaseWhenExpression" shape="rect"> + <rect x="257" y="1" width="112" height="18" class="nonterminal"/> + <text class="nonterminal" x="261" y="13">CaseWhenExpression</text></a><rect x="397" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="401" y="34">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="197" y="50" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="201" y="62">Expression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m38 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m32 0 h4 m40 0 h10 m0 0 h10 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v1 m40 0 v-1 m-40 1 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m20 -21 h4 m112 0 h4 m20 0 h10 m0 0 h10 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v1 m40 0 v-1 m-40 1 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m-240 -21 h20 m240 0 h20 m-280 0 q10 0 10 10 m260 0 q0 -10 10 -10 m-270 10 v29 m260 0 v-29 m-260 29 q0 10 10 10 m240 0 q10 0 10 -10 m-250 10 h4 m60 0 h4 m0 0 h172 m23 -49 h-3"/> + <polygon points="463 10 471 6 471 14"/> + <polygon points="463 10 455 6 455 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#whenthensearchcondition" title="WhenThenSearchCondition" shape="rect">WhenThenSearchCondition</a></div> + <div>         ::= 'WHEN' <a href="#expression" title="Expression" shape="rect">Expression</a> 'THEN' ( '('? <a href="#casewhenexpression" title="CaseWhenExpression" shape="rect">CaseWhenExpression</a> ')'? | <a href="#expression" title="Expression" shape="rect">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="#casewhenexpression" title="casewhenexpression">casewhenexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RowConstructor +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="293" height="70"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="43" y="50" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="62">ROW</text> + <rect x="103" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columndefinition" xlink:title="ColumnDefinition" shape="rect"> + <rect x="143" y="29" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="147" y="41">ColumnDefinition</text></a><rect x="143" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="147" 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 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 m32 0 h4 m20 -21 h4 m12 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 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="#rowconstructor" title="RowConstructor" shape="rect">RowConstructor</a></div> + <div>         ::= 'ROW'? '(' <a href="#columndefinition" title="ColumnDefinition" shape="rect">ColumnDefinition</a> ( ',' <a href="#columndefinition" title="ColumnDefinition" shape="rect">ColumnDefinition</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#castexpression" title="castexpression">castexpression</a></li><li><a href="#comparisonitem" title="comparisonitem">comparisonitem</a></li><li><a href="#safecastexpression" title="safecastexpression">safecastexpression</a></li><li><a href="#trycastexpression" title="trycastexpression">trycastexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + VariableExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="233" 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="#uservariable" xlink:title="UserVariable" shape="rect"> + <rect x="23" y="1" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">UserVariable</text></a><rect x="97" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="13">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="119" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="13">SimpleExpression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m66 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m90 0 h4 m3 0 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="#variableexpression" title="VariableExpression" shape="rect">VariableExpression</a></div> + <div>         ::= <a href="#uservariable" title="UserVariable" shape="rect">UserVariable</a> '=' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</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" title="execute">execute</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Execute +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="429" height="117"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="43" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">EXEC</text> + <rect x="43" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">EXECUTE</text> + <rect x="43" y="85" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">CALL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="119" y="29" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="123" y="41">RelObjectNameList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#variableexpression" xlink:title="VariableExpression" shape="rect"> + <rect x="261" y="29" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="265" y="41">VariableExpression</text></a><rect x="261" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="265" y="13">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="241" y="57" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="69">SimpleExpressionList</text></a><rect x="241" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="97">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="261" y="85" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="265" y="97">SimpleExpressionList</text></a><rect x="373" y="85" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="377" y="97">)</text> + <path class="line" d="m17 38 h2 m20 0 h4 m30 0 h4 m0 0 h18 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-66 -10 v20 m76 0 v-20 m-76 20 v8 m76 0 v-8 m-76 8 q0 10 10 10 m56 0 q10 0 10 -10 m-66 10 h4 m30 0 h4 m0 0 h18 m20 -56 h4 m94 0 h4 m40 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 m20 28 h10 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 m104 0 h4 m0 0 h40 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 m12 0 h4 m0 0 h4 m104 0 h4 m0 0 h4 m12 0 h4 m-162 -10 v20 m172 0 v-20 m-172 20 v1 m172 0 v-1 m-172 1 q0 10 10 10 m152 0 q10 0 10 -10 m-162 10 h10 m0 0 h142 m23 -77 h-3"/> + <polygon points="419 38 427 34 427 42"/> + <polygon points="419 38 411 34 411 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="#execute" title="Execute" shape="rect">Execute</a>  ::= ( 'EXEC' | 'EXECUTE' | 'CALL' ) <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a> ( <a href="#variableexpression" title="VariableExpression" shape="rect">VariableExpression</a> ( ',' <a href="#variableexpression" title="VariableExpression" shape="rect">VariableExpression</a> )* | <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a> | '(' <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + FullTextSearch +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="789" height="196"> + <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">MATCH</text> + <rect x="71" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="75" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="111" y="29" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="41">Column</text></a><rect x="111" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="13">,</text> + <rect x="185" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="41">)</text> + <rect x="205" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="209" y="41">AGAINST</text> + <rect x="261" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="265" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="301" y="29" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="305" y="41">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcparameter" xlink:title="SimpleJdbcParameter" shape="rect"> + <rect x="301" y="57" width="108" height="18" class="nonterminal"/> + <text class="nonterminal" x="305" y="69">SimpleJdbcParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simplejdbcnamedparameter" xlink:title="SimpleJdbcNamedParameter" shape="rect"> + <rect x="301" y="85" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="305" y="97">SimpleJdbcNamedParameter</text></a><rect x="491" y="50" width="142" height="18" class="terminal" rx="4"/> + <text class="terminal" x="495" y="62">IN NATURAL LANGUAGE MODE</text> + <rect x="491" y="78" width="260" height="18" class="terminal" rx="4"/> + <text class="terminal" x="495" y="90">IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION</text> + <rect x="491" y="106" width="94" height="18" class="terminal" rx="4"/> + <text class="terminal" x="495" y="118">IN BOOLEAN MODE</text> + <rect x="491" y="134" width="124" height="18" class="terminal" rx="4"/> + <text class="terminal" x="495" y="146">WITH QUERY EXPANSION</text> + <rect x="753" y="176" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="757" y="188">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m40 0 h4 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 m0 0 h4 m48 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m90 0 h4 m0 0 h52 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 m108 0 h4 m0 0 h34 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 m142 0 h4 m40 -56 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 m142 0 h4 m0 0 h118 m-278 -10 v20 m288 0 v-20 m-288 20 v8 m288 0 v-8 m-288 8 q0 10 10 10 m268 0 q10 0 10 -10 m-278 10 h4 m260 0 h4 m-278 -10 v20 m288 0 v-20 m-288 20 v8 m288 0 v-8 m-288 8 q0 10 10 10 m268 0 q10 0 10 -10 m-278 10 h4 m94 0 h4 m0 0 h166 m-278 -10 v20 m288 0 v-20 m-288 20 v8 m288 0 v-8 m-288 8 q0 10 10 10 m268 0 q10 0 10 -10 m-278 10 h4 m124 0 h4 m0 0 h136 m22 -105 l2 0 m2 0 l2 0 m2 0 l2 0 m-50 147 l2 0 m2 0 l2 0 m2 0 l2 0 m2 0 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="779 185 787 181 787 189"/> + <polygon points="779 185 771 181 771 189"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#fulltextsearch" title="FullTextSearch" shape="rect">FullTextSearch</a></div> + <div>         ::= 'MATCH' '(' <a href="#column" title="Column" shape="rect">Column</a> ( ',' <a href="#column" title="Column" shape="rect">Column</a> )* ')' 'AGAINST' '(' ( <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#simplejdbcparameter" title="SimpleJdbcParameter" shape="rect">SimpleJdbcParameter</a> | <a href="#simplejdbcnamedparameter" title="SimpleJdbcNamedParameter" shape="rect">SimpleJdbcNamedParameter</a> ) ( 'IN NATURAL LANGUAGE MODE' | 'IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION' + | 'IN BOOLEAN MODE' | 'WITH QUERY EXPANSION' )? ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Function +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="301" height="77"> + <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="65" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="69" y="13">FN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#internalfunction" xlink:title="InternalFunction" shape="rect"> + <rect x="93" y="1" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="13">InternalFunction</text></a><rect x="183" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="13">}</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#specialstringfunctionwithnamedparameters" xlink:title="SpecialStringFunctionWithNamedParameters" shape="rect"> + <rect x="43" y="29" width="214" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">SpecialStringFunctionWithNamedParameters</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#internalfunction" xlink:title="InternalFunction" shape="rect"> + <rect x="43" y="57" width="82" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">InternalFunction</text></a><path class="line" d="m17 10 h2 m20 0 h4 m14 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m82 0 h4 m0 0 h4 m14 0 h4 m0 0 h60 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 m214 0 h4 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 m82 0 h4 m0 0 h132 m23 -56 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="#function" title="Function" shape="rect">Function</a> ::= '{' 'FN' <a href="#internalfunction" title="InternalFunction" shape="rect">InternalFunction</a> '}'</div> + <div>           | <a href="#specialstringfunctionwithnamedparameters" title="SpecialStringFunctionWithNamedParameters" shape="rect">SpecialStringFunctionWithNamedParameters</a></div> + <div>           | <a href="#internalfunction" title="InternalFunction" shape="rect">InternalFunction</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#functionitem" title="functionitem">functionitem</a></li><li><a href="#inexpression" title="inexpression">inexpression</a></li><li><a href="#internalfunction" title="internalfunction">internalfunction</a></li><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#tablefunction" title="tablefunction">tablefunction</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SpecialStringFunctionWithNamedParameters +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="425" 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="#k-string-function-name" xlink:title="K_STRING_FUNCTION_NAME" shape="rect"> + <rect x="23" y="1" width="144" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">K_STRING_FUNCTION_NAME</text></a><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="#namedexpressionlist1" xlink:title="NamedExpressionList1" shape="rect"> + <rect x="215" y="1" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="13">NamedExpressionList1</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#namedexpressionlistexprfirst" xlink:title="NamedExpressionListExprFirst" shape="rect"> + <rect x="215" y="29" width="146" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="41">NamedExpressionListExprFirst</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="215" y="57" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="69">ComplexExpressionList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="215" y="85" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="219" y="97">SimpleExpressionList</text></a><rect x="389" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="393" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m144 0 h4 m0 0 h4 m12 0 h4 m20 0 h4 m114 0 h4 m0 0 h32 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 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 m114 0 h4 m0 0 h32 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 m104 0 h4 m0 0 h42 m20 -84 h4 m12 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="#specialstringfunctionwithnamedparameters" title="SpecialStringFunctionWithNamedParameters" shape="rect">SpecialStringFunctionWithNamedParameters</a></div> + <div>         ::= <a href="#k-string-function-name" title="K_STRING_FUNCTION_NAME" shape="rect">K_STRING_FUNCTION_NAME</a> '(' ( <a href="#namedexpressionlist1" title="NamedExpressionList1" shape="rect">NamedExpressionList1</a> | <a href="#namedexpressionlistexprfirst" title="NamedExpressionListExprFirst" shape="rect">NamedExpressionListExprFirst</a> | <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> | <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</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" title="function">function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + InternalFunction +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="791" height="240"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="23" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectNameList</text></a><rect x="125" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">(</text> + <rect x="185" y="43" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="55">DISTINCT</text> + <rect x="185" y="71" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="83">ALL</text> + <rect x="185" y="99" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="189" y="111">UNIQUE</text> + <rect x="283" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="287" y="34">*</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alltablecolumns" xlink:title="AllTableColumns" shape="rect"> + <rect x="283" y="50" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="287" y="62">AllTableColumns</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#complexexpressionlist" xlink:title="ComplexExpressionList" shape="rect"> + <rect x="303" y="78" width="114" height="18" class="nonterminal"/> + <text class="nonterminal" x="307" y="90">ComplexExpressionList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="303" y="106" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="307" y="118">SimpleExpressionList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="465" y="99" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="469" y="111">OrderByElements</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#subselect" xlink:title="SubSelect" shape="rect"> + <rect x="283" y="134" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="287" y="146">SubSelect</text></a><rect x="643" y="22" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="647" y="34">IGNORE</text> + <rect x="695" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="699" y="34">NULLS</text> + <rect x="761" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="765" y="13">)</text> + <rect x="479" y="192" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="483" y="204">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#function" xlink:title="Function" shape="rect"> + <rect x="515" y="192" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="519" y="204">Function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="515" y="220" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="519" y="232">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#keepexpression" xlink:title="KeepExpression" shape="rect"> + <rect x="663" y="192" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="667" y="204">KeepExpression</text></a><path class="line" d="m17 10 h2 m0 0 h4 m94 0 h4 m0 0 h4 m12 0 h4 m20 0 h10 m0 0 h428 m-458 0 h20 m438 0 h20 m-478 0 q10 0 10 10 m458 0 q0 -10 10 -10 m-468 10 v1 m458 0 v-1 m-458 1 q0 10 10 10 m438 0 q10 0 10 -10 m-428 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 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 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 m44 0 h4 m0 0 h6 m40 -77 h4 m14 0 h4 m0 0 h278 m-320 0 h20 m300 0 h20 m-340 0 q10 0 10 10 m320 0 q0 -10 10 -10 m-330 10 v8 m320 0 v-8 m-320 8 q0 10 10 10 m300 0 q10 0 10 -10 m-310 10 h4 m84 0 h4 m0 0 h208 m-310 -10 v20 m320 0 v-20 m-320 20 v8 m320 0 v-8 m-320 8 q0 10 10 10 m300 0 q10 0 10 -10 m-290 10 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 m104 0 h4 m0 0 h10 m40 -28 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-290 -31 v20 m320 0 v-20 m-320 20 v36 m320 0 v-36 m-320 36 q0 10 10 10 m300 0 q10 0 10 -10 m-310 10 h4 m54 0 h4 m0 0 h238 m60 -133 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 m44 0 h4 m0 0 h4 m38 0 h4 m20 -21 h4 m12 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-346 170 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 m8 0 h4 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 m60 -49 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="781 180 789 176 789 184"/> + <polygon points="781 180 773 176 773 184"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#internalfunction" title="InternalFunction" shape="rect">InternalFunction</a></div> + <div>         ::= <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a> '(' ( ( 'DISTINCT' | 'ALL' | 'UNIQUE' )? ( '*' | <a href="#alltablecolumns" title="AllTableColumns" shape="rect">AllTableColumns</a> | ( <a href="#complexexpressionlist" title="ComplexExpressionList" shape="rect">ComplexExpressionList</a> | <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a> ) <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? | <a href="#subselect" title="SubSelect" shape="rect">SubSelect</a> ) )? ( 'IGNORE' 'NULLS' )? ')' ( '.' ( <a href="#function" title="Function" shape="rect">Function</a> | <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ) )? <a href="#keepexpression" title="KeepExpression" shape="rect">KeepExpression</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" title="function">function</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + XMLSerializeExpr +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="691" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">XMLSERIALIZE</text> + <rect x="105" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="13">(</text> + <rect x="125" y="1" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="13">XMLAGG</text> + <rect x="179" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="13">(</text> + <rect x="199" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="13">XMLTEXT</text> + <rect x="255" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="259" y="13">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpression" xlink:title="SimpleExpression" shape="rect"> + <rect x="275" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="279" y="13">SimpleExpression</text></a><rect x="373" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="377" y="13">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="413" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="417" y="34">OrderByElements</text></a><rect x="531" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="535" y="13">)</text> + <rect x="551" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="555" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="579" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="583" y="13">ColDataType</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 m74 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m46 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m48 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 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 m20 -21 h4 m12 0 h4 m0 0 h4 m20 0 h4 m0 0 h4 m68 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="#xmlserializeexpr" title="XMLSerializeExpr" shape="rect">XMLSerializeExpr</a></div> + <div>         ::= 'XMLSERIALIZE' '(' 'XMLAGG' '(' 'XMLTEXT' '(' <a href="#simpleexpression" title="SimpleExpression" shape="rect">SimpleExpression</a> ')' <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? ')' 'AS' <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + MySQLGroupConcat +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="731" height="42"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="23" y="1" width="86" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">GROUP_CONCAT</text> + <rect x="117" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="13">(</text> + <rect x="157" y="22" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="34">DISTINCT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#simpleexpressionlist" xlink:title="SimpleExpressionList" shape="rect"> + <rect x="235" y="1" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="239" y="13">SimpleExpressionList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#orderbyelements" xlink:title="OrderByElements" shape="rect"> + <rect x="367" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="371" y="34">OrderByElements</text></a><rect x="505" y="22" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="509" y="34">SEPARATOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="577" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="581" y="34">S_CHAR_LITERAL</text></a><rect x="695" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="699" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m86 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 m104 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 m40 -21 h10 m0 0 h160 m-190 0 h20 m170 0 h20 m-210 0 q10 0 10 10 m190 0 q0 -10 10 -10 m-200 10 v1 m190 0 v-1 m-190 1 q0 10 10 10 m170 0 q10 0 10 -10 m-180 10 h4 m64 0 h4 m0 0 h4 m90 0 h4 m20 -21 h4 m12 0 h4 m3 0 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="#mysqlgroupconcat" title="MySQLGroupConcat" shape="rect">MySQLGroupConcat</a></div> + <div>         ::= 'GROUP_CONCAT' '(' 'DISTINCT'? <a href="#simpleexpressionlist" title="SimpleExpressionList" shape="rect">SimpleExpressionList</a> <a href="#orderbyelements" title="OrderByElements" shape="rect">OrderByElements</a>? ( 'SEPARATOR' <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_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="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ValueListExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="271" 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="#simpleexpressionlistatleasttwoitems" xlink:title="SimpleExpressionListAtLeastTwoItems" shape="rect"> + <rect x="43" y="1" width="184" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">SimpleExpressionListAtLeastTwoItems</text></a><rect x="235" y="1" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="13">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m0 0 h4 m184 0 h4 m0 0 h4 m12 0 h4 m3 0 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="#valuelistexpression" title="ValueListExpression" shape="rect">ValueListExpression</a></div> + <div>         ::= '(' <a href="#simpleexpressionlistatleasttwoitems" title="SimpleExpressionListAtLeastTwoItems" shape="rect">SimpleExpressionListAtLeastTwoItems</a> ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#comparisonitem" title="comparisonitem">comparisonitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + TableFunction +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="173" 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="#function" xlink:title="Function" shape="rect"> + <rect x="23" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">Function</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alias" xlink:title="Alias" shape="rect"> + <rect x="99" y="22" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="103" y="34">Alias</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m20 0 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="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="#tablefunction" title="TableFunction" shape="rect">TableFunction</a></div> + <div>         ::= <a href="#function" title="Function" shape="rect">Function</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="#fromitem" title="fromitem">fromitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SubSelect +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="201" 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="#withlist" xlink:title="WithList" shape="rect"> + <rect x="43" y="22" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="34">WithList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectbody" xlink:title="SelectBody" shape="rect"> + <rect x="117" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="13">SelectBody</text></a><path class="line" d="m17 10 h2 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 m60 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="#subselect" title="SubSelect" shape="rect">SubSelect</a></div> + <div>         ::= <a href="#withlist" title="WithList" shape="rect">WithList</a>? <a href="#selectbody" title="SelectBody" shape="rect">SelectBody</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#anycomparisonexpression" title="anycomparisonexpression">anycomparisonexpression</a></li><li><a href="#fromitem" title="fromitem">fromitem</a></li><li><a href="#inexpression" title="inexpression">inexpression</a></li><li><a href="#insertconflictaction" title="insertconflictaction">insertconflictaction</a></li><li><a href="#internalfunction" title="internalfunction">internalfunction</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#lateralsubselect" title="lateralsubselect">lateralsubselect</a></li><li><a href="#merge" title="merge">merge</a></li><li><a href="#plainlimit" title="plainlimit">plainlimit</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#update" title="update">update</a></li><li><a href="#withitem" title="withitem">withitem</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ColumnNamesWithParamsList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="345" height="70"> + <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="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="63" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="171" y="50" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="175" y="62">CreateParameter</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="309" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="313" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m20 0 h4 m80 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-226 -21 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m226 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-226 0 h4 m8 0 h4 m0 0 h210 m20 28 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="335 38 343 34 343 42"/> + <polygon points="335 38 327 34 327 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="#columnnameswithparamslist" title="ColumnNamesWithParamsList" shape="rect">ColumnNamesWithParamsList</a></div> + <div>         ::= '(' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>? ( ',' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>? )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createindex" title="createindex">createindex</a></li><li><a href="#createtable" title="createtable">createtable</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Index +====================================================================================================================== + + +.. 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="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="23" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectNameList</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="#index" title="Index" shape="rect">Index</a>    ::= <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createindex" title="createindex">createindex</a></li><li><a href="#purgestatement" title="purgestatement">purgestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CreateIndex +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="707" height="100"> + <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="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="93" y="22" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="34">CreateParameter</text></a><rect x="211" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="215" y="13">INDEX</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#index" xlink:title="Index" shape="rect"> + <rect x="255" y="1" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="13">Index</text></a><rect x="299" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="303" y="13">ON</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="329" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="333" y="13">Table</text></a><rect x="391" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="395" y="34">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="437" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="441" y="34">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnnameswithparamslist" xlink:title="ColumnNamesWithParamsList" shape="rect"> + <rect x="539" y="1" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="543" y="13">ColumnNamesWithParamsList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="573" y="64" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="577" y="76">CreateParameter</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 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 m20 -21 h4 m36 0 h4 m0 0 h4 m36 0 h4 m0 0 h4 m22 0 h4 m0 0 h4 m34 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 m38 0 h4 m0 0 h4 m74 0 h4 m20 -21 h4 m150 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-168 84 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 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="697 94 705 90 705 98"/> + <polygon points="697 94 689 90 689 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="#createindex" title="CreateIndex" shape="rect">CreateIndex</a></div> + <div>         ::= 'CREATE' <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>? 'INDEX' <a href="#index" title="Index" shape="rect">Index</a> 'ON' <a href="#table" title="Table" shape="rect">Table</a> ( 'USING' <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> )? <a href="#columnnameswithparamslist" title="ColumnNamesWithParamsList" shape="rect">ColumnNamesWithParamsList</a> <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ColumnDefinition +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="341" 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="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="23" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="111" y="22" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="34">ColDataType</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="207" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="13">CreateParameter</text></a><path class="line" d="m17 31 h2 m0 0 h4 m80 0 h4 m0 0 h4 m68 0 h4 m20 0 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="331 31 339 27 339 35"/> + <polygon points="331 31 323 27 323 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="#columndefinition" title="ColumnDefinition" shape="rect">ColumnDefinition</a></div> + <div>         ::= <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createtable" title="createtable">createtable</a></li><li><a href="#declare" title="declare">declare</a></li><li><a href="#rowconstructor" title="rowconstructor">rowconstructor</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CreateSchema +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="739" height="156"> + <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="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="13">SCHEMA</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="147" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="34">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="147" y="50" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="151" y="62">S_QUOTED_IDENTIFIER</text></a><rect x="315" y="22" width="86" height="18" class="terminal" rx="4"/> + <text class="terminal" x="319" y="34">AUTHORIZATION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="429" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="433" y="34">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="429" y="50" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="433" y="62">S_QUOTED_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pathspecification" xlink:title="PathSpecification" shape="rect"> + <rect x="617" y="22" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="621" y="34">PathSpecification</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createtable" xlink:title="CreateTable" shape="rect"> + <rect x="631" y="120" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="635" y="132">CreateTable</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createview" xlink:title="CreateView" shape="rect"> + <rect x="631" y="92" width="62" height="18" class="nonterminal"/> + <text class="nonterminal" x="635" y="104">CreateView</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m46 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 m74 0 h4 m0 0 h46 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 m120 0 h4 m40 -49 h10 m0 0 h252 m-282 0 h20 m262 0 h20 m-302 0 q10 0 10 10 m282 0 q0 -10 10 -10 m-292 10 v1 m282 0 v-1 m-282 1 q0 10 10 10 m262 0 q10 0 10 -10 m-272 10 h4 m86 0 h4 m20 0 h4 m74 0 h4 m0 0 h46 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 m60 -49 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 m22 -21 l2 0 m2 0 l2 0 m2 0 l2 0 m-142 140 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h62 m-92 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m72 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-72 0 h4 m64 0 h4 m-82 10 l0 -28 q0 -10 10 -10 m82 38 l0 -28 q0 -10 -10 -10 m-72 0 h4 m62 0 h4 m0 0 h2 m23 49 h-3"/> + <polygon points="729 150 737 146 737 154"/> + <polygon points="729 150 721 146 721 154"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#createschema" title="CreateSchema" shape="rect">CreateSchema</a></div> + <div>         ::= 'CREATE' 'SCHEMA' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> )? ( 'AUTHORIZATION' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) )? <a href="#pathspecification" title="PathSpecification" shape="rect">PathSpecification</a>? ( <a href="#createtable" title="CreateTable" shape="rect">CreateTable</a> | <a href="#createview" title="CreateView" shape="rect">CreateView</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PathSpecification +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="287" height="77"> + <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">PATH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="103" y="29" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="41">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="103" y="57" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="69">S_QUOTED_IDENTIFIER</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 m40 0 h4 m74 0 h4 m0 0 h46 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 m-168 -28 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m168 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-168 0 h4 m8 0 h4 m0 0 h152 m23 28 h-3"/> + <polygon points="277 38 285 34 285 42"/> + <polygon points="277 38 269 34 269 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="#pathspecification" title="PathSpecification" shape="rect">PathSpecification</a></div> + <div>         ::= 'PATH' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) ( ',' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_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="#createschema" title="createschema">createschema</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CreateTable +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="1503" height="752"> + <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="93" y="43" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="55">OR</text> + <rect x="123" y="43" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="127" y="55">REPLACE</text> + <rect x="219" y="43" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="55">UNLOGGED</text> + <rect x="327" y="43" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="331" y="55">GLOBAL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="419" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="423" y="13">CreateParameter</text></a><rect x="537" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="541" y="34">TABLE</text> + <rect x="601" y="43" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="605" y="55">IF</text> + <rect x="625" y="43" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="629" y="55">NOT</text> + <rect x="661" y="43" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="665" y="55">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="729" y="22" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="733" y="34">Table</text></a><rect x="37" y="118" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="41" y="130">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columndefinition" xlink:title="ColumnDefinition" shape="rect"> + <rect x="77" y="118" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="81" y="130">ColumnDefinition</text></a><rect x="211" y="118" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="215" y="130">,</text> + <rect x="267" y="118" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="271" y="130">INDEX</text> + <rect x="287" y="167" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="291" y="179">UNIQUE</text> + <rect x="379" y="167" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="383" y="179">FULLTEXT</text> + <rect x="457" y="146" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="461" y="158">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="509" y="118" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="513" y="130">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnnameswithparamslist" xlink:title="ColumnNamesWithParamsList" shape="rect"> + <rect x="597" y="118" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="601" y="130">ColumnNamesWithParamsList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="775" y="97" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="779" y="109">CreateParameter</text></a><rect x="267" y="237" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="271" y="249">CONSTRAINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="343" y="237" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="347" y="249">RelObjectName</text></a><rect x="491" y="216" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="495" y="228">PRIMARY</text> + <rect x="549" y="216" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="553" y="228">KEY</text> + <rect x="491" y="244" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="495" y="256">UNIQUE</text> + <rect x="563" y="265" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="567" y="277">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnnameswithparamslist" xlink:title="ColumnNamesWithParamsList" shape="rect"> + <rect x="635" y="216" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="639" y="228">ColumnNamesWithParamsList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="813" y="195" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="817" y="207">CreateParameter</text></a><rect x="471" y="293" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="475" y="305">FOREIGN</text> + <rect x="529" y="293" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="533" y="305">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnnameswithparamslist" xlink:title="ColumnNamesWithParamsList" shape="rect"> + <rect x="561" y="293" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="565" y="305">ColumnNamesWithParamsList</text></a><rect x="719" y="293" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="723" y="305">REFERENCES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="793" y="293" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="797" y="305">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="835" y="293" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="839" y="305">ColumnsNamesList</text></a><rect x="961" y="314" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="965" y="326">ON</text> + <rect x="1011" y="314" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1015" y="326">DELETE</text> + <rect x="1011" y="342" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1015" y="354">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#action" xlink:title="Action" shape="rect"> + <rect x="1083" y="314" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="1087" y="326">Action</text></a><rect x="1167" y="314" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1171" y="326">ON</text> + <rect x="1217" y="314" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1221" y="326">DELETE</text> + <rect x="1217" y="342" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1221" y="354">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#action" xlink:title="Action" shape="rect"> + <rect x="1289" y="314" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="1293" y="326">Action</text></a><rect x="471" y="384" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="475" y="396">CHECK</text> + <rect x="557" y="384" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="561" y="396">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="577" y="384" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="581" y="396">Expression</text></a><rect x="645" y="384" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="649" y="396">)</text> + <rect x="247" y="438" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="251" y="450">EXCLUDE</text> + <rect x="303" y="438" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="307" y="450">WHERE</text> + <rect x="393" y="438" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="397" y="450">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="413" y="438" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="417" y="450">Expression</text></a><rect x="481" y="438" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="485" y="450">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columndefinition" xlink:title="ColumnDefinition" shape="rect"> + <rect x="247" y="480" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="251" y="492">ColumnDefinition</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="97" y="550" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="101" y="562">RelObjectName</text></a><rect x="97" y="522" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="101" y="534">,</text> + <rect x="1453" y="118" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1457" y="130">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="452" y="604" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="456" y="616">CreateParameter</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#rowmovement" xlink:title="RowMovement" shape="rect"> + <rect x="590" y="646" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="594" y="658">RowMovement</text></a><rect x="718" y="646" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="722" y="658">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectwithwithitems" xlink:title="SelectWithWithItems" shape="rect"> + <rect x="746" y="646" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="750" y="658">SelectWithWithItems</text></a><rect x="900" y="646" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="904" y="658">LIKE</text> + <rect x="956" y="646" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="960" y="658">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="976" y="646" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="980" y="658">Table</text></a><rect x="1018" y="646" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1022" y="658">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="956" y="674" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="960" y="686">Table</text></a><rect x="1339" y="732" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1343" y="744">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#spannerinterleavein" xlink:title="SpannerInterleaveIn" shape="rect"> + <rect x="1355" y="732" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="1359" y="744">SpannerInterleaveIn</text></a><path class="line" d="m17 31 h2 m0 0 h4 m42 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 m22 0 h4 m0 0 h4 m48 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 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 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 m20 21 h4 m36 0 h4 m20 0 h10 m0 0 h98 m-128 0 h20 m108 0 h20 m-148 0 q10 0 10 10 m128 0 q0 -10 10 -10 m-138 10 v1 m128 0 v-1 m-128 1 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m16 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m40 0 h4 m20 -21 h4 m34 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-778 96 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m12 0 h4 m20 0 h4 m86 0 h4 m40 0 h4 m8 0 h4 m40 0 h4 m36 0 h4 m0 0 h178 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-212 10 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 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 m24 0 h4 m20 -28 h4 m80 0 h4 m0 0 h4 m150 0 h4 m20 0 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 m20 21 h480 m-1146 0 h20 m1126 0 h20 m-1166 0 q10 0 10 10 m1146 0 q0 -10 10 -10 m-1156 10 v78 m1146 0 v-78 m-1146 78 q0 10 10 10 m1126 0 q10 0 10 -10 m-1116 10 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 m68 0 h4 m0 0 h4 m80 0 h4 m60 -21 h4 m50 0 h4 m0 0 h4 m24 0 h4 m0 0 h34 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 m44 0 h4 m20 0 h10 m0 0 h22 m-52 0 h20 m32 0 h20 m-72 0 q10 0 10 10 m52 0 q0 -10 10 -10 m-62 10 v1 m52 0 v-1 m-52 1 q0 10 10 10 m32 0 q10 0 10 -10 m-42 10 h4 m24 0 h4 m40 -49 h4 m150 0 h4 m20 0 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 m20 21 h422 m-902 0 h20 m882 0 h20 m-922 0 q10 0 10 10 m902 0 q0 -10 10 -10 m-912 10 v57 m902 0 v-57 m-902 57 q0 10 10 10 m882 0 q10 0 10 -10 m-892 10 h4 m50 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m150 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m98 0 h4 m20 0 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 m22 0 h4 m20 0 h4 m40 0 h4 m0 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 m44 0 h4 m20 -28 h4 m36 0 h4 m40 -21 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 m22 0 h4 m20 0 h4 m40 0 h4 m0 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 m44 0 h4 m20 -28 h4 m36 0 h4 m-872 -31 v20 m902 0 v-20 m-902 20 v71 m902 0 v-71 m-902 71 q0 10 10 10 m882 0 q10 0 10 -10 m-892 10 h4 m38 0 h4 m40 0 h4 m12 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m-128 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m108 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-108 0 h10 m0 0 h98 m-148 21 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 h10 m0 0 h138 m20 -21 h648 m-1116 -178 v20 m1146 0 v-20 m-1146 20 v202 m1146 0 v-202 m-1146 202 q0 10 10 10 m1126 0 q10 0 10 -10 m-1136 10 h4 m48 0 h4 m0 0 h4 m42 0 h4 m40 0 h4 m12 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m-128 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m108 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-108 0 h10 m0 0 h98 m-148 21 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 h10 m0 0 h138 m20 -21 h832 m-1136 -10 v20 m1146 0 v-20 m-1146 20 v22 m1146 0 v-22 m-1146 22 q0 10 10 10 m1126 0 q10 0 10 -10 m-1136 10 h4 m86 0 h4 m0 0 h1032 m-1182 -362 l20 0 m-1 0 q-9 0 -9 -10 l0 -22 q0 -10 10 -10 m1182 42 l20 0 m-20 0 q10 0 10 -10 l0 -22 q0 -10 -10 -10 m-1182 0 h10 m0 0 h1172 m-1222 42 h20 m1222 0 h20 m-1262 0 q10 0 10 10 m1242 0 q0 -10 10 -10 m-1252 10 v363 m1242 0 v-363 m-1242 363 q0 10 10 10 m1222 0 q10 0 10 -10 m-1232 10 h10 m0 0 h1212 m-1356 -383 h20 m1356 0 h20 m-1396 0 q10 0 10 10 m1376 0 q0 -10 10 -10 m-1386 10 v412 m1376 0 v-412 m-1376 412 q0 10 10 10 m1356 0 q10 0 10 -10 m-1346 10 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 m20 28 h1228 m20 -432 h4 m12 0 h4 m-1456 0 h20 m1436 0 h20 m-1476 0 q10 0 10 10 m1456 0 q0 -10 10 -10 m-1466 10 v433 m1456 0 v-433 m-1456 433 q0 10 10 10 m1436 0 q10 0 10 -10 m-1446 10 h10 m0 0 h1426 m22 -453 l2 0 m2 0 l2 0 m2 0 l2 0 m-1085 507 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 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 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 m40 -21 h10 m0 0 h132 m-162 0 h20 m142 0 h20 m-182 0 q10 0 10 10 m162 0 q0 -10 10 -10 m-172 10 v1 m162 0 v-1 m-162 1 q0 10 10 10 m142 0 q10 0 10 -10 m-152 10 h4 m20 0 h4 m0 0 h4 m106 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 m28 0 h4 m20 0 h4 m12 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m12 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 m34 0 h4 m0 0 h40 m42 -49 l2 0 m2 0 l2 0 m2 0 l2 0 m217 86 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 m8 0 h4 m0 0 h4 m104 0 h4 m23 -21 h-3"/> + <polygon points="1493 720 1501 716 1501 724"/> + <polygon points="1493 720 1485 716 1485 724"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#createtable" title="CreateTable" shape="rect">CreateTable</a></div> + <div>         ::= 'CREATE' ( 'OR' 'REPLACE' )? 'UNLOGGED'? 'GLOBAL'? <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>* 'TABLE' ( 'IF' 'NOT' 'EXISTS' )? <a href="#table" title="Table" shape="rect">Table</a> ( '(' ( <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ( ',' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> )* | <a href="#columndefinition" title="ColumnDefinition" shape="rect">ColumnDefinition</a> ( ',' ( ( 'INDEX' | 'UNIQUE'? 'FULLTEXT'? 'KEY' ) <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> <a href="#columnnameswithparamslist" title="ColumnNamesWithParamsList" shape="rect">ColumnNamesWithParamsList</a> <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>* | ( 'CONSTRAINT' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> )? ( ( 'PRIMARY' 'KEY' | 'UNIQUE' 'KEY'? ) <a href="#columnnameswithparamslist" title="ColumnNamesWithParamsList" shape="rect">ColumnNamesWithParamsList</a> <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>* | 'FOREIGN' 'KEY' <a href="#columnnameswithparamslist" title="ColumnNamesWithParamsList" shape="rect">ColumnNamesWithParamsList</a> 'REFERENCES' <a href="#table" title="Table" shape="rect">Table</a> <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> ( 'ON' ( 'DELETE' | 'UPDATE' ) <a href="#action" title="Action" shape="rect">Action</a> )? ( 'ON' ( 'DELETE' | 'UPDATE' ) <a href="#action" title="Action" shape="rect">Action</a> )? | 'CHECK' ( '(' <a href="#expression" title="Expression" shape="rect">Expression</a> ')' )* ) | 'EXCLUDE' 'WHERE' ( '(' <a href="#expression" title="Expression" shape="rect">Expression</a> ')' )* | <a href="#columndefinition" title="ColumnDefinition" shape="rect">ColumnDefinition</a> ) )* ) ')' )? <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>* <a href="#rowmovement" title="RowMovement" shape="rect">RowMovement</a>? ( 'AS' <a href="#selectwithwithitems" title="SelectWithWithItems" shape="rect">SelectWithWithItems</a> )? ( 'LIKE' ( '(' <a href="#table" title="Table" shape="rect">Table</a> ')' | <a href="#table" title="Table" shape="rect">Table</a> ) )? ( ',' <a href="#spannerinterleavein" title="SpannerInterleaveIn" shape="rect">SpannerInterleaveIn</a> )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createschema" title="createschema">createschema</a></li><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SpannerInterleaveIn +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="469" height="70"> + <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">INTERLEAVE</text> + <rect x="93" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="13">IN</text> + <rect x="119" y="1" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">PARENT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="171" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="175" y="13">Table</text></a><rect x="233" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="237" y="34">ON</text> + <rect x="263" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="34">DELETE</text> + <rect x="331" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="335" y="34">NO</text> + <rect x="361" y="22" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" y="34">ACTION</text> + <rect x="331" y="50" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="335" y="62">CASCADE</text> + <path class="line" d="m17 10 h2 m0 0 h4 m62 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m44 0 h4 m0 0 h4 m34 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 m22 0 h4 m0 0 h4 m40 0 h4 m20 0 h4 m22 0 h4 m0 0 h4 m44 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 m50 0 h4 m0 0 h24 m43 -49 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="#spannerinterleavein" title="SpannerInterleaveIn" shape="rect">SpannerInterleaveIn</a></div> + <div>         ::= 'INTERLEAVE' 'IN' 'PARENT' <a href="#table" title="Table" shape="rect">Table</a> ( 'ON' 'DELETE' ( 'NO' 'ACTION' | 'CASCADE' ) )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createtable" title="createtable">createtable</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ColDataType +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="637" height="899"> + <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="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="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="111" y="1" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="13">ColDataType</text></a><rect x="187" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="191" y="13">></text> + <rect x="63" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">BYTES</text> + <rect x="63" y="57" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="69">STRING</text> + <rect x="63" y="85" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="97">JSON</text> + <rect x="133" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="137" y="41">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="173" y="29" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="177" y="41">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="173" y="57" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="177" y="69">S_IDENTIFIER</text></a><rect x="275" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="279" y="41">)</text> + <rect x="63" y="113" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="125">CHARACTER</text> + <rect x="63" y="141" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="153">BIT</text> + <rect x="173" y="134" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="146">VARYING</text> + <rect x="43" y="169" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">DOUBLE</text> + <rect x="117" y="190" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="202">PRECISION</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="63" y="218" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="230">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="63" y="246" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="258">S_QUOTED_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-datetimeliteral" xlink:title="K_DATETIMELITERAL" shape="rect"> + <rect x="63" y="274" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="286">K_DATETIMELITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-date-literal" xlink:title="K_DATE_LITERAL" shape="rect"> + <rect x="63" y="302" width="88" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="314">K_DATE_LITERAL</text></a><rect x="63" y="330" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="342">XML</text> + <rect x="63" y="358" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="370">INTERVAL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#dt-zone" xlink:title="DT_ZONE" shape="rect"> + <rect x="63" y="386" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="398">DT_ZONE</text></a><rect x="63" y="414" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="426">CHAR</text> + <rect x="63" y="442" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="454">SET</text> + <rect x="63" y="470" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="482">BINARY</text> + <rect x="63" y="498" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="510">JSON</text> + <rect x="63" y="526" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="538">STRING</text> + <rect x="231" y="239" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="251">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="267" y="239" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="271" y="251">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="267" y="267" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="271" y="279">S_QUOTED_IDENTIFIER</text></a><rect x="63" y="554" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="566">UNSIGNED</text> + <rect x="63" y="582" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="594">SIGNED</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="167" y="575" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="587">S_IDENTIFIER</text></a><rect x="37" y="636" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="41" y="648">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="117" y="636" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="648">S_LONG</text></a><rect x="193" y="657" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="197" y="669">BYTE</text> + <rect x="193" y="685" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="197" y="697">CHAR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="117" y="713" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="725">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="117" y="741" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="121" y="753">S_IDENTIFIER</text></a><rect x="117" y="769" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="781">CHAR</text> + <rect x="295" y="657" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="299" y="669">,</text> + <rect x="371" y="636" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="375" y="648">)</text> + <rect x="451" y="636" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="455" y="648">[</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="491" y="657" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="495" y="669">S_LONG</text></a><rect x="567" y="636" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="571" y="648">]</text> + <rect x="377" y="851" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="381" y="863">CHARACTER</text> + <rect x="447" y="851" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="451" y="863">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="499" y="851" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="503" y="863">S_IDENTIFIER</text></a><rect x="499" y="879" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="503" y="891">BINARY</text> + <path class="line" d="m17 10 h2 m20 0 h4 m38 0 h4 m0 0 h4 m14 0 h4 m0 0 h4 m68 0 h4 m0 0 h4 m14 0 h4 m0 0 h226 m-412 0 h20 m392 0 h20 m-432 0 q10 0 10 10 m412 0 q0 -10 10 -10 m-422 10 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-382 10 h4 m36 0 h4 m0 0 h6 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 m-60 -10 v20 m70 0 v-20 m-70 20 v8 m70 0 v-8 m-70 8 q0 10 10 10 m50 0 q10 0 10 -10 m-60 10 h4 m32 0 h4 m0 0 h10 m20 -56 h4 m12 0 h4 m20 0 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 m74 0 h4 m20 -28 h4 m12 0 h4 m0 0 h140 m-402 -10 v20 m412 0 v-20 m-412 20 v64 m412 0 v-64 m-412 64 q0 10 10 10 m392 0 q10 0 10 -10 m-382 10 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 m22 0 h4 m0 0 h40 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 m50 0 h4 m20 -21 h184 m-402 -10 v20 m412 0 v-20 m-412 20 v36 m412 0 v-36 m-412 36 q0 10 10 10 m392 0 q10 0 10 -10 m-402 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 h230 m-402 -10 v20 m412 0 v-20 m-412 20 v29 m412 0 v-29 m-412 29 q0 10 10 10 m392 0 q10 0 10 -10 m-382 10 h4 m74 0 h4 m0 0 h46 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 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 m104 0 h4 m0 0 h16 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 m88 0 h4 m0 0 h32 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 m28 0 h4 m0 0 h92 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 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 m54 0 h4 m0 0 h66 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 m34 0 h4 m0 0 h86 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 m24 0 h4 m0 0 h96 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 m42 0 h4 m0 0 h78 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 m32 0 h4 m0 0 h88 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 m42 0 h4 m0 0 h78 m40 -308 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 m20 0 h4 m74 0 h4 m0 0 h46 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 m-362 -59 v20 m412 0 v-20 m-412 20 v316 m412 0 v-316 m-412 316 q0 10 10 10 m392 0 q10 0 10 -10 m-382 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 m42 0 h4 m0 0 h14 m40 -28 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 m20 -21 h166 m22 -553 l2 0 m2 0 l2 0 m2 0 l2 0 m-462 635 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m12 0 h4 m60 0 h4 m48 0 h4 m20 0 h10 m0 0 h32 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v1 m62 0 v-1 m-62 1 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 m34 0 h4 m-138 -49 h20 m138 0 h20 m-178 0 q10 0 10 10 m158 0 q0 -10 10 -10 m-168 10 v57 m158 0 v-57 m-158 57 q0 10 10 10 m138 0 q10 0 10 -10 m-148 10 h4 m90 0 h4 m0 0 h40 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 m74 0 h4 m0 0 h56 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 m34 0 h4 m0 0 h96 m40 -133 h10 m0 0 h6 m-36 0 h20 m16 0 h20 m-56 0 q10 0 10 10 m36 0 q0 -10 10 -10 m-46 10 v1 m36 0 v-1 m-36 1 q0 10 10 10 m16 0 q10 0 10 -10 m-26 10 h4 m8 0 h4 m-234 -21 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m234 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-234 0 h10 m0 0 h224 m-274 21 h20 m274 0 h20 m-314 0 q10 0 10 10 m294 0 q0 -10 10 -10 m-304 10 v134 m294 0 v-134 m-294 134 q0 10 10 10 m274 0 q10 0 10 -10 m-284 10 h10 m0 0 h264 m20 -154 h4 m12 0 h4 m-374 0 h20 m354 0 h20 m-394 0 q10 0 10 10 m374 0 q0 -10 10 -10 m-384 10 v146 m374 0 v-146 m-374 146 q0 10 10 10 m354 0 q10 0 10 -10 m-364 10 h10 m0 0 h344 m60 -166 h4 m12 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 m12 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 m-176 21 h20 m176 0 h20 m-216 0 q10 0 10 10 m196 0 q0 -10 10 -10 m-206 10 v22 m196 0 v-22 m-196 22 q0 10 10 10 m176 0 q10 0 10 -10 m-186 10 h10 m0 0 h166 m22 -42 l2 0 m2 0 l2 0 m2 0 l2 0 m-294 194 l2 0 m2 0 l2 0 m2 0 l2 0 m22 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 m62 0 h4 m0 0 h4 m24 0 h4 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 m42 0 h4 m0 0 h32 m43 -49 h-3"/> + <polygon points="627 839 635 835 635 843"/> + <polygon points="627 839 619 835 619 843"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a></div> + <div>         ::= ( 'ARRAY' '<' <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> '>' | ( 'BYTES' | 'STRING' | 'JSON' ) '(' ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> ) ')' | ( 'CHARACTER' | 'BIT' ) 'VARYING'? | 'DOUBLE' 'PRECISION'? | ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> | <a href="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a> | <a href="#k-date-literal" title="K_DATE_LITERAL" shape="rect">K_DATE_LITERAL</a> | 'XML' | 'INTERVAL' | <a href="#dt-zone" title="DT_ZONE" shape="rect">DT_ZONE</a> | 'CHAR' | 'SET' | 'BINARY' | 'JSON' | 'STRING' ) ( '.' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) )? | ( 'UNSIGNED' | 'SIGNED' ) <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a>? ) ( '(' ( ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ( 'BYTE' | 'CHAR' )? | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | 'CHAR' ) ','? )* ')' )? ( '[' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a>? ']' )* ( 'CHARACTER' 'SET' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | 'BINARY' ) )?</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="#alterexpressioncolumndatatype" title="alterexpressioncolumndatatype">alterexpressioncolumndatatype</a></li><li><a href="#castexpression" title="castexpression">castexpression</a></li><li><a href="#coldatatype" title="coldatatype">coldatatype</a></li><li><a href="#columndefinition" title="columndefinition">columndefinition</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#declare" title="declare">declare</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#safecastexpression" title="safecastexpression">safecastexpression</a></li><li><a href="#trycastexpression" title="trycastexpression">trycastexpression</a></li><li><a href="#xmlserializeexpr" title="xmlserializeexpr">xmlserializeexpr</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Analyze +====================================================================================================================== + + +.. 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="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">ANALYZE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="79" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="83" y="13">Table</text></a><path class="line" d="m17 10 h2 m0 0 h4 m48 0 h4 m0 0 h4 m34 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="#analyze" title="Analyze" shape="rect">Analyze</a>  ::= 'ANALYZE' <a href="#table" title="Table" shape="rect">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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CreateView +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="685" height="133"> + <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="93" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="34">OR</text> + <rect x="123" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="127" y="34">REPLACE</text> + <rect x="239" y="43" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="243" y="55">NO</text> + <rect x="289" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="293" y="34">FORCE</text> + <rect x="375" y="22" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="34">TEMP</text> + <rect x="375" y="50" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="62">TEMPORARY</text> + <rect x="489" y="22" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="493" y="34">MATERIALIZED</text> + <rect x="591" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="595" y="13">VIEW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="633" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="637" y="13">Table</text></a><rect x="89" y="113" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="125">IF</text> + <rect x="113" y="113" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="125">NOT</text> + <rect x="149" y="113" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="153" y="125">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="237" y="113" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="241" y="125">ColumnsNamesList</text></a><rect x="363" y="92" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="367" y="104">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectwithwithitems" xlink:title="SelectWithWithItems" shape="rect"> + <rect x="391" y="92" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="395" y="104">SelectWithWithItems</text></a><rect x="525" y="113" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="529" y="125">WITH</text> + <rect x="567" y="113" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="571" y="125">READ</text> + <rect x="607" y="113" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="611" y="125">ONLY</text> + <path class="line" d="m17 10 h2 m0 0 h4 m42 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 m22 0 h4 m0 0 h4 m48 0 h4 m40 -21 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-106 10 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 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 m32 0 h4 m0 0 h34 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 -49 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 m20 -21 h4 m34 0 h4 m0 0 h4 m34 0 h4 m2 0 l2 0 m2 0 l2 0 m2 0 l2 0 m-630 91 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h10 m0 0 h98 m-128 0 h20 m108 0 h20 m-148 0 q10 0 10 10 m128 0 q0 -10 10 -10 m-138 10 v1 m128 0 v-1 m-128 1 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m16 0 h4 m0 0 h4 m28 0 h4 m0 0 h4 m40 0 h4 m40 -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 m20 -21 h4 m20 0 h4 m0 0 h4 m106 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 m34 0 h4 m0 0 h4 m32 0 h4 m0 0 h4 m34 0 h4 m23 -21 h-3"/> + <polygon points="675 101 683 97 683 105"/> + <polygon points="675 101 667 97 667 105"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#createview" title="CreateView" shape="rect">CreateView</a></div> + <div>         ::= 'CREATE' ( 'OR' 'REPLACE' )? ( 'NO'? 'FORCE' )? ( 'TEMP' | 'TEMPORARY' + )? 'MATERIALIZED'? 'VIEW' <a href="#table" title="Table" shape="rect">Table</a> ( 'IF' 'NOT' 'EXISTS' )? <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a>? 'AS' <a href="#selectwithwithitems" title="SelectWithWithItems" shape="rect">SelectWithWithItems</a> ( 'WITH' 'READ' 'ONLY' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createschema" title="createschema">createschema</a></li><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + 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="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">RESTRICT</text> + <rect x="43" y="57" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">NO</text> + <rect x="73" y="57" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="77" y="69">ACTION</text> + <rect x="43" y="85" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">SET</text> + <rect x="95" y="85" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="97">NULL</text> + <rect x="95" y="113" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="99" y="125">DEFAULT</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 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 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 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 m43 -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="#action" title="Action" shape="rect">Action</a>   ::= 'CASCADE'</div> + <div>           | 'RESTRICT'</div> + <div>           | 'NO' 'ACTION'</div> + <div>           | 'SET' ( 'NULL' | 'DEFAULT' )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alterexpression" title="alterexpression">alterexpression</a></li><li><a href="#createtable" title="createtable">createtable</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterView +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="461" 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">ALTER</text> + <rect x="43" y="29" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">REPLACE</text> + <rect x="119" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="13">VIEW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="161" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="165" y="13">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="223" y="22" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="227" y="34">ColumnsNamesList</text></a><rect x="349" y="1" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="353" y="13">AS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#selectbody" xlink:title="SelectBody" shape="rect"> + <rect x="377" y="1" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="381" y="13">SelectBody</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 m20 -28 h4 m34 0 h4 m0 0 h4 m34 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 m20 0 h4 m0 0 h4 m60 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="#alterview" title="AlterView" shape="rect">AlterView</a></div> + <div>         ::= ( 'ALTER' | 'REPLACE' ) 'VIEW' <a href="#table" title="Table" shape="rect">Table</a> <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a>? 'AS' <a href="#selectbody" title="SelectBody" shape="rect">SelectBody</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CreateParameter +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="471" height="1477"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="63" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="63" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">S_QUOTED_IDENTIFIER</text></a><rect x="231" y="22" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="34">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="267" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="271" y="34">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="267" y="50" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="271" y="62">S_QUOTED_IDENTIFIER</text></a><rect x="43" y="78" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="90">NULL</text> + <rect x="43" y="106" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="118">NOT</text> + <rect x="43" y="134" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="146">PRIMARY</text> + <rect x="43" y="162" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="174">DEFAULT</text> + <rect x="43" y="190" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="202">FOREIGN</text> + <rect x="43" y="218" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="230">REFERENCES</text> + <rect x="43" y="246" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="258">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="43" y="274" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="286">S_CHAR_LITERAL</text></a><rect x="63" y="323" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="335">+</text> + <rect x="63" y="351" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="363">-</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="125" y="302" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="314">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-double" xlink:title="S_DOUBLE" shape="rect"> + <rect x="125" y="330" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="342">S_DOUBLE</text></a><rect x="43" y="379" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="391">AS</text> + <rect x="91" y="400" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="95" y="412">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="111" y="400" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="115" y="412">Expression</text></a><rect x="179" y="400" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="412">)</text> + <rect x="43" y="428" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="440">STORED</text> + <rect x="43" y="456" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="468">ON</text> + <rect x="43" y="484" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="496">COMMIT</text> + <rect x="43" y="512" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="524">DROP</text> + <rect x="43" y="540" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="552">ROWS</text> + <rect x="43" y="568" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="580">UNIQUE</text> + <rect x="43" y="596" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="608">CASCADE</text> + <rect x="43" y="624" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="636">DELETE</text> + <rect x="43" y="652" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="664">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#k-time-key-expr" xlink:title="K_TIME_KEY_EXPR" shape="rect"> + <rect x="43" y="680" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="692">K_TIME_KEY_EXPR</text></a><rect x="43" y="708" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="720">=</text> + <rect x="43" y="736" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="748">USING</text> + <rect x="109" y="757" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="113" y="769">INDEX</text> + <rect x="153" y="757" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="769">TABLESPACE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="225" y="757" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="229" y="769">RelObjectName</text></a><rect x="43" y="785" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="797">TABLESPACE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="115" y="785" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="119" y="797">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alist" xlink:title="AList" shape="rect"> + <rect x="43" y="813" width="30" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="825">AList</text></a><rect x="43" y="841" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="853">CHECK</text> + <rect x="89" y="841" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="93" y="853">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="109" y="841" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="113" y="853">Expression</text></a><rect x="177" y="841" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="853">)</text> + <rect x="43" y="869" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="881">CONSTRAINT</text> + <rect x="43" y="897" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="909">WITH</text> + <rect x="43" y="925" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="937">EXCLUDE</text> + <rect x="43" y="953" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="965">WHERE</text> + <rect x="43" y="981" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="993">UNSIGNED</text> + <rect x="43" y="1009" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1021">TEMP</text> + <rect x="43" y="1037" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1049">TEMPORARY</text> + <rect x="43" y="1065" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1077">PARTITION</text> + <rect x="43" y="1093" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1105">BY</text> + <rect x="43" y="1121" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1133">IN</text> + <rect x="43" y="1149" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1161">TYPE</text> + <rect x="43" y="1177" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1189">COMMENT</text> + <rect x="43" y="1205" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1217">COLLATE</text> + <rect x="43" y="1233" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1245">ASC</text> + <rect x="43" y="1261" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1273">DESC</text> + <rect x="43" y="1289" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1301">TRUE</text> + <rect x="43" y="1317" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1329">FALSE</text> + <rect x="43" y="1345" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1357">PARALLEL</text> + <rect x="43" y="1373" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1385">BINARY</text> + <rect x="43" y="1401" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1413">CHARACTER</text> + <rect x="113" y="1401" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="117" y="1413">SET</text> + <rect x="43" y="1429" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1441">ARRAY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#arrayconstructor" xlink:title="ArrayConstructor" shape="rect"> + <rect x="89" y="1429" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="93" y="1441">ArrayConstructor</text></a><rect x="43" y="1457" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1469">::</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="63" y="1457" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="1469">ColDataType</text></a><path class="line" d="m17 10 h2 m40 0 h4 m74 0 h4 m0 0 h46 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 m40 -28 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 m20 0 h4 m74 0 h4 m0 0 h46 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 m-372 -49 h20 m392 0 h20 m-432 0 q10 0 10 10 m412 0 q0 -10 10 -10 m-422 10 v57 m412 0 v-57 m-412 57 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m32 0 h4 m0 0 h352 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m28 0 h4 m0 0 h356 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m50 0 h4 m0 0 h334 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m48 0 h4 m0 0 h336 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m50 0 h4 m0 0 h334 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m66 0 h4 m0 0 h318 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m24 0 h4 m0 0 h360 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m90 0 h4 m0 0 h294 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-382 10 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 m40 -49 h4 m48 0 h4 m0 0 h12 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 h222 m-402 -10 v20 m412 0 v-20 m-412 20 v57 m412 0 v-57 m-412 57 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m20 0 h4 m20 0 h10 m0 0 h98 m-128 0 h20 m108 0 h20 m-148 0 q10 0 10 10 m128 0 q0 -10 10 -10 m-138 10 v1 m128 0 v-1 m-128 1 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m12 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m20 -21 h216 m-402 -10 v20 m412 0 v-20 m-412 20 v29 m412 0 v-29 m-412 29 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m46 0 h4 m0 0 h338 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m22 0 h4 m0 0 h362 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m48 0 h4 m0 0 h336 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m34 0 h4 m0 0 h350 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m38 0 h4 m0 0 h346 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m44 0 h4 m0 0 h340 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m50 0 h4 m0 0 h334 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m40 0 h4 m0 0 h344 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m44 0 h4 m0 0 h340 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m98 0 h4 m0 0 h286 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m14 0 h4 m0 0 h370 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m38 0 h4 m20 0 h10 m0 0 h194 m-224 0 h20 m204 0 h20 m-244 0 q10 0 10 10 m224 0 q0 -10 10 -10 m-234 10 v1 m224 0 v-1 m-224 1 q0 10 10 10 m204 0 q10 0 10 -10 m-214 10 h4 m36 0 h4 m0 0 h4 m64 0 h4 m0 0 h4 m80 0 h4 m20 -21 h102 m-402 -10 v20 m412 0 v-20 m-412 20 v29 m412 0 v-29 m-412 29 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m64 0 h4 m0 0 h4 m80 0 h4 m0 0 h232 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m30 0 h4 m0 0 h354 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m38 0 h4 m0 0 h4 m12 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m0 0 h238 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m68 0 h4 m0 0 h316 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m34 0 h4 m0 0 h350 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m48 0 h4 m0 0 h336 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m42 0 h4 m0 0 h342 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m56 0 h4 m0 0 h328 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m32 0 h4 m0 0 h352 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m66 0 h4 m0 0 h318 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m58 0 h4 m0 0 h326 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m20 0 h4 m0 0 h364 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m18 0 h4 m0 0 h366 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m30 0 h4 m0 0 h354 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m56 0 h4 m0 0 h328 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m48 0 h4 m0 0 h336 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m26 0 h4 m0 0 h358 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m32 0 h4 m0 0 h352 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m32 0 h4 m0 0 h352 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m36 0 h4 m0 0 h348 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m52 0 h4 m0 0 h332 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m42 0 h4 m0 0 h342 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m62 0 h4 m0 0 h4 m24 0 h4 m0 0 h290 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m38 0 h4 m0 0 h4 m86 0 h4 m0 0 h252 m-402 -10 v20 m412 0 v-20 m-412 20 v8 m412 0 v-8 m-412 8 q0 10 10 10 m392 0 q10 0 10 -10 m-402 10 h4 m12 0 h4 m0 0 h4 m68 0 h4 m0 0 h296 m23 -1456 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="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a></div> + <div>         ::= ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) ( '.' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) )?</div> + <div>           | 'NULL'</div> + <div>           | 'NOT'</div> + <div>           | 'PRIMARY'</div> + <div>           | 'DEFAULT'</div> + <div>           | 'FOREIGN'</div> + <div>           | 'REFERENCES'</div> + <div>           | 'KEY'</div> + <div>           | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a></div> + <div>           | ( '+' | '-' )? ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#s-double" title="S_DOUBLE" shape="rect">S_DOUBLE</a> )</div> + <div>           | 'AS' ( '(' <a href="#expression" title="Expression" shape="rect">Expression</a> ')' )?</div> + <div>           | 'STORED'</div> + <div>           | 'ON'</div> + <div>           | 'COMMIT'</div> + <div>           | 'DROP'</div> + <div>           | 'ROWS'</div> + <div>           | 'UNIQUE'</div> + <div>           | 'CASCADE'</div> + <div>           | 'DELETE'</div> + <div>           | 'UPDATE'</div> + <div>           | <a href="#k-time-key-expr" title="K_TIME_KEY_EXPR" shape="rect">K_TIME_KEY_EXPR</a></div> + <div>           | '='</div> + <div>           | 'USING' ( 'INDEX' 'TABLESPACE' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> )?</div> + <div>           | 'TABLESPACE' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a></div> + <div>           | <a href="#alist" title="AList" shape="rect">AList</a></div> + <div>           | 'CHECK' '(' <a href="#expression" title="Expression" shape="rect">Expression</a> ')'</div> + <div>           | 'CONSTRAINT'</div> + <div>           | 'WITH'</div> + <div>           | 'EXCLUDE'</div> + <div>           | 'WHERE'</div> + <div>           | 'UNSIGNED'</div> + <div>           | 'TEMP'</div> + <div>           | 'TEMPORARY'</div> + <div>           | 'PARTITION'</div> + <div>           | 'BY'</div> + <div>           | 'IN'</div> + <div>           | 'TYPE'</div> + <div>           | 'COMMENT'</div> + <div>           | 'COLLATE'</div> + <div>           | 'ASC'</div> + <div>           | 'DESC'</div> + <div>           | 'TRUE'</div> + <div>           | 'FALSE'</div> + <div>           | 'PARALLEL'</div> + <div>           | 'BINARY'</div> + <div>           | 'CHARACTER' 'SET'</div> + <div>           | 'ARRAY' <a href="#arrayconstructor" title="ArrayConstructor" shape="rect">ArrayConstructor</a></div> + <div>           | '::' <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alterexpressioncolumndatatype" title="alterexpressioncolumndatatype">alterexpressioncolumndatatype</a></li><li><a href="#columndefinition" title="columndefinition">columndefinition</a></li><li><a href="#columnnameswithparamslist" title="columnnameswithparamslist">columnnameswithparamslist</a></li><li><a href="#createindex" title="createindex">createindex</a></li><li><a href="#createtable" title="createtable">createtable</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RowMovement +====================================================================================================================== + + +.. 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"/> + <rect x="43" y="1" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">ENABLE</text> + <rect x="43" y="29" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">DISABLE</text> + <rect x="117" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="13">ROW</text> + <rect x="157" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="13">MOVEMENT</text> + <path class="line" d="m17 10 h2 m20 0 h4 m42 0 h4 m0 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 m20 -28 h4 m32 0 h4 m0 0 h4 m62 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="#rowmovement" title="RowMovement" shape="rect">RowMovement</a></div> + <div>         ::= ( 'ENABLE' | 'DISABLE' ) 'ROW' 'MOVEMENT'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createtable" title="createtable">createtable</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="411" height="129"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="23" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="25">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="103" y="13" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="25">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-double" xlink:title="S_DOUBLE" shape="rect"> + <rect x="103" y="41" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="53">S_DOUBLE</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="103" y="69" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="81">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamewithoutvalue" xlink:title="RelObjectNameWithoutValue" shape="rect"> + <rect x="103" y="97" width="142" height="18" class="nonterminal"/> + <text class="nonterminal" x="107" y="109">RelObjectNameWithoutValue</text></a><rect x="293" y="34" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="297" y="46">,</text> + <rect x="293" y="62" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="297" y="74">=</text> + <rect x="375" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="379" y="25">)</text> + <path class="line" d="m17 22 h2 m0 0 h4 m12 0 h4 m60 0 h4 m48 0 h4 m0 0 h94 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 m60 0 h4 m0 0 h82 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 m90 0 h4 m0 0 h52 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 m142 0 h4 m40 -84 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 m8 0 h4 m0 0 h6 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 m14 0 h4 m-252 -49 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m252 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-252 0 h10 m0 0 h242 m-292 21 h20 m292 0 h20 m-332 0 q10 0 10 10 m312 0 q0 -10 10 -10 m-322 10 v85 m312 0 v-85 m-312 85 q0 10 10 10 m292 0 q10 0 10 -10 m-302 10 h10 m0 0 h282 m20 -105 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="401 22 409 18 409 26"/> + <polygon points="401 22 393 18 393 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="#alist" title="AList" shape="rect">AList</a>    ::= '(' ( ( <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | <a href="#s-double" title="S_DOUBLE" shape="rect">S_DOUBLE</a> | <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#relobjectnamewithoutvalue" title="RelObjectNameWithoutValue" shape="rect">RelObjectNameWithoutValue</a> ) ( ',' | '=' )? )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createparameter" title="createparameter">createparameter</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ColumnsNamesListItem +====================================================================================================================== + + +.. 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"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="23" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectName</text></a><rect x="131" y="22" width="12" 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="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="151" y="22" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="155" y="34">S_LONG</text></a><rect x="207" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m80 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 m12 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m12 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="#columnsnameslistitem" title="ColumnsNamesListItem" shape="rect">ColumnsNamesListItem</a></div> + <div>         ::= <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ( '(' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#columnsnameslist" title="columnsnameslist">columnsnameslist</a></li><li><a href="#userslist" title="userslist">userslist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ColumnsNamesList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="247" 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="#columnsnameslistitem" xlink:title="ColumnsNamesListItem" shape="rect"> + <rect x="63" y="29" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="41">ColumnsNamesListItem</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="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 m20 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 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="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a></div> + <div>         ::= '(' <a href="#columnsnameslistitem" title="ColumnsNamesListItem" shape="rect">ColumnsNamesListItem</a> ( ',' <a href="#columnsnameslistitem" title="ColumnsNamesListItem" shape="rect">ColumnsNamesListItem</a> )* ')'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alterexpression" title="alterexpression">alterexpression</a></li><li><a href="#alterview" title="alterview">alterview</a></li><li><a href="#createtable" title="createtable">createtable</a></li><li><a href="#createview" title="createview">createview</a></li><li><a href="#outputclause" title="outputclause">outputclause</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + FuncArgsListItem +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="391" 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="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="23" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="131" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="34">RelObjectName</text></a><rect x="259" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="34">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="279" y="22" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="34">S_LONG</text></a><rect x="335" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="339" y="34">)</text> + <path class="line" d="m17 10 h2 m0 0 h4 m80 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 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 m12 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m12 0 h4 m23 -21 h-3"/> + <polygon points="381 10 389 6 389 14"/> + <polygon points="381 10 373 6 373 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#funcargslistitem" title="FuncArgsListItem" shape="rect">FuncArgsListItem</a></div> + <div>         ::= <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a>? ( '(' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ')' )?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#funcargslist" title="funcargslist">funcargslist</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + FuncArgsList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="253" 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="#funcargslistitem" xlink:title="FuncArgsListItem" shape="rect"> + <rect x="83" y="29" width="86" height="18" class="nonterminal"/> + <text class="nonterminal" x="87" y="41">FuncArgsListItem</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="217" y="29" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="41">)</text> + <path class="line" d="m17 38 h2 m0 0 h4 m12 0 h4 m40 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 m-134 28 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 h10 m0 0 h124 m20 -21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="243 38 251 34 251 42"/> + <polygon points="243 38 235 34 235 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="#funcargslist" title="FuncArgsList" shape="rect">FuncArgsList</a></div> + <div>         ::= '(' ( <a href="#funcargslistitem" title="FuncArgsListItem" shape="rect">FuncArgsListItem</a> ( ',' <a href="#funcargslistitem" title="FuncArgsListItem" shape="rect">FuncArgsListItem</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" title="drop">drop</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Drop +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="791" height="315"> + <polygon points="9 115 1 111 1 119"/> + <polygon points="17 115 9 111 9 119"/> + <rect x="23" y="106" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="118">DROP</text> + <rect x="85" y="127" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="89" y="139">MATERIALIZED</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="207" y="106" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="211" y="118">S_IDENTIFIER</text></a><rect x="227" y="155" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="231" y="167">TEMPORARY</text> + <rect x="321" y="134" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="325" y="146">TABLE</text> + <rect x="207" y="183" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="195">INDEX</text> + <rect x="207" y="211" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="223">VIEW</text> + <rect x="207" y="239" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="251">SCHEMA</text> + <rect x="207" y="267" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="279">SEQUENCE</text> + <rect x="207" y="295" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="211" y="307">FUNCTION</text> + <rect x="405" y="127" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="409" y="139">IF</text> + <rect x="429" y="127" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="433" y="139">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="497" y="106" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="501" y="118">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#funcargslist" xlink:title="FuncArgsList" shape="rect"> + <rect x="559" y="127" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="563" y="139">FuncArgsList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="673" y="85" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="677" y="97">S_IDENTIFIER</text></a><rect x="673" y="57" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="677" y="69">CASCADE</text> + <rect x="673" y="29" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="677" y="41">RESTRICT</text> + <rect x="673" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="677" y="13">ON</text> + <path class="line" d="m17 115 h2 m0 0 h4 m34 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 h4 m74 0 h4 m0 0 h76 m-178 0 h20 m158 0 h20 m-198 0 q10 0 10 10 m178 0 q0 -10 10 -10 m-188 10 v8 m178 0 v-8 m-178 8 q0 10 10 10 m158 0 q10 0 10 -10 m-148 10 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 m-168 -10 v20 m178 0 v-20 m-178 20 v29 m178 0 v-29 m-178 29 q0 10 10 10 m158 0 q10 0 10 -10 m-168 10 h4 m36 0 h4 m0 0 h114 m-168 -10 v20 m178 0 v-20 m-178 20 v8 m178 0 v-8 m-178 8 q0 10 10 10 m158 0 q10 0 10 -10 m-168 10 h4 m34 0 h4 m0 0 h116 m-168 -10 v20 m178 0 v-20 m-178 20 v8 m178 0 v-8 m-178 8 q0 10 10 10 m158 0 q10 0 10 -10 m-168 10 h4 m46 0 h4 m0 0 h104 m-168 -10 v20 m178 0 v-20 m-178 20 v8 m178 0 v-8 m-178 8 q0 10 10 10 m158 0 q10 0 10 -10 m-168 10 h4 m56 0 h4 m0 0 h94 m-168 -10 v20 m178 0 v-20 m-178 20 v8 m178 0 v-8 m-178 8 q0 10 10 10 m158 0 q10 0 10 -10 m-168 10 h4 m56 0 h4 m0 0 h94 m40 -189 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 m34 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 m40 -21 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 m-92 10 l0 -28 q0 -10 10 -10 m92 38 l0 -28 q0 -10 -10 -10 m-82 0 h4 m50 0 h4 m0 0 h24 m-92 10 l0 -28 q0 -10 10 -10 m92 38 l0 -28 q0 -10 -10 -10 m-82 0 h4 m52 0 h4 m0 0 h22 m-92 10 l0 -28 q0 -10 10 -10 m92 38 l0 -28 q0 -10 -10 -10 m-82 0 h4 m22 0 h4 m0 0 h52 m23 105 h-3"/> + <polygon points="781 115 789 111 789 119"/> + <polygon points="781 115 773 111 773 119"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><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" title="Drop" shape="rect">Drop</a>     ::= 'DROP' 'MATERIALIZED'? ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | 'TEMPORARY'? 'TABLE' | 'INDEX' | 'VIEW' | 'SCHEMA' | 'SEQUENCE' | 'FUNCTION' ) + ( 'IF' 'EXISTS' )? <a href="#table" title="Table" shape="rect">Table</a> <a href="#funcargslist" title="FuncArgsList" shape="rect">FuncArgsList</a>? ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | 'CASCADE' | 'RESTRICT' | 'ON' )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Truncate +====================================================================================================================== + + +.. 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"/> + <rect x="23" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="13">TRUNCATE</text> + <rect x="107" y="22" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="111" y="34">TABLE</text> + <rect x="191" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="34">ONLY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="253" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="257" y="13">Table</text></a><rect x="315" y="22" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="319" y="34">CASCADE</text> + <path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m20 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 m40 -21 h10 m0 0 h32 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v1 m62 0 v-1 m-62 1 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m34 0 h4 m20 -21 h4 m34 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 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="#truncate" title="Truncate" shape="rect">Truncate</a> ::= 'TRUNCATE' 'TABLE'? 'ONLY'? <a href="#table" title="Table" shape="rect">Table</a> 'CASCADE'?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterExpressionColumnDataType +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="419" 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="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="23" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">RelObjectName</text></a><rect x="131" y="43" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="55">TYPE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#coldatatype" xlink:title="ColDataType" shape="rect"> + <rect x="189" y="22" width="68" height="18" class="nonterminal"/> + <text class="nonterminal" x="193" y="34">ColDataType</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#createparameter" xlink:title="CreateParameter" shape="rect"> + <rect x="285" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="289" y="13">CreateParameter</text></a><path class="line" d="m17 31 h2 m0 0 h4 m80 0 h4 m20 0 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 m20 -21 h4 m68 0 h4 m20 0 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="409 31 417 27 417 35"/> + <polygon points="409 31 401 27 401 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="#alterexpressioncolumndatatype" title="AlterExpressionColumnDataType" shape="rect">AlterExpressionColumnDataType</a></div> + <div>         ::= <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> 'TYPE'? <a href="#coldatatype" title="ColDataType" shape="rect">ColDataType</a> <a href="#createparameter" title="CreateParameter" shape="rect">CreateParameter</a>*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alterexpression" title="alterexpression">alterexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterExpressionColumnDropNotNull +====================================================================================================================== + + +.. 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="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="23" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectName</text></a><rect x="111" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="13">DROP</text> + <rect x="173" y="22" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="34">NOT</text> + <rect x="229" y="1" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="13">NULL</text> + <path class="line" d="m17 10 h2 m0 0 h4 m80 0 h4 m0 0 h4 m34 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="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="#alterexpressioncolumndropnotnull" title="AlterExpressionColumnDropNotNull" shape="rect">AlterExpressionColumnDropNotNull</a></div> + <div>         ::= <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> '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="#alterexpression" title="alterexpression">alterexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterExpressionColumnDropDefault +====================================================================================================================== + + +.. 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="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="23" y="1" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectName</text></a><rect x="111" y="1" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="115" y="13">DROP</text> + <rect x="153" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="157" y="13">DEFAULT</text> + <path class="line" d="m17 10 h2 m0 0 h4 m80 0 h4 m0 0 h4 m34 0 h4 m0 0 h4 m48 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="#alterexpressioncolumndropdefault" title="AlterExpressionColumnDropDefault" shape="rect">AlterExpressionColumnDropDefault</a></div> + <div>         ::= <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> '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="#alterexpression" title="alterexpression">alterexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterExpressionConstraintState +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="309" height="178"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="103" y="34" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="46">NOT</text> + <rect x="159" y="13" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="163" y="25">DEFERRABLE</text> + <rect x="83" y="62" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="74">VALIDATE</text> + <rect x="83" y="90" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="102">NOVALIDATE</text> + <rect x="83" y="118" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="130">ENABLE</text> + <rect x="83" y="146" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="158">DISABLE</text> + <path class="line" d="m17 22 h2 m80 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 m66 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 v29 m170 0 v-29 m-170 29 q0 10 10 10 m150 0 q10 0 10 -10 m-160 10 h4 m52 0 h4 m0 0 h90 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 m68 0 h4 m0 0 h74 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 m42 0 h4 m0 0 h100 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 m46 0 h4 m0 0 h96 m-190 -133 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 m-230 21 h20 m230 0 h20 m-270 0 q10 0 10 10 m250 0 q0 -10 10 -10 m-260 10 v134 m250 0 v-134 m-250 134 q0 10 10 10 m230 0 q10 0 10 -10 m-240 10 h10 m0 0 h220 m23 -154 h-3"/> + <polygon points="299 22 307 18 307 26"/> + <polygon points="299 22 291 18 291 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="#alterexpressionconstraintstate" title="AlterExpressionConstraintState" shape="rect">AlterExpressionConstraintState</a></div> + <div>         ::= ( 'NOT'? 'DEFERRABLE' | 'VALIDATE' | 'NOVALIDATE' | 'ENABLE' | 'DISABLE' + )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alterexpression" title="alterexpression">alterexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterExpression +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="1485" height="1239"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="63" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">ADD</text> + <rect x="63" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">ALTER</text> + <rect x="63" y="57" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="69">MODIFY</text> + <rect x="197" y="1" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="13">PRIMARY</text> + <rect x="255" y="1" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="259" y="13">KEY</text> + <rect x="217" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="41">KEY</text> + <rect x="217" y="57" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="221" y="69">INDEX</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="281" y="29" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="285" y="41">RelObjectName</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="389" y="1" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="393" y="13">ColumnsNamesList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressionconstraintstate" xlink:title="AlterExpressionConstraintState" shape="rect"> + <rect x="495" y="1" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="499" y="13">AlterExpressionConstraintState</text></a><rect x="177" y="85" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="97">UNIQUE</text> + <rect x="269" y="106" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="118">KEY</text> + <rect x="269" y="134" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="273" y="146">INDEX</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="353" y="106" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="357" y="118">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="353" y="134" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="357" y="146">S_QUOTED_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="521" y="85" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="525" y="97">ColumnsNamesList</text></a><rect x="693" y="22" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="697" y="34">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="739" y="22" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="743" y="34">RelObjectName</text></a><rect x="177" y="211" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="223">COLUMN</text> + <rect x="273" y="190" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="277" y="202">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressioncolumndatatype" xlink:title="AlterExpressionColumnDataType" shape="rect"> + <rect x="313" y="190" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="317" y="202">AlterExpressionColumnDataType</text></a><rect x="313" y="162" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="317" y="174">,</text> + <rect x="499" y="190" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="503" y="202">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressioncolumndatatype" xlink:title="AlterExpressionColumnDataType" shape="rect"> + <rect x="273" y="218" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="277" y="230">AlterExpressionColumnDataType</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressioncolumndropnotnull" xlink:title="AlterExpressionColumnDropNotNull" shape="rect"> + <rect x="273" y="246" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="277" y="258">AlterExpressionColumnDropNotNull</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressioncolumndropdefault" xlink:title="AlterExpressionColumnDropDefault" shape="rect"> + <rect x="273" y="274" width="168" height="18" class="nonterminal"/> + <text class="nonterminal" x="277" y="286">AlterExpressionColumnDropDefault</text></a><rect x="157" y="330" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="342">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressioncolumndatatype" xlink:title="AlterExpressionColumnDataType" shape="rect"> + <rect x="197" y="330" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="201" y="342">AlterExpressionColumnDataType</text></a><rect x="197" y="302" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="314">,</text> + <rect x="383" y="330" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="387" y="342">)</text> + <rect x="157" y="358" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="370">FOREIGN</text> + <rect x="215" y="358" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="370">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="247" y="358" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="251" y="370">ColumnsNamesList</text></a><rect x="353" y="358" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="357" y="370">REFERENCES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="427" y="358" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="431" y="370">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="489" y="379" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="493" y="391">ColumnsNamesList</text></a><rect x="635" y="379" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="639" y="391">ON</text> + <rect x="685" y="379" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="689" y="391">DELETE</text> + <rect x="685" y="407" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="689" y="419">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#action" xlink:title="Action" shape="rect"> + <rect x="757" y="379" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="761" y="391">Action</text></a><rect x="841" y="379" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="845" y="391">ON</text> + <rect x="891" y="379" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="895" y="391">DELETE</text> + <rect x="891" y="407" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="895" y="419">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#action" xlink:title="Action" shape="rect"> + <rect x="963" y="379" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="967" y="391">Action</text></a><rect x="157" y="435" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="447">CONSTRAINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="233" y="435" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="237" y="447">RelObjectName</text></a><rect x="361" y="435" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" y="447">FOREIGN</text> + <rect x="419" y="435" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="423" y="447">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="451" y="435" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="455" y="447">ColumnsNamesList</text></a><rect x="557" y="435" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="561" y="447">REFERENCES</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="631" y="435" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="635" y="447">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="693" y="456" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="697" y="468">ColumnsNamesList</text></a><rect x="839" y="456" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="843" y="468">ON</text> + <rect x="889" y="456" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="893" y="468">DELETE</text> + <rect x="889" y="484" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="893" y="496">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#action" xlink:title="Action" shape="rect"> + <rect x="961" y="456" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="965" y="468">Action</text></a><rect x="1045" y="456" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1049" y="468">ON</text> + <rect x="1095" y="456" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1099" y="468">DELETE</text> + <rect x="1095" y="484" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="1099" y="496">UPDATE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#action" xlink:title="Action" shape="rect"> + <rect x="1167" y="456" width="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="1171" y="468">Action</text></a><rect x="361" y="512" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" y="524">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="393" y="512" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="397" y="524">ColumnsNamesList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressionconstraintstate" xlink:title="AlterExpressionConstraintState" shape="rect"> + <rect x="1251" y="435" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="1255" y="447">AlterExpressionConstraintState</text></a><rect x="361" y="540" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" y="552">PRIMARY</text> + <rect x="419" y="540" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="423" y="552">KEY</text> + <rect x="361" y="568" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="365" y="580">UNIQUE</text> + <rect x="433" y="589" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="437" y="601">KEY</text> + <rect x="433" y="617" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="437" y="629">INDEX</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="517" y="540" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="521" y="552">ColumnsNamesList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressionconstraintstate" xlink:title="AlterExpressionConstraintState" shape="rect"> + <rect x="623" y="540" width="150" height="18" class="nonterminal"/> + <text class="nonterminal" x="627" y="552">AlterExpressionConstraintState</text></a><rect x="801" y="561" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="805" y="573">USING</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="847" y="561" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="851" y="573">RelObjectName</text></a><rect x="341" y="659" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="345" y="671">CHECK</text> + <rect x="427" y="659" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="431" y="671">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#expression" xlink:title="Expression" shape="rect"> + <rect x="447" y="659" width="60" height="18" class="nonterminal"/> + <text class="nonterminal" x="451" y="671">Expression</text></a><rect x="515" y="659" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="519" y="671">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="157" y="701" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="161" y="713">RelObjectName</text></a><rect x="245" y="701" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="713">COMMENT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="309" y="701" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="313" y="713">S_CHAR_LITERAL</text></a><rect x="43" y="729" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="741">CHANGE</text> + <rect x="117" y="750" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="121" y="762">COLUMN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="213" y="729" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="741">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="213" y="757" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="217" y="769">S_QUOTED_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpressioncolumndatatype" xlink:title="AlterExpressionColumnDataType" shape="rect"> + <rect x="361" y="729" width="158" height="18" class="nonterminal"/> + <text class="nonterminal" x="365" y="741">AlterExpressionColumnDataType</text></a><rect x="43" y="785" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="797">DROP</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="125" y="785" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="129" y="797">ColumnsNamesList</text></a><rect x="145" y="834" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="846">COLUMN</text> + <rect x="241" y="834" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="245" y="846">IF</text> + <rect x="265" y="834" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="269" y="846">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="353" y="813" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="357" y="825">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="353" y="841" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="357" y="853">S_QUOTED_IDENTIFIER</text></a><rect x="541" y="806" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="545" y="818">INVALIDATE</text> + <rect x="651" y="806" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="655" y="818">CASCADE</text> + <rect x="729" y="827" width="74" height="18" class="terminal" rx="4"/> + <text class="terminal" x="733" y="839">CONSTRAINTS</text> + <rect x="105" y="869" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="109" y="881">INDEX</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="169" y="869" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="881">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="169" y="897" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="173" y="909">S_QUOTED_IDENTIFIER</text></a><rect x="145" y="925" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="937">UNIQUE</text> + <rect x="145" y="953" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="965">FOREIGN</text> + <rect x="203" y="953" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="207" y="965">KEY</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslist" xlink:title="ColumnsNamesList" shape="rect"> + <rect x="255" y="925" width="98" height="18" class="nonterminal"/> + <text class="nonterminal" x="259" y="937">ColumnsNamesList</text></a><rect x="125" y="981" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="993">PRIMARY</text> + <rect x="183" y="981" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="993">KEY</text> + <rect x="125" y="1009" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="129" y="1021">CONSTRAINT</text> + <rect x="221" y="1030" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="225" y="1042">IF</text> + <rect x="245" y="1030" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="249" y="1042">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="333" y="1009" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="337" y="1021">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="333" y="1037" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="337" y="1049">S_QUOTED_IDENTIFIER</text></a><rect x="521" y="946" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="525" y="958">CASCADE</text> + <rect x="521" y="974" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="525" y="986">RESTRICT</text> + <rect x="43" y="1065" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1077">ALGORITHM</text> + <rect x="135" y="1086" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="139" y="1098">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="177" y="1065" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="1077">RelObjectName</text></a><rect x="43" y="1114" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1126">RENAME</text> + <rect x="137" y="1156" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="1168">COLUMN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="233" y="1135" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="237" y="1147">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="233" y="1163" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="237" y="1175">S_QUOTED_IDENTIFIER</text></a><rect x="401" y="1114" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="405" y="1126">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="449" y="1114" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="453" y="1126">S_IDENTIFIER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-quoted-identifier" xlink:title="S_QUOTED_IDENTIFIER" shape="rect"> + <rect x="449" y="1142" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="453" y="1154">S_QUOTED_IDENTIFIER</text></a><rect x="43" y="1191" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="1203">COMMENT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="107" y="1191" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="111" y="1203">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#capturerest" xlink:title="captureRest" shape="rect"> + <rect x="43" y="1219" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="1231">captureRest</text></a><path class="line" d="m17 10 h2 m40 0 h4 m28 0 h4 m0 0 h18 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 m36 0 h4 m0 0 h10 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 m80 -56 h4 m50 0 h4 m0 0 h4 m24 0 h4 m0 0 h82 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-162 10 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 m20 -28 h4 m80 0 h4 m20 -28 h4 m98 0 h4 m0 0 h4 m150 0 h4 m-496 0 h20 m476 0 h20 m-516 0 q10 0 10 10 m496 0 q0 -10 10 -10 m-506 10 v64 m496 0 v-64 m-496 64 q0 10 10 10 m476 0 q10 0 10 -10 m-486 10 h4 m44 0 h4 m20 0 h10 m0 0 h242 m-272 0 h20 m252 0 h20 m-292 0 q10 0 10 10 m272 0 q0 -10 10 -10 m-282 10 v1 m272 0 v-1 m-272 1 q0 10 10 10 m252 0 q10 0 10 -10 m-242 10 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 m40 -28 h4 m74 0 h4 m0 0 h46 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 m40 -49 h4 m98 0 h4 m0 0 h26 m40 -84 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 m38 0 h4 m0 0 h4 m80 0 h4 m20 -21 h582 m-1292 0 h20 m1272 0 h20 m-1312 0 q10 0 10 10 m1292 0 q0 -10 10 -10 m-1302 10 v169 m1292 0 v-169 m-1292 169 q0 10 10 10 m1272 0 q10 0 10 -10 m-1262 10 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 m40 -21 h4 m12 0 h4 m20 0 h4 m158 0 h4 m-186 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m166 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-166 0 h4 m8 0 h4 m0 0 h150 m20 28 h4 m12 0 h4 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 m158 0 h4 m0 0 h80 m-256 -10 v20 m266 0 v-20 m-266 20 v8 m266 0 v-8 m-266 8 q0 10 10 10 m246 0 q10 0 10 -10 m-256 10 h4 m168 0 h4 m0 0 h70 m-256 -10 v20 m266 0 v-20 m-266 20 v8 m266 0 v-8 m-266 8 q0 10 10 10 m246 0 q10 0 10 -10 m-256 10 h4 m168 0 h4 m0 0 h70 m20 -84 h890 m-1282 -10 v20 m1292 0 v-20 m-1292 20 v120 m1292 0 v-120 m-1292 120 q0 10 10 10 m1272 0 q10 0 10 -10 m-1282 10 h4 m12 0 h4 m20 0 h4 m158 0 h4 m-186 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m166 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-166 0 h4 m8 0 h4 m0 0 h150 m20 28 h4 m12 0 h4 m0 0 h1026 m-1282 -10 v20 m1292 0 v-20 m-1292 20 v8 m1292 0 v-8 m-1292 8 q0 10 10 10 m1272 0 q10 0 10 -10 m-1282 10 h4 m50 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m98 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m34 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 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 m22 0 h4 m20 0 h4 m40 0 h4 m0 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 m44 0 h4 m20 -28 h4 m36 0 h4 m40 -21 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 m22 0 h4 m20 0 h4 m40 0 h4 m0 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 m44 0 h4 m20 -28 h4 m36 0 h4 m20 -21 h402 m-1282 -10 v20 m1292 0 v-20 m-1292 20 v57 m1292 0 v-57 m-1292 57 q0 10 10 10 m1272 0 q10 0 10 -10 m-1282 10 h4 m68 0 h4 m0 0 h4 m80 0 h4 m40 0 h4 m50 0 h4 m0 0 h4 m24 0 h4 m0 0 h4 m98 0 h4 m0 0 h4 m66 0 h4 m0 0 h4 m34 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 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 m22 0 h4 m20 0 h4 m40 0 h4 m0 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 m44 0 h4 m20 -28 h4 m36 0 h4 m40 -21 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 m22 0 h4 m20 0 h4 m40 0 h4 m0 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 m44 0 h4 m20 -28 h4 m36 0 h4 m-870 -21 h20 m870 0 h20 m-910 0 q10 0 10 10 m890 0 q0 -10 10 -10 m-900 10 v57 m890 0 v-57 m-890 57 q0 10 10 10 m870 0 q10 0 10 -10 m-880 10 h4 m24 0 h4 m0 0 h4 m98 0 h4 m0 0 h732 m20 -77 h4 m150 0 h4 m-1088 0 h20 m1068 0 h20 m-1108 0 q10 0 10 10 m1088 0 q0 -10 10 -10 m-1098 10 v85 m1088 0 v-85 m-1088 85 q0 10 10 10 m1068 0 q10 0 10 -10 m-1058 10 h4 m50 0 h4 m0 0 h4 m24 0 h4 m0 0 h46 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 m44 0 h4 m20 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 m24 0 h4 m0 0 h12 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 -77 h4 m98 0 h4 m0 0 h4 m150 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 m38 0 h4 m0 0 h4 m80 0 h4 m20 -21 h454 m-1078 -10 v20 m1088 0 v-20 m-1088 20 v99 m1088 0 v-99 m-1088 99 q0 10 10 10 m1068 0 q10 0 10 -10 m-1078 10 h4 m38 0 h4 m40 0 h4 m12 0 h4 m0 0 h4 m60 0 h4 m0 0 h4 m12 0 h4 m-128 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m108 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-108 0 h10 m0 0 h98 m-148 21 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 h10 m0 0 h138 m20 -21 h834 m-1262 -234 v20 m1292 0 v-20 m-1292 20 v246 m1292 0 v-246 m-1292 246 q0 10 10 10 m1272 0 q10 0 10 -10 m-1282 10 h4 m80 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m90 0 h4 m0 0 h1022 m-1406 -700 h20 m1406 0 h20 m-1446 0 q10 0 10 10 m1426 0 q0 -10 10 -10 m-1436 10 v708 m1426 0 v-708 m-1426 708 q0 10 10 10 m1406 0 q10 0 10 -10 m-1416 10 h4 m46 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 m40 -21 h4 m74 0 h4 m0 0 h46 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 m20 -28 h4 m158 0 h4 m0 0 h922 m-1416 -10 v20 m1426 0 v-20 m-1426 20 v36 m1426 0 v-36 m-1426 36 q0 10 10 10 m1406 0 q10 0 10 -10 m-1416 10 h4 m34 0 h4 m40 0 h4 m98 0 h4 m0 0 h270 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-366 10 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 m40 -21 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 m40 -21 h4 m74 0 h4 m0 0 h46 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 m60 -56 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 m40 -21 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 m50 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 m-726 -42 h20 m746 0 h20 m-786 0 q10 0 10 10 m766 0 q0 -10 10 -10 m-776 10 v64 m766 0 v-64 m-766 64 q0 10 10 10 m746 0 q10 0 10 -10 m-756 10 h4 m36 0 h4 m20 0 h4 m74 0 h4 m0 0 h46 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 m20 -28 h534 m-756 -10 v20 m766 0 v-20 m-766 20 v36 m766 0 v-36 m-766 36 q0 10 10 10 m746 0 q10 0 10 -10 m-716 10 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 m20 -28 h4 m98 0 h4 m0 0 h120 m-376 0 h20 m356 0 h20 m-396 0 q10 0 10 10 m376 0 q0 -10 10 -10 m-386 10 v36 m376 0 v-36 m-376 36 q0 10 10 10 m356 0 q10 0 10 -10 m-366 10 h4 m50 0 h4 m0 0 h4 m24 0 h4 m0 0 h266 m-366 -10 v20 m376 0 v-20 m-376 20 v8 m376 0 v-8 m-376 8 q0 10 10 10 m356 0 q10 0 10 -10 m-366 10 h4 m68 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 m40 -21 h4 m74 0 h4 m0 0 h46 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 m60 -112 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 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 m52 0 h4 m20 -49 h250 m20 -140 h578 m-1416 -10 v20 m1426 0 v-20 m-1426 20 v260 m1426 0 v-260 m-1426 260 q0 10 10 10 m1406 0 q10 0 10 -10 m-1416 10 h4 m64 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 m20 -21 h4 m80 0 h4 m0 0 h1184 m-1416 -10 v20 m1426 0 v-20 m-1426 20 v29 m1426 0 v-29 m-1426 29 q0 10 10 10 m1406 0 q10 0 10 -10 m-1416 10 h4 m46 0 h4 m20 0 h10 m0 0 h254 m-284 0 h20 m264 0 h20 m-304 0 q10 0 10 10 m284 0 q0 -10 10 -10 m-294 10 v1 m284 0 v-1 m-284 1 q0 10 10 10 m264 0 q10 0 10 -10 m-254 10 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 m40 -21 h4 m74 0 h4 m0 0 h46 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 m40 -49 h4 m20 0 h4 m20 0 h4 m74 0 h4 m0 0 h46 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 m20 -28 h852 m-1416 -10 v20 m1426 0 v-20 m-1426 20 v57 m1426 0 v-57 m-1426 57 q0 10 10 10 m1406 0 q10 0 10 -10 m-1416 10 h4 m56 0 h4 m0 0 h4 m90 0 h4 m0 0 h1244 m-1416 -10 v20 m1426 0 v-20 m-1426 20 v8 m1426 0 v-8 m-1426 8 q0 10 10 10 m1406 0 q10 0 10 -10 m-1416 10 h4 m64 0 h4 m0 0 h1334 m23 -1218 h-3"/> + <polygon points="1475 10 1483 6 1483 14"/> + <polygon points="1475 10 1467 6 1467 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#alterexpression" title="AlterExpression" shape="rect">AlterExpression</a></div> + <div>         ::= ( 'ADD' | 'ALTER' | 'MODIFY' ) ( ( ( 'PRIMARY' 'KEY' | ( 'KEY' | 'INDEX' + ) <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ) <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> <a href="#alterexpressionconstraintstate" title="AlterExpressionConstraintState" shape="rect">AlterExpressionConstraintState</a> | 'UNIQUE' ( ( 'KEY' | 'INDEX' ) ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) )? <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> ) ( 'USING' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> )? | 'COLUMN'? ( '(' <a href="#alterexpressioncolumndatatype" title="AlterExpressionColumnDataType" shape="rect">AlterExpressionColumnDataType</a> ( ',' <a href="#alterexpressioncolumndatatype" title="AlterExpressionColumnDataType" shape="rect">AlterExpressionColumnDataType</a> )* ')' | <a href="#alterexpressioncolumndatatype" title="AlterExpressionColumnDataType" shape="rect">AlterExpressionColumnDataType</a> | <a href="#alterexpressioncolumndropnotnull" title="AlterExpressionColumnDropNotNull" shape="rect">AlterExpressionColumnDropNotNull</a> | <a href="#alterexpressioncolumndropdefault" title="AlterExpressionColumnDropDefault" shape="rect">AlterExpressionColumnDropDefault</a> ) | '(' <a href="#alterexpressioncolumndatatype" title="AlterExpressionColumnDataType" shape="rect">AlterExpressionColumnDataType</a> ( ',' <a href="#alterexpressioncolumndatatype" title="AlterExpressionColumnDataType" shape="rect">AlterExpressionColumnDataType</a> )* ')' | 'FOREIGN' 'KEY' <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> 'REFERENCES' <a href="#table" title="Table" shape="rect">Table</a> <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a>? ( 'ON' ( 'DELETE' | 'UPDATE' ) <a href="#action" title="Action" shape="rect">Action</a> )? ( 'ON' ( 'DELETE' | 'UPDATE' ) <a href="#action" title="Action" shape="rect">Action</a> )? | 'CONSTRAINT' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ( ( 'FOREIGN' 'KEY' <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> 'REFERENCES' <a href="#table" title="Table" shape="rect">Table</a> <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a>? ( 'ON' ( 'DELETE' | 'UPDATE' ) <a href="#action" title="Action" shape="rect">Action</a> )? ( 'ON' ( 'DELETE' | 'UPDATE' ) <a href="#action" title="Action" shape="rect">Action</a> )? | 'KEY' <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> ) <a href="#alterexpressionconstraintstate" title="AlterExpressionConstraintState" shape="rect">AlterExpressionConstraintState</a> | ( 'PRIMARY' 'KEY' | 'UNIQUE' ( 'KEY' | 'INDEX' )? ) <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> <a href="#alterexpressionconstraintstate" title="AlterExpressionConstraintState" shape="rect">AlterExpressionConstraintState</a> ( 'USING' <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> )? | 'CHECK' ( '(' <a href="#expression" title="Expression" shape="rect">Expression</a> ')' )* ) | <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> 'COMMENT' <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> )</div> + <div>           | 'CHANGE' 'COLUMN'? ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) <a href="#alterexpressioncolumndatatype" title="AlterExpressionColumnDataType" shape="rect">AlterExpressionColumnDataType</a></div> + <div>           | 'DROP' ( ( <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> | 'COLUMN'? ( 'IF' 'EXISTS' )? ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) ) 'INVALIDATE'? ( 'CASCADE' 'CONSTRAINTS'? )? | 'INDEX' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) | ( ( 'UNIQUE' | 'FOREIGN' 'KEY' ) <a href="#columnsnameslist" title="ColumnsNamesList" shape="rect">ColumnsNamesList</a> | 'PRIMARY' 'KEY' | 'CONSTRAINT' ( 'IF' 'EXISTS' )? ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) ) ( 'CASCADE' | 'RESTRICT' )? )</div> + <div>           | 'ALGORITHM' '='? <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a></div> + <div>           | 'RENAME' ( 'COLUMN'? ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> ) )? 'TO' ( <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | <a href="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a> )</div> + <div>           | 'COMMENT' <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a></div> + <div>           | <a href="#capturerest" title="captureRest" shape="rect">captureRest</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#altertable" title="altertable">altertable</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterTable +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="489" height="70"> + <polygon points="9 38 1 34 1 42"/> + <polygon points="17 38 9 34 9 42"/> + <rect x="23" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="41">ALTER</text> + <rect x="67" y="29" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="41">TABLE</text> + <rect x="131" y="50" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="62">ONLY</text> + <rect x="213" y="50" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="217" y="62">IF</text> + <rect x="237" y="50" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="241" y="62">EXISTS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="305" y="29" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="309" y="41">Table</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#alterexpression" xlink:title="AlterExpression" shape="rect"> + <rect x="367" y="29" width="78" height="18" class="nonterminal"/> + <text class="nonterminal" x="371" y="41">AlterExpression</text></a><rect x="367" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="371" y="13">,</text> + <path class="line" d="m17 38 h2 m0 0 h4 m36 0 h4 m0 0 h4 m36 0 h4 m20 0 h10 m0 0 h32 m-62 0 h20 m42 0 h20 m-82 0 q10 0 10 10 m62 0 q0 -10 10 -10 m-72 10 v1 m62 0 v-1 m-62 1 q0 10 10 10 m42 0 q10 0 10 -10 m-52 10 h4 m34 0 h4 m40 -21 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 m34 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="479 38 487 34 487 42"/> + <polygon points="479 38 471 34 471 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="#altertable" title="AlterTable" shape="rect">AlterTable</a></div> + <div>         ::= 'ALTER' 'TABLE' 'ONLY'? ( 'IF' 'EXISTS' )? <a href="#table" title="Table" shape="rect">Table</a> <a href="#alterexpression" title="AlterExpression" shape="rect">AlterExpression</a> ( ',' <a href="#alterexpression" title="AlterExpression" shape="rect">AlterExpression</a> )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterSession +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="607" height="518"> + <polygon points="9 143 1 139 1 147"/> + <polygon points="17 143 9 139 9 147"/> + <rect x="23" y="134" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="146">ALTER</text> + <rect x="67" y="134" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="71" y="146">SESSION</text> + <rect x="145" y="134" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="146">ADVISE</text> + <rect x="215" y="134" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="146">COMMIT</text> + <rect x="215" y="162" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="174">ROLLBACK</text> + <rect x="215" y="190" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="202">NOTHING</text> + <rect x="145" y="218" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="230">CLOSE</text> + <rect x="191" y="218" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="230">DATABASE</text> + <rect x="255" y="218" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="259" y="230">LINK</text> + <rect x="165" y="246" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="258">ENABLE</text> + <rect x="165" y="274" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="286">DISABLE</text> + <rect x="259" y="246" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="258">COMMIT</text> + <rect x="315" y="246" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="319" y="258">IN</text> + <rect x="341" y="246" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="345" y="258">PROCEDURE</text> + <rect x="259" y="274" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="286">GUARD</text> + <rect x="259" y="302" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="314">PARALLEL</text> + <rect x="339" y="302" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="343" y="314">DML</text> + <rect x="339" y="330" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="343" y="342">DDL</text> + <rect x="339" y="358" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="343" y="370">QUERY</text> + <rect x="259" y="386" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="398">RESUMABLE</text> + <rect x="145" y="414" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="426">FORCE</text> + <rect x="191" y="414" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="195" y="426">PARALLEL</text> + <rect x="271" y="414" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="426">DML</text> + <rect x="271" y="442" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="454">DDL</text> + <rect x="271" y="470" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="275" y="482">QUERY</text> + <rect x="145" y="498" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="149" y="510">SET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="473" y="113" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="477" y="125">S_CHAR_LITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="473" y="85" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="477" y="97">S_IDENTIFIER</text></a><rect x="473" y="57" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="477" y="69">=</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="473" y="29" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="477" y="41">S_LONG</text></a><rect x="473" y="1" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="477" y="13">PARALLEL</text> + <path class="line" d="m17 143 h2 m0 0 h4 m36 0 h4 m0 0 h4 m50 0 h4 m20 0 h4 m42 0 h4 m20 0 h4 m48 0 h4 m0 0 h8 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 m-74 -10 v20 m84 0 v-20 m-84 20 v8 m84 0 v-8 m-84 8 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m52 0 h4 m0 0 h4 m20 -56 h134 m-308 0 h20 m288 0 h20 m-328 0 q10 0 10 10 m308 0 q0 -10 10 -10 m-318 10 v64 m308 0 v-64 m-308 64 q0 10 10 10 m288 0 q10 0 10 -10 m-298 10 h4 m38 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m30 0 h4 m0 0 h140 m-298 -10 v20 m308 0 v-20 m-308 20 v8 m308 0 v-8 m-308 8 q0 10 10 10 m288 0 q10 0 10 -10 m-278 10 h4 m42 0 h4 m0 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 m40 -28 h4 m48 0 h4 m0 0 h4 m18 0 h4 m0 0 h4 m64 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 m40 0 h4 m0 0 h106 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 m52 0 h4 m20 0 h4 m28 0 h4 m0 0 h12 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 m26 0 h4 m0 0 h14 m-58 -10 v20 m68 0 v-20 m-68 20 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 m20 -56 h6 m-164 -10 v20 m174 0 v-20 m-174 20 v64 m174 0 v-64 m-174 64 q0 10 10 10 m154 0 q10 0 10 -10 m-164 10 h4 m62 0 h4 m0 0 h84 m-278 -150 v20 m308 0 v-20 m-308 20 v148 m308 0 v-148 m-308 148 q0 10 10 10 m288 0 q10 0 10 -10 m-298 10 h4 m38 0 h4 m0 0 h4 m52 0 h4 m20 0 h4 m28 0 h4 m0 0 h12 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 m26 0 h4 m0 0 h14 m-58 -10 v20 m68 0 v-20 m-68 20 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 m20 -56 h94 m-298 -10 v20 m308 0 v-20 m-308 20 v64 m308 0 v-64 m-308 64 q0 10 10 10 m288 0 q10 0 10 -10 m-298 10 h4 m24 0 h4 m0 0 h256 m40 -364 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 m-108 10 l0 -28 q0 -10 10 -10 m108 38 l0 -28 q0 -10 -10 -10 m-98 0 h4 m74 0 h4 m0 0 h16 m-108 10 l0 -28 q0 -10 10 -10 m108 38 l0 -28 q0 -10 -10 -10 m-98 0 h4 m14 0 h4 m0 0 h76 m-108 10 l0 -28 q0 -10 10 -10 m108 38 l0 -28 q0 -10 -10 -10 m-98 0 h4 m48 0 h4 m0 0 h42 m-108 10 l0 -28 q0 -10 10 -10 m108 38 l0 -28 q0 -10 -10 -10 m-98 0 h4 m52 0 h4 m0 0 h38 m23 133 h-3"/> + <polygon points="597 143 605 139 605 147"/> + <polygon points="597 143 589 139 589 147"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#altersession" title="AlterSession" shape="rect">AlterSession</a></div> + <div>         ::= 'ALTER' 'SESSION' ( 'ADVISE' ( 'COMMIT' | 'ROLLBACK' | 'NOTHING' ) | + 'CLOSE' 'DATABASE' 'LINK' | ( 'ENABLE' | 'DISABLE' ) ( 'COMMIT' 'IN' 'PROCEDURE' | + 'GUARD' | 'PARALLEL' ( 'DML' | 'DDL' | 'QUERY' ) | 'RESUMABLE' ) | 'FORCE' 'PARALLEL' + ( 'DML' | 'DDL' | 'QUERY' ) | 'SET' ) ( <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a> | <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | '=' | <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | 'PARALLEL' )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterSystemStatement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="509" height="469"> + <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="139" y="1" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="13">ARCHIVE</text> + <rect x="195" y="1" width="28" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="13">LOG</text> + <rect x="139" y="29" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="41">CHECKPOINT</text> + <rect x="139" y="57" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="69">DUMP</text> + <rect x="183" y="57" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="187" y="69">ACTIVE</text> + <rect x="231" y="57" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="235" y="69">SESSION</text> + <rect x="289" y="57" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="293" y="69">HISTORY</text> + <rect x="159" y="85" width="42" height="18" class="terminal" rx="4"/> + <text class="terminal" x="163" y="97">ENABLE</text> + <rect x="159" y="113" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="163" y="125">DISABLE</text> + <rect x="253" y="85" width="120" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="97">DISTRIBUTED RECOVERY</text> + <rect x="253" y="113" width="106" height="18" class="terminal" rx="4"/> + <text class="terminal" x="257" y="125">RESTRICTED SESSION</text> + <rect x="139" y="141" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="153">FLUSH</text> + <rect x="139" y="169" width="68" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="181">DISCONNECT</text> + <rect x="215" y="169" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="219" y="181">SESSION</text> + <rect x="139" y="197" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="209">KILL SESSION</text> + <rect x="139" y="225" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="237">SWITCH</text> + <rect x="139" y="253" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="265">SUSPEND</text> + <rect x="139" y="281" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="293">RESUME</text> + <rect x="139" y="309" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="321">QUIESCE</text> + <rect x="195" y="309" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="321">RESTRICTED</text> + <rect x="139" y="337" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="349">UNQUIESCE</text> + <rect x="139" y="365" width="66" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="377">SHUTDOWN</text> + <rect x="139" y="393" width="52" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="405">REGISTER</text> + <rect x="139" y="421" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="433">SET</text> + <rect x="139" y="449" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="461">RESET</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#capturerest" xlink:title="captureRest" shape="rect"> + <rect x="421" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="425" y="13">captureRest</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m44 0 h4 m20 0 h4 m48 0 h4 m0 0 h4 m28 0 h4 m0 0 h170 m-282 0 h20 m262 0 h20 m-302 0 q10 0 10 10 m282 0 q0 -10 10 -10 m-292 10 v8 m282 0 v-8 m-282 8 q0 10 10 10 m262 0 q10 0 10 -10 m-272 10 h4 m68 0 h4 m0 0 h186 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 m36 0 h4 m0 0 h4 m40 0 h4 m0 0 h4 m50 0 h4 m0 0 h4 m50 0 h4 m0 0 h54 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-252 10 h4 m42 0 h4 m0 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 m40 -28 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 m106 0 h4 m0 0 h14 m-252 -38 v20 m282 0 v-20 m-282 20 v36 m282 0 v-36 m-282 36 q0 10 10 10 m262 0 q10 0 10 -10 m-272 10 h4 m38 0 h4 m0 0 h216 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 m68 0 h4 m0 0 h4 m50 0 h4 m0 0 h128 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 m70 0 h4 m0 0 h184 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 m46 0 h4 m0 0 h208 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 m52 0 h4 m0 0 h202 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 m46 0 h4 m0 0 h208 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 m48 0 h4 m0 0 h4 m64 0 h4 m0 0 h134 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 m62 0 h4 m0 0 h192 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 m66 0 h4 m0 0 h188 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 m52 0 h4 m0 0 h202 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 m24 0 h4 m0 0 h230 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 m36 0 h4 m0 0 h218 m20 -448 h4 m64 0 h4 m3 0 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="#altersystemstatement" title="AlterSystemStatement" shape="rect">AlterSystemStatement</a></div> + <div>         ::= 'ALTER' 'SYSTEM' ( 'ARCHIVE' 'LOG' | 'CHECKPOINT' | 'DUMP' 'ACTIVE' 'SESSION' + 'HISTORY' | ( 'ENABLE' | 'DISABLE' ) ( 'DISTRIBUTED RECOVERY' | 'RESTRICTED SESSION' + ) | 'FLUSH' | 'DISCONNECT' 'SESSION' | 'KILL SESSION' | 'SWITCH' | 'SUSPEND' | 'RESUME' + | 'QUIESCE' 'RESTRICTED' | 'UNQUIESCE' | 'SHUTDOWN' | 'REGISTER' | 'SET' | 'RESET' + ) <a href="#capturerest" title="captureRest" shape="rect">captureRest</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Wait +====================================================================================================================== + + +.. 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">WAIT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="65" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">S_LONG</text></a><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="#wait" title="Wait" shape="rect">Wait</a>     ::= 'WAIT' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SavepointStatement +====================================================================================================================== + + +.. 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="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="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="91" y="1" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="13">S_IDENTIFIER</text></a><path class="line" d="m17 10 h2 m0 0 h4 m60 0 h4 m0 0 h4 m74 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="#savepointstatement" title="SavepointStatement" shape="rect">SavepointStatement</a></div> + <div>         ::= 'SAVEPOINT' <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + RollbackStatement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="449" height="91"> + <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="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="34">TO</text> + <rect x="243" y="43" width="60" height="18" class="terminal" rx="4"/> + <text class="terminal" x="247" y="55">SAVEPOINT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="331" y="22" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="335" y="34">S_IDENTIFIER</text></a><rect x="195" y="71" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="199" y="83">FORCE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="241" y="71" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="245" y="83">S_CHAR_LITERAL</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 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 m20 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 m74 0 h4 m-228 -10 v20 m238 0 v-20 m-238 20 v29 m238 0 v-29 m-238 29 q0 10 10 10 m218 0 q10 0 10 -10 m-228 10 h4 m38 0 h4 m0 0 h4 m90 0 h4 m0 0 h74 m23 -70 h-3"/> + <polygon points="439 10 447 6 447 14"/> + <polygon points="439 10 431 6 431 14"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#rollbackstatement" title="RollbackStatement" shape="rect">RollbackStatement</a></div> + <div>         ::= 'ROLLBACK' 'WORK'? ( 'TO' 'SAVEPOINT'? <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> | 'FORCE' <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Comment +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="423" height="77"> + <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> + <rect x="87" y="1" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="91" y="13">ON</text> + <rect x="157" y="1" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="13">TABLE</text> + <rect x="157" y="29" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="161" y="41">VIEW</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#table" xlink:title="Table" shape="rect"> + <rect x="221" y="1" width="34" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="13">Table</text></a><rect x="137" y="57" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="141" y="69">COLUMN</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#column" xlink:title="Column" shape="rect"> + <rect x="193" y="57" width="46" height="18" class="nonterminal"/> + <text class="nonterminal" x="197" y="69">Column</text></a><rect x="283" y="1" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="287" y="13">IS</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-char-literal" xlink:title="S_CHAR_LITERAL" shape="rect"> + <rect x="309" y="1" width="90" height="18" class="nonterminal"/> + <text class="nonterminal" x="313" y="13">S_CHAR_LITERAL</text></a><path class="line" d="m17 10 h2 m0 0 h4 m56 0 h4 m0 0 h4 m22 0 h4 m40 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 m34 0 h4 m0 0 h2 m20 -28 h4 m34 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 v36 m146 0 v-36 m-146 36 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h4 m48 0 h4 m0 0 h4 m46 0 h4 m0 0 h16 m20 -56 h4 m18 0 h4 m0 0 h4 m90 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="#comment" title="Comment" shape="rect">Comment</a>  ::= 'COMMENT' 'ON' ( ( 'TABLE' | 'VIEW' ) <a href="#table" title="Table" shape="rect">Table</a> | 'COLUMN' <a href="#column" title="Column" shape="rect">Column</a> ) 'IS' <a href="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_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="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Grant +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="517" height="91"> + <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="#readgranttypes" xlink:title="readGrantTypes" shape="rect"> + <rect x="131" y="29" width="84" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="41">readGrantTypes</text></a><rect x="131" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="135" y="13">,</text> + <rect x="263" y="29" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="267" y="41">ON</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="293" y="29" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="297" y="41">RelObjectNameList</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-identifier" xlink:title="S_IDENTIFIER" shape="rect"> + <rect x="91" y="71" width="74" height="18" class="nonterminal"/> + <text class="nonterminal" x="95" y="83">S_IDENTIFIER</text></a><rect x="415" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="419" y="41">TO</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#userslist" xlink:title="UsersList" shape="rect"> + <rect x="443" y="29" width="50" height="18" class="nonterminal"/> + <text class="nonterminal" x="447" y="41">UsersList</text></a><path class="line" d="m17 38 h2 m0 0 h4 m40 0 h4 m60 0 h4 m84 0 h4 m-112 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -8 q0 -10 10 -10 m92 28 l20 0 m-20 0 q10 0 10 -10 l0 -8 q0 -10 -10 -10 m-92 0 h4 m8 0 h4 m0 0 h76 m-132 28 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 m20 -21 h4 m22 0 h4 m0 0 h4 m94 0 h4 m-324 0 h20 m304 0 h20 m-344 0 q10 0 10 10 m324 0 q0 -10 10 -10 m-334 10 v22 m324 0 v-22 m-324 22 q0 10 10 10 m304 0 q10 0 10 -10 m-314 10 h4 m74 0 h4 m0 0 h222 m20 -42 h4 m20 0 h4 m0 0 h4 m50 0 h4 m3 0 h-3"/> + <polygon points="507 38 515 34 515 42"/> + <polygon points="507 38 499 34 499 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" title="Grant" shape="rect">Grant</a>    ::= 'GRANT' ( ( <a href="#readgranttypes" title="readGrantTypes" shape="rect">readGrantTypes</a> ( ',' <a href="#readgranttypes" title="readGrantTypes" shape="rect">readGrantTypes</a> )* )? 'ON' <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a> | <a href="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a> ) 'TO' <a href="#userslist" title="UsersList" shape="rect">UsersList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + UsersList +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="351" height="45"> + <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="#relobjectname" xlink:title="RelObjectName" shape="rect"> + <rect x="23" y="13" width="80" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="25">RelObjectName</text></a><rect x="151" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="155" y="25">,</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#columnsnameslistitem" xlink:title="ColumnsNamesListItem" shape="rect"> + <rect x="167" y="13" width="120" height="18" class="nonterminal"/> + <text class="nonterminal" x="171" y="25">ColumnsNamesListItem</text></a><path class="line" d="m17 22 h2 m0 0 h4 m80 0 h4 m40 0 h4 m8 0 h4 m0 0 h4 m120 0 h4 m-164 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m144 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-144 0 h10 m0 0 h134 m-184 21 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 h10 m0 0 h174 m23 -21 h-3"/> + <polygon points="341 22 349 18 349 26"/> + <polygon points="341 22 333 18 333 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="#userslist" title="UsersList" shape="rect">UsersList</a></div> + <div>         ::= <a href="#relobjectname" title="RelObjectName" shape="rect">RelObjectName</a> ( ',' <a href="#columnsnameslistitem" title="ColumnsNamesListItem" shape="rect">ColumnsNamesListItem</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" title="grant">grant</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + readGrantTypes +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="143" 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="#k-select" xlink:title="K_SELECT" shape="rect"> + <rect x="43" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">K_SELECT</text></a><rect x="43" y="29" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">INSERT</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="43" y="85" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">DELETE</text> + <rect x="43" y="113" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">EXECUTE</text> + <rect x="43" y="141" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">ALTER</text> + <rect x="43" y="169" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="181">DROP</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 m40 0 h4 m0 0 h16 m-74 -10 v20 m84 0 v-20 m-84 20 v8 m84 0 v-8 m-84 8 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m44 0 h4 m0 0 h12 m-74 -10 v20 m84 0 v-20 m-84 20 v8 m84 0 v-8 m-84 8 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m40 0 h4 m0 0 h16 m-74 -10 v20 m84 0 v-20 m-84 20 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 m-74 -10 v20 m84 0 v-20 m-84 20 v8 m84 0 v-8 m-84 8 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m36 0 h4 m0 0 h20 m-74 -10 v20 m84 0 v-20 m-84 20 v8 m84 0 v-8 m-84 8 q0 10 10 10 m64 0 q10 0 10 -10 m-74 10 h4 m34 0 h4 m0 0 h22 m23 -168 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="#readgranttypes" title="readGrantTypes" shape="rect">readGrantTypes</a></div> + <div>         ::= <a href="#k-select" title="K_SELECT" shape="rect">K_SELECT</a></div> + <div>           | 'INSERT'</div> + <div>           | 'UPDATE'</div> + <div>           | 'DELETE'</div> + <div>           | 'EXECUTE'</div> + <div>           | 'ALTER'</div> + <div>           | 'DROP'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#grant" title="grant">grant</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Sequence +====================================================================================================================== + + +.. 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="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="23" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectNameList</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="#sequence" title="Sequence" shape="rect">Sequence</a> ::= <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#altersequence" title="altersequence">altersequence</a></li><li><a href="#createsequence" title="createsequence">createsequence</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + SequenceParameters +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="353" height="514"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="103" y="13" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="25">INCREMENT</text> + <rect x="173" y="13" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="177" y="25">BY</text> + <rect x="103" y="41" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="53">START</text> + <rect x="147" y="41" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="151" y="53">WITH</text> + <rect x="103" y="69" width="58" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="81">MAXVALUE</text> + <rect x="103" y="97" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="109">MINVALUE</text> + <rect x="103" y="125" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="137">CACHE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="221" y="13" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="225" y="25">S_LONG</text></a><rect x="83" y="153" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="165">RESTART</text> + <rect x="159" y="174" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="163" y="186">WITH</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="201" y="174" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="205" y="186">S_LONG</text></a><rect x="83" y="202" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="214">NOMAXVALUE</text> + <rect x="83" y="230" width="70" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="242">NOMINVALUE</text> + <rect x="83" y="258" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="270">NOCYCLE</text> + <rect x="83" y="286" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="298">CYCLE</text> + <rect x="83" y="314" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="326">NOCACHE</text> + <rect x="83" y="342" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="354">ORDER</text> + <rect x="83" y="370" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="382">NOORDER</text> + <rect x="83" y="398" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="410">KEEP</text> + <rect x="83" y="426" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="438">NOKEEP</text> + <rect x="83" y="454" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="466">SESSION</text> + <rect x="83" y="482" width="44" height="18" class="terminal" rx="4"/> + <text class="terminal" x="87" y="494">GLOBAL</text> + <path class="line" d="m17 22 h2 m80 0 h4 m62 0 h4 m0 0 h4 m20 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 m36 0 h4 m0 0 h4 m34 0 h4 m0 0 h12 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 m58 0 h4 m0 0 h32 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 m56 0 h4 m0 0 h34 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 m38 0 h4 m0 0 h52 m20 -112 h4 m48 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 v120 m214 0 v-120 m-214 120 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m48 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 m34 0 h4 m0 0 h4 m48 0 h4 m-184 -31 v20 m214 0 v-20 m-214 20 v29 m214 0 v-29 m-214 29 q0 10 10 10 m194 0 q10 0 10 -10 m-204 10 h4 m72 0 h4 m0 0 h114 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 m70 0 h4 m0 0 h116 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 m50 0 h4 m0 0 h136 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 m36 0 h4 m0 0 h150 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 m54 0 h4 m0 0 h132 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 m40 0 h4 m0 0 h146 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 m56 0 h4 m0 0 h130 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 m30 0 h4 m0 0 h156 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 m46 0 h4 m0 0 h140 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 m50 0 h4 m0 0 h136 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 m44 0 h4 m0 0 h142 m-234 -469 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m234 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-234 0 h10 m0 0 h224 m-274 21 h20 m274 0 h20 m-314 0 q10 0 10 10 m294 0 q0 -10 10 -10 m-304 10 v470 m294 0 v-470 m-294 470 q0 10 10 10 m274 0 q10 0 10 -10 m-284 10 h10 m0 0 h264 m23 -490 h-3"/> + <polygon points="343 22 351 18 351 26"/> + <polygon points="343 22 335 18 335 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="#sequenceparameters" title="SequenceParameters" shape="rect">SequenceParameters</a></div> + <div>         ::= ( ( 'INCREMENT' 'BY' | 'START' 'WITH' | 'MAXVALUE' | 'MINVALUE' | 'CACHE' + ) <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> | 'RESTART' ( 'WITH' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> )? | 'NOMAXVALUE' | 'NOMINVALUE' | 'NOCYCLE' | 'CYCLE' | 'NOCACHE' | 'ORDER' | 'NOORDER' + | 'KEEP' | 'NOKEEP' | 'SESSION' | 'GLOBAL' )*</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#altersequence" title="altersequence">altersequence</a></li><li><a href="#createsequence" title="createsequence">createsequence</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CreateSequence +====================================================================================================================== + + +.. 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="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="#sequence" xlink:title="Sequence" shape="rect"> + <rect x="137" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="141" y="13">Sequence</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequenceparameters" xlink:title="SequenceParameters" shape="rect"> + <rect x="201" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="205" y="13">SequenceParameters</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m110 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="#createsequence" title="CreateSequence" shape="rect">CreateSequence</a></div> + <div>         ::= 'CREATE' 'SEQUENCE' <a href="#sequence" title="Sequence" shape="rect">Sequence</a> <a href="#sequenceparameters" title="SequenceParameters" shape="rect">SequenceParameters</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + AlterSequence +====================================================================================================================== + + +.. 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="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="#sequence" xlink:title="Sequence" shape="rect"> + <rect x="131" y="1" width="56" height="18" class="nonterminal"/> + <text class="nonterminal" x="135" y="13">Sequence</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#sequenceparameters" xlink:title="SequenceParameters" shape="rect"> + <rect x="195" y="1" width="110" height="18" class="nonterminal"/> + <text class="nonterminal" x="199" y="13">SequenceParameters</text></a><path class="line" d="m17 10 h2 m0 0 h4 m36 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m56 0 h4 m0 0 h4 m110 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="#altersequence" title="AlterSequence" shape="rect">AlterSequence</a></div> + <div>         ::= 'ALTER' 'SEQUENCE' <a href="#sequence" title="Sequence" shape="rect">Sequence</a> <a href="#sequenceparameters" title="SequenceParameters" shape="rect">SequenceParameters</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CreateFunctionStatement +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="399" 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">CREATE</text> + <rect x="93" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="34">OR</text> + <rect x="123" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="127" y="34">REPLACE</text> + <rect x="219" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="13">FUNCTION</text> + <rect x="219" y="29" width="64" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="41">PROCEDURE</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#capturerest" xlink:title="captureRest" shape="rect"> + <rect x="311" y="1" width="64" height="18" class="nonterminal"/> + <text class="nonterminal" x="315" y="13">captureRest</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 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 m22 0 h4 m0 0 h4 m48 0 h4 m40 -21 h4 m56 0 h4 m0 0 h8 m-92 0 h20 m72 0 h20 m-112 0 q10 0 10 10 m92 0 q0 -10 10 -10 m-102 10 v8 m92 0 v-8 m-92 8 q0 10 10 10 m72 0 q10 0 10 -10 m-82 10 h4 m64 0 h4 m20 -28 h4 m64 0 h4 m3 0 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="#createfunctionstatement" title="CreateFunctionStatement" shape="rect">CreateFunctionStatement</a></div> + <div>         ::= 'CREATE' ( 'OR' 'REPLACE' )? ( 'FUNCTION' | 'PROCEDURE' ) <a href="#capturerest" title="captureRest" shape="rect">captureRest</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + CreateSynonym +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="565" 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="93" y="22" width="22" height="18" class="terminal" rx="4"/> + <text class="terminal" x="97" y="34">OR</text> + <rect x="123" y="22" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="127" y="34">REPLACE</text> + <rect x="219" y="22" width="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="223" y="34">PUBLIC</text> + <rect x="287" y="1" width="56" height="18" class="terminal" rx="4"/> + <text class="terminal" x="291" y="13">SYNONYM</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#synonym" xlink:title="Synonym" shape="rect"> + <rect x="351" y="1" width="54" height="18" class="nonterminal"/> + <text class="nonterminal" x="355" y="13">Synonym</text></a><rect x="413" y="1" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="417" y="13">FOR</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="447" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="451" y="13">RelObjectNameList</text></a><path class="line" d="m17 10 h2 m0 0 h4 m42 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 m22 0 h4 m0 0 h4 m48 0 h4 m40 -21 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 m20 -21 h4 m56 0 h4 m0 0 h4 m54 0 h4 m0 0 h4 m26 0 h4 m0 0 h4 m94 0 h4 m3 0 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="#createsynonym" title="CreateSynonym" shape="rect">CreateSynonym</a></div> + <div>         ::= 'CREATE' ( 'OR' 'REPLACE' )? 'PUBLIC'? 'SYNONYM' <a href="#synonym" title="Synonym" shape="rect">Synonym</a> 'FOR' <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#singlestatement" title="singlestatement">singlestatement</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Synonym +====================================================================================================================== + + +.. 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="#relobjectnamelist" xlink:title="RelObjectNameList" shape="rect"> + <rect x="23" y="1" width="94" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">RelObjectNameList</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="#synonym" title="Synonym" shape="rect">Synonym</a>  ::= <a href="#relobjectnamelist" title="RelObjectNameList" shape="rect">RelObjectNameList</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createsynonym" title="createsynonym">createsynonym</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + UnsupportedStatement +====================================================================================================================== + + +.. 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"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#captureunsupportedstatementdeclaration" xlink:title="captureUnsupportedStatementDeclaration" shape="rect"> + <rect x="23" y="1" width="202" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="13">captureUnsupportedStatementDeclaration</text></a><path class="line" d="m17 10 h2 m0 0 h4 m202 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="#unsupportedstatement" title="UnsupportedStatement" shape="rect">UnsupportedStatement</a></div> + <div>         ::= <a href="#captureunsupportedstatementdeclaration" title="captureUnsupportedStatementDeclaration" shape="rect">captureUnsupportedStatementDeclaration</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" title="statement">statement</a></li><li><a href="#statements" title="statements">statements</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + WHITESPACE +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" height="105"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <rect x="43" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13"/> + <polygon points="43 38 46 29 86 29 89 38 86 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x9]</text> + <polygon points="43 66 46 57 86 57 89 66 86 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#xD]</text> + <polygon points="43 94 46 85 86 85 89 94 86 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#xA]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m8 0 h4 m0 0 h38 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 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 m46 0 h4 m23 -84 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="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a></div> + <div>         ::= [ #x9#xD#xA]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#dt-zone" title="dt-zone">dt-zone</a></li><li><a href="#op-concat" title="op-concat">op-concat</a></li><li><a href="#op-greaterthanequals" title="op-greaterthanequals">op-greaterthanequals</a></li><li><a href="#op-minorthanequals" title="op-minorthanequals">op-minorthanequals</a></li><li><a href="#op-notequalsbang" title="op-notequalsbang">op-notequalsbang</a></li><li><a href="#op-notequalsstandard" title="op-notequalsstandard">op-notequalsstandard</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + K_DATETIMELITERAL +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="159" 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">DATE</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="43" y="57" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">TIMESTAMP</text> + <rect x="43" y="85" width="72" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">TIMESTAMPTZ</text> + <path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h40 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 m30 0 h4 m0 0 h42 m-90 -10 v20 m100 0 v-20 m-100 20 v8 m100 0 v-8 m-100 8 q0 10 10 10 m80 0 q10 0 10 -10 m-90 10 h4 m62 0 h4 m0 0 h10 m-90 -10 v20 m100 0 v-20 m-100 20 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 m23 -84 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="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a></div> + <div>         ::= 'DATE'</div> + <div>           | 'TIME'</div> + <div>           | 'TIMESTAMP'</div> + <div>           | 'TIMESTAMPTZ'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#coldatatype" title="coldatatype">coldatatype</a></li><li><a href="#dt-zone" title="dt-zone">dt-zone</a></li><li><a href="#datetimeliteralexpression" title="datetimeliteralexpression">datetimeliteralexpression</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#relobjectnamewithoutvalue" title="relobjectnamewithoutvalue">relobjectnamewithoutvalue</a></li><li><a href="#reset" title="reset">reset</a></li><li><a href="#set" title="set">set</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + K_DATE_LITERAL +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="133" 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">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> + <rect x="43" y="141" width="46" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="153">SECOND</text> + <path class="line" d="m17 10 h2 m20 0 h4 m32 0 h4 m0 0 h14 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 m44 0 h4 m0 0 h2 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 m26 0 h4 m0 0 h20 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 m36 0 h4 m0 0 h10 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 m44 0 h4 m0 0 h2 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 -140 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="#k-date-literal" title="K_DATE_LITERAL" shape="rect">K_DATE_LITERAL</a></div> + <div>         ::= 'YEAR'</div> + <div>           | 'MONTH'</div> + <div>           | 'DAY'</div> + <div>           | 'HOUR'</div> + <div>           | 'MINUTE'</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="#coldatatype" title="coldatatype">coldatatype</a></li><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#intervalexpressionwithoutinterval" title="intervalexpressionwithoutinterval">intervalexpressionwithoutinterval</a></li><li><a href="#joinwindow" title="joinwindow">joinwindow</a></li><li><a href="#relobjectnamewithoutvalue" title="relobjectnamewithoutvalue">relobjectnamewithoutvalue</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + K_ISOLATION +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="107" height="105"> + <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">UR</text> + <rect x="43" y="29" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">RS</text> + <rect x="43" y="57" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">RR</text> + <rect x="43" y="85" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">CS</text> + <path class="line" d="m17 10 h2 m20 0 h4 m20 0 h4 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 m-38 -10 v20 m48 0 v-20 m-48 20 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 m-38 -10 v20 m48 0 v-20 m-48 20 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 -84 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="#k-isolation" title="K_ISOLATION" shape="rect">K_ISOLATION</a></div> + <div>         ::= 'UR'</div> + <div>           | 'RS'</div> + <div>           | 'RR'</div> + <div>           | 'CS'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#relobjectnamewithoutvalue" title="relobjectnamewithoutvalue">relobjectnamewithoutvalue</a></li><li><a href="#withisolation" title="withisolation">withisolation</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + K_NEXTVAL +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="309" height="75"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="43" y="13" width="48" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="25">NEXTVAL</text> + <rect x="43" y="55" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="67">NEXT</text> + <rect x="103" y="55" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="107" y="67"/> + <rect x="139" y="55" width="36" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="67">VALUE</text> + <rect x="223" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="227" y="25"/> + <rect x="259" y="13" width="26" height="18" class="terminal" rx="4"/> + <text class="terminal" x="263" y="25">FOR</text> + <path class="line" d="m17 22 h2 m20 0 h4 m48 0 h4 m0 0 h84 m-160 0 h20 m140 0 h20 m-180 0 q10 0 10 10 m160 0 q0 -10 10 -10 m-170 10 v22 m160 0 v-22 m-160 22 q0 10 10 10 m140 0 q10 0 10 -10 m-150 10 h4 m32 0 h4 m20 0 h4 m8 0 h4 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 h10 m0 0 h6 m20 21 h4 m36 0 h4 m40 -42 h4 m8 0 h4 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 h10 m0 0 h6 m20 21 h4 m26 0 h4 m3 0 h-3"/> + <polygon points="299 22 307 18 307 26"/> + <polygon points="299 22 291 18 291 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="#k-nextval" title="K_NEXTVAL" shape="rect">K_NEXTVAL</a></div> + <div>         ::= ( 'NEXTVAL' | 'NEXT' ' '+ 'VALUE' ) ' '+ 'FOR'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#nextvalexpression" title="nextvalexpression">nextvalexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + K_SELECT +====================================================================================================================== + + +.. 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="40" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="13">SELECT</text> + <rect x="43" y="29" width="24" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SEL</text> + <path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 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 m24 0 h4 m0 0 h16 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="#k-select" title="K_SELECT" shape="rect">K_SELECT</a> ::= 'SELECT'</div> + <div>           | 'SEL'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#relobjectnameext2" title="relobjectnameext2">relobjectnameext2</a></li><li><a href="#readgranttypes" title="readgranttypes">readgranttypes</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + K_TIME_KEY_EXPR +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="367" height="77"> + <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">CURRENT</text> + <rect x="101" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="13">_</text> + <rect x="121" y="43" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="125" y="55"/> + <rect x="197" y="1" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="13">TIMESTAMP</text> + <rect x="197" y="29" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="41">TIME</text> + <rect x="197" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="69">DATE</text> + <rect x="307" y="22" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="311" y="34">()</text> + <path class="line" d="m17 10 h2 m0 0 h4 m50 0 h4 m20 0 h4 m14 0 h4 m0 0 h34 m-76 0 h20 m56 0 h20 m-96 0 q10 0 10 10 m76 0 q0 -10 10 -10 m-86 10 v22 m76 0 v-22 m-76 22 q0 10 10 10 m56 0 q10 0 10 -10 m-46 10 h4 m8 0 h4 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 h10 m0 0 h6 m60 -21 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 m30 0 h4 m0 0 h32 m-80 -10 v20 m90 0 v-20 m-90 20 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m32 0 h4 m0 0 h30 m40 -56 h10 m0 0 h14 m-44 0 h20 m24 0 h20 m-64 0 q10 0 10 10 m44 0 q0 -10 10 -10 m-54 10 v1 m44 0 v-1 m-44 1 q0 10 10 10 m24 0 q10 0 10 -10 m-34 10 h4 m16 0 h4 m23 -21 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="#k-time-key-expr" title="K_TIME_KEY_EXPR" shape="rect">K_TIME_KEY_EXPR</a></div> + <div>         ::= 'CURRENT' ( '_' | ' '+ ) ( 'TIMESTAMP' | 'TIME' | 'DATE' ) '()'?</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#relobjectnamewithoutvalue" title="relobjectnamewithoutvalue">relobjectnamewithoutvalue</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + K_STRING_FUNCTION_NAME +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="149" height="133"> + <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">SUBSTR</text> + <rect x="43" y="29" width="62" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="41">SUBSTRING</text> + <rect x="43" y="57" width="32" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="69">TRIM</text> + <rect x="43" y="85" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">POSITION</text> + <rect x="43" y="113" width="50" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">OVERLAY</text> + <path class="line" d="m17 10 h2 m20 0 h4 m44 0 h4 m0 0 h18 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 m-80 -10 v20 m90 0 v-20 m-90 20 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m32 0 h4 m0 0 h30 m-80 -10 v20 m90 0 v-20 m-90 20 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m54 0 h4 m0 0 h8 m-80 -10 v20 m90 0 v-20 m-90 20 v8 m90 0 v-8 m-90 8 q0 10 10 10 m70 0 q10 0 10 -10 m-80 10 h4 m50 0 h4 m0 0 h12 m23 -112 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="#k-string-function-name" title="K_STRING_FUNCTION_NAME" shape="rect">K_STRING_FUNCTION_NAME</a></div> + <div>         ::= 'SUBSTR'</div> + <div>           | 'SUBSTRING'</div> + <div>           | 'TRIM'</div> + <div>           | 'POSITION'</div> + <div>           | 'OVERLAY'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#relobjectnamewithoutvalue" title="relobjectnamewithoutvalue">relobjectnamewithoutvalue</a></li><li><a href="#specialstringfunctionwithnamedparameters" title="specialstringfunctionwithnamedparameters">specialstringfunctionwithnamedparameters</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OP_GREATERTHANEQUALS +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="42"> + <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="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="65" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">WHITESPACE</text></a><rect x="165" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="34">=</text> + <path class="line" d="m17 31 h2 m0 0 h4 m14 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 m20 21 h4 m14 0 h4 m3 0 h-3"/> + <polygon points="193 31 201 27 201 35"/> + <polygon points="193 31 185 27 185 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="#op-greaterthanequals" title="OP_GREATERTHANEQUALS" shape="rect">OP_GREATERTHANEQUALS</a></div> + <div>         ::= '>' <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>* '='</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regularcondition" title="regularcondition">regularcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OP_MINORTHANEQUALS +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="42"> + <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="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="65" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">WHITESPACE</text></a><rect x="165" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="34">=</text> + <path class="line" d="m17 31 h2 m0 0 h4 m14 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 m20 21 h4 m14 0 h4 m3 0 h-3"/> + <polygon points="193 31 201 27 201 35"/> + <polygon points="193 31 185 27 185 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="#op-minorthanequals" title="OP_MINORTHANEQUALS" shape="rect">OP_MINORTHANEQUALS</a></div> + <div>         ::= '<' <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>* '='</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regularcondition" title="regularcondition">regularcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OP_NOTEQUALSSTANDARD +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" height="42"> + <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="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="65" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="69" y="13">WHITESPACE</text></a><rect x="165" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="169" y="34">></text> + <path class="line" d="m17 31 h2 m0 0 h4 m14 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 m20 21 h4 m14 0 h4 m3 0 h-3"/> + <polygon points="193 31 201 27 201 35"/> + <polygon points="193 31 185 27 185 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="#op-notequalsstandard" title="OP_NOTEQUALSSTANDARD" shape="rect">OP_NOTEQUALSSTANDARD</a></div> + <div>         ::= '<' <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>* '>'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regularcondition" title="regularcondition">regularcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OP_NOTEQUALSBANG +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="42"> + <polygon points="9 31 1 27 1 35"/> + <polygon points="17 31 9 27 9 35"/> + <rect x="23" y="22" width="10" 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="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="61" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="65" y="13">WHITESPACE</text></a><rect x="161" y="22" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="165" y="34">=</text> + <path class="line" d="m17 31 h2 m0 0 h4 m10 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 m20 21 h4 m14 0 h4 m3 0 h-3"/> + <polygon points="189 31 197 27 197 35"/> + <polygon points="189 31 181 27 181 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="#op-notequalsbang" title="OP_NOTEQUALSBANG" shape="rect">OP_NOTEQUALSBANG</a></div> + <div>         ::= '!' <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>* '='</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#regularcondition" title="regularcondition">regularcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + OP_CONCAT +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="199" height="42"> + <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="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="63" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="13">WHITESPACE</text></a><rect x="163" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="167" y="34">|</text> + <path class="line" d="m17 31 h2 m0 0 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 m20 21 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="189 31 197 27 197 35"/> + <polygon points="189 31 181 27 181 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="#op-concat" title="OP_CONCAT" shape="rect">OP_CONCAT</a></div> + <div>         ::= '|' <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>* '|'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#concatexpression" title="concatexpression">concatexpression</a></li><li><a href="#regularcondition" title="regularcondition">regularcondition</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + DT_ZONE +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="743" height="136"> + <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="#k-datetimeliteral" xlink:title="K_DATETIMELITERAL" shape="rect"> + <rect x="23" y="22" width="104" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">K_DATETIMELITERAL</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="155" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="13">WHITESPACE</text></a><rect x="275" y="43" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="279" y="55">(</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="295" y="43" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="299" y="55">S_LONG</text></a><rect x="351" y="43" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="355" y="55">)</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="411" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="415" y="13">WHITESPACE</text></a><rect x="531" y="22" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="535" y="34">WITH</text> + <rect x="531" y="50" width="54" height="18" class="terminal" rx="4"/> + <text class="terminal" x="535" y="62">WITHOUT</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="633" y="22" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="637" y="34">WHITESPACE</text></a><rect x="341" y="104" width="38" height="18" class="terminal" rx="4"/> + <text class="terminal" x="345" y="116">LOCAL</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="407" y="104" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="411" y="116">WHITESPACE</text></a><rect x="527" y="104" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="531" y="116">TIME</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#whitespace" xlink:title="WHITESPACE" shape="rect"> + <rect x="585" y="104" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="589" y="116">WHITESPACE</text></a><rect x="685" y="104" width="34" height="18" class="terminal" rx="4"/> + <text class="terminal" x="689" y="116">ZONE</text> + <path class="line" d="m17 31 h2 m0 0 h4 m104 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 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 m12 0 h4 m0 0 h4 m48 0 h4 m0 0 h4 m12 0 h4 m40 -21 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 m40 21 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 m40 -28 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 m22 21 l2 0 m2 0 l2 0 m2 0 l2 0 m-436 82 l2 0 m2 0 l2 0 m2 0 l2 0 m22 0 h4 m38 0 h4 m20 0 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 m-166 21 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 h10 m0 0 h156 m20 -21 h4 m30 0 h4 m20 0 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 m20 21 h4 m34 0 h4 m3 0 h-3"/> + <polygon points="733 113 741 109 741 117"/> + <polygon points="733 113 725 109 725 117"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#dt-zone" title="DT_ZONE" shape="rect">DT_ZONE</a>  ::= <a href="#k-datetimeliteral" title="K_DATETIMELITERAL" shape="rect">K_DATETIMELITERAL</a> <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>* ( '(' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ')' )? <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>* ( 'WITH' | 'WITHOUT' ) <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>+ ( 'LOCAL' <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>+ )? 'TIME' <a href="#whitespace" title="WHITESPACE" shape="rect">WHITESPACE</a>+ 'ZONE'</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#coldatatype" title="coldatatype">coldatatype</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + S_DOUBLE +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="503" height="266"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="63" y="22" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="67" y="34">S_LONG</text></a><rect x="139" y="1" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="13">.</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="155" y="1" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="159" y="13">S_LONG</text></a><rect x="251" y="22" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="255" y="34">e</text> + <rect x="251" y="50" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="255" y="62">E</text> + <rect x="311" y="43" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="315" y="55">+</text> + <polygon points="311 80 314 71 360 71 363 80 360 89 314 89" class="regexp"/> + <text class="regexp" x="322" y="83">[#x2D]</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="391" y="22" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="395" y="34">S_LONG</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="43" y="99" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="111">S_LONG</text></a><rect x="119" y="99" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="123" y="111">.</text> + <rect x="175" y="120" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="179" y="132">e</text> + <rect x="175" y="148" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="179" y="160">E</text> + <rect x="235" y="141" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="239" y="153">+</text> + <polygon points="235 178 238 169 284 169 287 178 284 187 238 187" class="regexp"/> + <text class="regexp" x="246" y="181">[#x2D]</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="315" y="120" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="319" y="132">S_LONG</text></a><rect x="139" y="197" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="209">e</text> + <rect x="139" y="225" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="143" y="237">E</text> + <rect x="199" y="218" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="203" y="230">+</text> + <polygon points="199 255 202 246 248 246 251 255 248 264 202 264" class="regexp"/> + <text class="regexp" x="210" y="258">[#x2D]</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#s-long" xlink:title="S_LONG" shape="rect"> + <rect x="279" y="197" width="48" height="18" class="nonterminal"/> + <text class="nonterminal" x="283" y="209">S_LONG</text></a><path class="line" d="m17 10 h2 m40 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 m8 0 h4 m0 0 h4 m48 0 h4 m20 0 h10 m0 0 h206 m-236 0 h20 m216 0 h20 m-256 0 q10 0 10 10 m236 0 q0 -10 10 -10 m-246 10 v1 m236 0 v-1 m-236 1 q0 10 10 10 m216 0 q10 0 10 -10 m-206 10 h4 m12 0 h4 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v8 m40 0 v-8 m-40 8 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m40 -28 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 m48 0 h4 m-424 -21 h20 m424 0 h20 m-464 0 q10 0 10 10 m444 0 q0 -10 10 -10 m-454 10 v78 m444 0 v-78 m-444 78 q0 10 10 10 m424 0 q10 0 10 -10 m-434 10 h4 m48 0 h4 m20 0 h4 m8 0 h4 m20 0 h10 m0 0 h206 m-236 0 h20 m216 0 h20 m-256 0 q10 0 10 10 m236 0 q0 -10 10 -10 m-246 10 v1 m236 0 v-1 m-236 1 q0 10 10 10 m216 0 q10 0 10 -10 m-206 10 h4 m12 0 h4 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v8 m40 0 v-8 m-40 8 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m40 -28 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 m48 0 h4 m-272 -21 h20 m272 0 h20 m-312 0 q10 0 10 10 m292 0 q0 -10 10 -10 m-302 10 v78 m292 0 v-78 m-292 78 q0 10 10 10 m272 0 q10 0 10 -10 m-262 10 h4 m12 0 h4 m-40 0 h20 m20 0 h20 m-60 0 q10 0 10 10 m40 0 q0 -10 10 -10 m-50 10 v8 m40 0 v-8 m-40 8 q0 10 10 10 m20 0 q10 0 10 -10 m-30 10 h4 m12 0 h4 m40 -28 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 m48 0 h4 m0 0 h56 m20 -98 h56 m23 -98 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="#s-double" title="S_DOUBLE" shape="rect">S_DOUBLE</a> ::= <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a>? '.' <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ( [eE] [+#x2D]? <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> )?</div> + <div>           | <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> ( '.' ( [eE] [+#x2D]? <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> )? | [eE] [+#x2D]? <a href="#s-long" title="S_LONG" shape="rect">S_LONG</a> )</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alist" title="alist">alist</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + S_LONG +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="123" 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="36" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="25">DIGIT</text></a><path class="line" d="m17 22 h2 m20 0 h4 m36 0 h4 m-64 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m44 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-44 0 h10 m0 0 h34 m23 21 h-3"/> + <polygon points="113 22 121 18 121 26"/> + <polygon points="113 22 105 18 105 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="#s-long" title="S_LONG" shape="rect">S_LONG</a>   ::= <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="#alist" title="alist">alist</a></li><li><a href="#altersession" title="altersession">altersession</a></li><li><a href="#coldatatype" title="coldatatype">coldatatype</a></li><li><a href="#columnsnameslistitem" title="columnsnameslistitem">columnsnameslistitem</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#dt-zone" title="dt-zone">dt-zone</a></li><li><a href="#fetch" title="fetch">fetch</a></li><li><a href="#first" title="first">first</a></li><li><a href="#funcargslistitem" title="funcargslistitem">funcargslistitem</a></li><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#joinwindow" title="joinwindow">joinwindow</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#ksqlwindowclause" title="ksqlwindowclause">ksqlwindowclause</a></li><li><a href="#numericbind" title="numericbind">numericbind</a></li><li><a href="#optimizefor" title="optimizefor">optimizefor</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#renametablestatement" title="renametablestatement">renametablestatement</a></li><li><a href="#s-double" title="s-double">s-double</a></li><li><a href="#sequenceparameters" title="sequenceparameters">sequenceparameters</a></li><li><a href="#simplejdbcparameter" title="simplejdbcparameter">simplejdbcparameter</a></li><li><a href="#skip" title="skip">skip</a></li><li><a href="#top" title="top">top</a></li><li><a href="#wait" title="wait">wait</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="#s-long" title="s-long">s-long</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + S_HEX +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="231" height="75"> + <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">x'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hex-value" xlink:title="HEX_VALUE" shape="rect"> + <rect x="85" y="13" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="89" y="25">HEX_VALUE</text></a><rect x="179" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="183" y="25">'</text> + <rect x="43" y="55" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="67">0x</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#hex-value" xlink:title="HEX_VALUE" shape="rect"> + <rect x="89" y="55" width="66" height="18" class="nonterminal"/> + <text class="nonterminal" x="93" y="67">HEX_VALUE</text></a><path class="line" d="m17 22 h2 m20 0 h4 m14 0 h4 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 m20 21 h4 m8 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 v22 m172 0 v-22 m-172 22 q0 10 10 10 m152 0 q10 0 10 -10 m-162 10 h4 m18 0 h4 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 m20 21 h12 m23 -42 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="#s-hex" title="S_HEX" shape="rect">S_HEX</a>    ::= "x'" <a href="#hex-value" title="HEX_VALUE" shape="rect">HEX_VALUE</a>+ "'"</div> + <div>           | '0x' <a href="#hex-value" title="HEX_VALUE" shape="rect">HEX_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="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + HEX_VALUE +====================================================================================================================== + + +.. 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 82 1 85 10 82 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[0-9]</text> + <polygon points="43 38 46 29 80 29 83 38 80 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[A-F]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m42 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 m40 0 h4 m0 0 h2 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="#hex-value" title="HEX_VALUE" shape="rect">HEX_VALUE</a></div> + <div>         ::= [0-9A-F]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#s-hex" title="s-hex">s-hex</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + LINE_COMMENT +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="267" height="61"> + <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> + <rect x="43" y="41" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="53">//</text> + <polygon points="129 22 132 13 200 13 203 22 200 31 132 31" class="regexp"/> + <text class="regexp" x="140" y="25">[^#xD#xA]</text> + <path class="line" d="m17 22 h2 m20 0 h4 m14 0 h4 m0 0 h4 m-46 0 h20 m26 0 h20 m-66 0 q10 0 10 10 m46 0 q0 -10 10 -10 m-56 10 v8 m46 0 v-8 m-46 8 q0 10 10 10 m26 0 q10 0 10 -10 m-36 10 h4 m18 0 h4 m60 -28 h4 m74 0 h4 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 h10 m0 0 h72 m-122 21 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 h10 m0 0 h112 m23 -21 h-3"/> + <polygon points="257 22 265 18 265 26"/> + <polygon points="257 22 249 18 249 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="#line-comment" title="LINE_COMMENT" shape="rect">LINE_COMMENT</a></div> + <div>         ::= ( '--' | '//' ) [^#xD#xA]*</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> + + +====================================================================================================================== + MULTI_LINE_COMMENT +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="433" height="99"> + <polygon points="9 76 1 72 1 80"/> + <polygon points="17 76 9 72 9 80"/> + <rect x="23" y="67" width="18" height="18" class="terminal" rx="4"/> + <text class="terminal" x="27" y="79">/*</text> + <polygon points="89 76 92 67 126 67 129 76 126 85 92 85" class="regexp"/> + <text class="regexp" x="100" y="79">[^*]</text> + <rect x="197" y="67" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="201" y="79">*</text> + <polygon points="237 34 240 25 274 25 277 34 274 43 240 43" class="regexp"/> + <text class="regexp" x="248" y="37">[^*]</text> + <polygon points="325 34 328 25 366 25 369 34 366 43 328 43" class="regexp"/> + <text class="regexp" x="336" y="37">[^*/]</text> + <rect x="397" y="67" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="401" y="79">/</text> + <path class="line" d="m17 76 h2 m0 0 h4 m18 0 h4 m40 0 h4 m40 0 h4 m-68 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m48 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-48 0 h10 m0 0 h38 m-88 21 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 h10 m0 0 h78 m40 -21 h4 m14 0 h4 m0 0 h158 m-200 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -22 q0 -10 10 -10 m180 42 l20 0 m-20 0 q10 0 10 -10 l0 -22 q0 -10 -10 -10 m-140 0 h4 m40 0 h4 m-68 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m48 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-48 0 h10 m0 0 h38 m-88 21 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 h10 m0 0 h78 m20 -21 h4 m44 0 h4 m-190 10 l0 -33 q0 -10 10 -10 m190 43 l0 -33 q0 -10 -10 -10 m-180 0 h10 m0 0 h170 m20 75 h4 m12 0 h4 m3 0 h-3"/> + <polygon points="423 76 431 72 431 80"/> + <polygon points="423 76 415 72 415 80"/></svg><table xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" style="width:100%"><tbody><tr><td style="width:67%" valign="top"><xhtml:p xmlns="http://www.w3.org/1999/xhtml"> + <xhtml:div class="ebnf"><xhtml:code> + <div><a href="#multi-line-comment" title="MULTI_LINE_COMMENT" shape="rect">MULTI_LINE_COMMENT</a></div> + <div>         ::= '/*' [^*]* '*' ( ( [^*/] [^*]* )? '*' )* '/'</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> + + +====================================================================================================================== + S_IDENTIFIER +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="209" 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="#letter" xlink:title="LETTER" shape="rect"> + <rect x="23" y="22" width="42" height="18" class="nonterminal"/> + <text class="nonterminal" x="27" y="34">LETTER</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#part-letter" xlink:title="PART_LETTER" shape="rect"> + <rect x="93" y="1" width="72" height="18" class="nonterminal"/> + <text class="nonterminal" x="97" y="13">PART_LETTER</text></a><path class="line" d="m17 31 h2 m0 0 h4 m42 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="199 31 207 27 207 35"/> + <polygon points="199 31 191 27 191 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="#s-identifier" title="S_IDENTIFIER" shape="rect">S_IDENTIFIER</a></div> + <div>         ::= <a href="#letter" title="LETTER" shape="rect">LETTER</a> <a href="#part-letter" title="PART_LETTER" shape="rect">PART_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="#alterexpression" title="alterexpression">alterexpression</a></li><li><a href="#altersession" title="altersession">altersession</a></li><li><a href="#coldatatype" title="coldatatype">coldatatype</a></li><li><a href="#createindex" title="createindex">createindex</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#createschema" title="createschema">createschema</a></li><li><a href="#drop" title="drop">drop</a></li><li><a href="#first" title="first">first</a></li><li><a href="#grant" title="grant">grant</a></li><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#joinwindow" title="joinwindow">joinwindow</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#ksqlwindowclause" title="ksqlwindowclause">ksqlwindowclause</a></li><li><a href="#keepexpression" title="keepexpression">keepexpression</a></li><li><a href="#pathspecification" title="pathspecification">pathspecification</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#purgestatement" title="purgestatement">purgestatement</a></li><li><a href="#relobjectnamewithoutvalue" title="relobjectnamewithoutvalue">relobjectnamewithoutvalue</a></li><li><a href="#rollbackstatement" title="rollbackstatement">rollbackstatement</a></li><li><a href="#savepointstatement" title="savepointstatement">savepointstatement</a></li><li><a href="#skip" title="skip">skip</a></li><li><a href="#top" title="top">top</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + LETTER +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" 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="#unicodeidentifierstart" xlink:title="UnicodeIdentifierStart" shape="rect"> + <rect x="43" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">UnicodeIdentifierStart</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nd" xlink:title="Nd" shape="rect"> + <rect x="43" y="29" width="22" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">Nd</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="85" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">_</text> + <polygon points="43 122 46 113 92 113 95 122 92 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x23]</text> + <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 m22 0 h4 m0 0 h84 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m14 0 h4 m0 0 h92 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m14 0 h4 m0 0 h92 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m52 0 h4 m0 0 h54 m23 -112 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="#letter" title="LETTER" shape="rect">LETTER</a>   ::= <a href="#unicodeidentifierstart" title="UnicodeIdentifierStart" shape="rect">UnicodeIdentifierStart</a></div> + <div>           | <a href="#nd" title="Nd" shape="rect">Nd</a></div> + <div>           | [$_#x23]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#s-identifier" title="s-identifier">s-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + PART_LETTER +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="203" 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="#unicodeidentifierstart" xlink:title="UnicodeIdentifierStart" shape="rect"> + <rect x="43" y="1" width="106" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">UnicodeIdentifierStart</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#unicodeidentifierextend" xlink:title="UnicodeIdentifierExtend" shape="rect"> + <rect x="43" y="29" width="116" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">UnicodeIdentifierExtend</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="85" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="97">_</text> + <rect x="43" y="113" width="16" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="125">@</text> + <polygon points="43 150 46 141 92 141 95 150 92 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x23]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m106 0 h4 m0 0 h10 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 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m14 0 h4 m0 0 h102 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m14 0 h4 m0 0 h102 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m16 0 h4 m0 0 h100 m-134 -10 v20 m144 0 v-20 m-144 20 v8 m144 0 v-8 m-144 8 q0 10 10 10 m124 0 q10 0 10 -10 m-134 10 h4 m52 0 h4 m0 0 h64 m23 -140 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="#part-letter" title="PART_LETTER" shape="rect">PART_LETTER</a></div> + <div>         ::= <a href="#unicodeidentifierstart" title="UnicodeIdentifierStart" shape="rect">UnicodeIdentifierStart</a></div> + <div>           | <a href="#unicodeidentifierextend" title="UnicodeIdentifierExtend" shape="rect">UnicodeIdentifierExtend</a></div> + <div>           | [$_@#x23]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#s-identifier" title="s-identifier">s-identifier</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + UnicodeIdentifierStart +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="139" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 92 1 95 10 92 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#xB7]</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#ll" xlink:title="Ll" shape="rect"> + <rect x="43" y="29" width="16" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">Ll</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lm" xlink:title="Lm" shape="rect"> + <rect x="43" y="57" width="24" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">Lm</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lo" xlink:title="Lo" shape="rect"> + <rect x="43" y="85" width="20" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">Lo</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lt" xlink:title="Lt" shape="rect"> + <rect x="43" y="113" width="18" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">Lt</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#lu" xlink:title="Lu" shape="rect"> + <rect x="43" y="141" width="20" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="153">Lu</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nl" xlink:title="Nl" shape="rect"> + <rect x="43" y="169" width="18" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="181">Nl</text></a><path class="line" d="m17 10 h2 m20 0 h4 m52 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 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 m24 0 h4 m0 0 h28 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 m20 0 h4 m0 0 h32 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 m18 0 h4 m0 0 h34 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 m20 0 h4 m0 0 h32 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 m18 0 h4 m0 0 h34 m23 -168 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="#unicodeidentifierstart" title="UnicodeIdentifierStart" shape="rect">UnicodeIdentifierStart</a></div> + <div>         ::= #xB7</div> + <div>           | <a href="#ll" title="Ll" shape="rect">Ll</a></div> + <div>           | <a href="#lm" title="Lm" shape="rect">Lm</a></div> + <div>           | <a href="#lo" title="Lo" shape="rect">Lo</a></div> + <div>           | <a href="#lt" title="Lt" shape="rect">Lt</a></div> + <div>           | <a href="#lu" title="Lu" shape="rect">Lu</a></div> + <div>           | <a href="#nl" title="Nl" shape="rect">Nl</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#letter" title="letter">letter</a></li><li><a href="#part-letter" title="part-letter">part-letter</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Ll +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="17269"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 80 1 83 10 80 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[a-z]</text> + <polygon points="43 38 46 29 92 29 95 38 92 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#xB5]</text> + <polygon points="43 66 46 57 118 57 121 66 118 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#xDF-#xF6]</text> + <polygon points="43 94 46 85 116 85 119 94 116 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#xF8-#xFF]</text> + <polygon points="43 122 46 113 98 113 101 122 98 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x101]</text> + <polygon points="43 150 46 141 98 141 101 150 98 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x103]</text> + <polygon points="43 178 46 169 98 169 101 178 98 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#x105]</text> + <polygon points="43 206 46 197 98 197 101 206 98 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#x107]</text> + <polygon points="43 234 46 225 98 225 101 234 98 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#x109]</text> + <polygon points="43 262 46 253 98 253 101 262 98 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#x10B]</text> + <polygon points="43 290 46 281 98 281 101 290 98 299 46 299" class="regexp"/> + <text class="regexp" x="54" y="293">[#x10D]</text> + <polygon points="43 318 46 309 96 309 99 318 96 327 46 327" class="regexp"/> + <text class="regexp" x="54" y="321">[#x10F]</text> + <polygon points="43 346 46 337 98 337 101 346 98 355 46 355" class="regexp"/> + <text class="regexp" x="54" y="349">[#x111]</text> + <polygon points="43 374 46 365 98 365 101 374 98 383 46 383" class="regexp"/> + <text class="regexp" x="54" y="377">[#x113]</text> + <polygon points="43 402 46 393 98 393 101 402 98 411 46 411" class="regexp"/> + <text class="regexp" x="54" y="405">[#x115]</text> + <polygon points="43 430 46 421 98 421 101 430 98 439 46 439" class="regexp"/> + <text class="regexp" x="54" y="433">[#x117]</text> + <polygon points="43 458 46 449 98 449 101 458 98 467 46 467" class="regexp"/> + <text class="regexp" x="54" y="461">[#x119]</text> + <polygon points="43 486 46 477 98 477 101 486 98 495 46 495" class="regexp"/> + <text class="regexp" x="54" y="489">[#x11B]</text> + <polygon points="43 514 46 505 98 505 101 514 98 523 46 523" class="regexp"/> + <text class="regexp" x="54" y="517">[#x11D]</text> + <polygon points="43 542 46 533 96 533 99 542 96 551 46 551" class="regexp"/> + <text class="regexp" x="54" y="545">[#x11F]</text> + <polygon points="43 570 46 561 98 561 101 570 98 579 46 579" class="regexp"/> + <text class="regexp" x="54" y="573">[#x121]</text> + <polygon points="43 598 46 589 98 589 101 598 98 607 46 607" class="regexp"/> + <text class="regexp" x="54" y="601">[#x123]</text> + <polygon points="43 626 46 617 98 617 101 626 98 635 46 635" class="regexp"/> + <text class="regexp" x="54" y="629">[#x125]</text> + <polygon points="43 654 46 645 98 645 101 654 98 663 46 663" class="regexp"/> + <text class="regexp" x="54" y="657">[#x127]</text> + <polygon points="43 682 46 673 98 673 101 682 98 691 46 691" class="regexp"/> + <text class="regexp" x="54" y="685">[#x129]</text> + <polygon points="43 710 46 701 98 701 101 710 98 719 46 719" class="regexp"/> + <text class="regexp" x="54" y="713">[#x12B]</text> + <polygon points="43 738 46 729 98 729 101 738 98 747 46 747" class="regexp"/> + <text class="regexp" x="54" y="741">[#x12D]</text> + <polygon points="43 766 46 757 96 757 99 766 96 775 46 775" class="regexp"/> + <text class="regexp" x="54" y="769">[#x12F]</text> + <polygon points="43 794 46 785 98 785 101 794 98 803 46 803" class="regexp"/> + <text class="regexp" x="54" y="797">[#x131]</text> + <polygon points="43 822 46 813 98 813 101 822 98 831 46 831" class="regexp"/> + <text class="regexp" x="54" y="825">[#x133]</text> + <polygon points="43 850 46 841 98 841 101 850 98 859 46 859" class="regexp"/> + <text class="regexp" x="54" y="853">[#x135]</text> + <polygon points="43 878 46 869 132 869 135 878 132 887 46 887" class="regexp"/> + <text class="regexp" x="54" y="881">[#x137-#x138]</text> + <polygon points="43 906 46 897 98 897 101 906 98 915 46 915" class="regexp"/> + <text class="regexp" x="54" y="909">[#x13A]</text> + <polygon points="43 934 46 925 98 925 101 934 98 943 46 943" class="regexp"/> + <text class="regexp" x="54" y="937">[#x13C]</text> + <polygon points="43 962 46 953 98 953 101 962 98 971 46 971" class="regexp"/> + <text class="regexp" x="54" y="965">[#x13E]</text> + <polygon points="43 990 46 981 98 981 101 990 98 999 46 999" class="regexp"/> + <text class="regexp" x="54" y="993">[#x140]</text> + <polygon points="43 1018 46 1009 98 1009 101 1018 98 1027 46 1027" class="regexp"/> + <text class="regexp" x="54" y="1021">[#x142]</text> + <polygon points="43 1046 46 1037 98 1037 101 1046 98 1055 46 1055" class="regexp"/> + <text class="regexp" x="54" y="1049">[#x144]</text> + <polygon points="43 1074 46 1065 98 1065 101 1074 98 1083 46 1083" class="regexp"/> + <text class="regexp" x="54" y="1077">[#x146]</text> + <polygon points="43 1102 46 1093 132 1093 135 1102 132 1111 46 1111" class="regexp"/> + <text class="regexp" x="54" y="1105">[#x148-#x149]</text> + <polygon points="43 1130 46 1121 98 1121 101 1130 98 1139 46 1139" class="regexp"/> + <text class="regexp" x="54" y="1133">[#x14B]</text> + <polygon points="43 1158 46 1149 98 1149 101 1158 98 1167 46 1167" class="regexp"/> + <text class="regexp" x="54" y="1161">[#x14D]</text> + <polygon points="43 1186 46 1177 96 1177 99 1186 96 1195 46 1195" class="regexp"/> + <text class="regexp" x="54" y="1189">[#x14F]</text> + <polygon points="43 1214 46 1205 98 1205 101 1214 98 1223 46 1223" class="regexp"/> + <text class="regexp" x="54" y="1217">[#x151]</text> + <polygon points="43 1242 46 1233 98 1233 101 1242 98 1251 46 1251" class="regexp"/> + <text class="regexp" x="54" y="1245">[#x153]</text> + <polygon points="43 1270 46 1261 98 1261 101 1270 98 1279 46 1279" class="regexp"/> + <text class="regexp" x="54" y="1273">[#x155]</text> + <polygon points="43 1298 46 1289 98 1289 101 1298 98 1307 46 1307" class="regexp"/> + <text class="regexp" x="54" y="1301">[#x157]</text> + <polygon points="43 1326 46 1317 98 1317 101 1326 98 1335 46 1335" class="regexp"/> + <text class="regexp" x="54" y="1329">[#x159]</text> + <polygon points="43 1354 46 1345 98 1345 101 1354 98 1363 46 1363" class="regexp"/> + <text class="regexp" x="54" y="1357">[#x15B]</text> + <polygon points="43 1382 46 1373 98 1373 101 1382 98 1391 46 1391" class="regexp"/> + <text class="regexp" x="54" y="1385">[#x15D]</text> + <polygon points="43 1410 46 1401 96 1401 99 1410 96 1419 46 1419" class="regexp"/> + <text class="regexp" x="54" y="1413">[#x15F]</text> + <polygon points="43 1438 46 1429 98 1429 101 1438 98 1447 46 1447" class="regexp"/> + <text class="regexp" x="54" y="1441">[#x161]</text> + <polygon points="43 1466 46 1457 98 1457 101 1466 98 1475 46 1475" class="regexp"/> + <text class="regexp" x="54" y="1469">[#x163]</text> + <polygon points="43 1494 46 1485 98 1485 101 1494 98 1503 46 1503" class="regexp"/> + <text class="regexp" x="54" y="1497">[#x165]</text> + <polygon points="43 1522 46 1513 98 1513 101 1522 98 1531 46 1531" class="regexp"/> + <text class="regexp" x="54" y="1525">[#x167]</text> + <polygon points="43 1550 46 1541 98 1541 101 1550 98 1559 46 1559" class="regexp"/> + <text class="regexp" x="54" y="1553">[#x169]</text> + <polygon points="43 1578 46 1569 98 1569 101 1578 98 1587 46 1587" class="regexp"/> + <text class="regexp" x="54" y="1581">[#x16B]</text> + <polygon points="43 1606 46 1597 98 1597 101 1606 98 1615 46 1615" class="regexp"/> + <text class="regexp" x="54" y="1609">[#x16D]</text> + <polygon points="43 1634 46 1625 96 1625 99 1634 96 1643 46 1643" class="regexp"/> + <text class="regexp" x="54" y="1637">[#x16F]</text> + <polygon points="43 1662 46 1653 98 1653 101 1662 98 1671 46 1671" class="regexp"/> + <text class="regexp" x="54" y="1665">[#x171]</text> + <polygon points="43 1690 46 1681 98 1681 101 1690 98 1699 46 1699" class="regexp"/> + <text class="regexp" x="54" y="1693">[#x173]</text> + <polygon points="43 1718 46 1709 98 1709 101 1718 98 1727 46 1727" class="regexp"/> + <text class="regexp" x="54" y="1721">[#x175]</text> + <polygon points="43 1746 46 1737 98 1737 101 1746 98 1755 46 1755" class="regexp"/> + <text class="regexp" x="54" y="1749">[#x177]</text> + <polygon points="43 1774 46 1765 98 1765 101 1774 98 1783 46 1783" class="regexp"/> + <text class="regexp" x="54" y="1777">[#x17A]</text> + <polygon points="43 1802 46 1793 98 1793 101 1802 98 1811 46 1811" class="regexp"/> + <text class="regexp" x="54" y="1805">[#x17C]</text> + <polygon points="43 1830 46 1821 132 1821 135 1830 132 1839 46 1839" class="regexp"/> + <text class="regexp" x="54" y="1833">[#x17E-#x180]</text> + <polygon points="43 1858 46 1849 98 1849 101 1858 98 1867 46 1867" class="regexp"/> + <text class="regexp" x="54" y="1861">[#x183]</text> + <polygon points="43 1886 46 1877 98 1877 101 1886 98 1895 46 1895" class="regexp"/> + <text class="regexp" x="54" y="1889">[#x185]</text> + <polygon points="43 1914 46 1905 98 1905 101 1914 98 1923 46 1923" class="regexp"/> + <text class="regexp" x="54" y="1917">[#x188]</text> + <polygon points="43 1942 46 1933 134 1933 137 1942 134 1951 46 1951" class="regexp"/> + <text class="regexp" x="54" y="1945">[#x18C-#x18D]</text> + <polygon points="43 1970 46 1961 98 1961 101 1970 98 1979 46 1979" class="regexp"/> + <text class="regexp" x="54" y="1973">[#x192]</text> + <polygon points="43 1998 46 1989 98 1989 101 1998 98 2007 46 2007" class="regexp"/> + <text class="regexp" x="54" y="2001">[#x195]</text> + <polygon points="43 2026 46 2017 132 2017 135 2026 132 2035 46 2035" class="regexp"/> + <text class="regexp" x="54" y="2029">[#x199-#x19B]</text> + <polygon points="43 2054 46 2045 98 2045 101 2054 98 2063 46 2063" class="regexp"/> + <text class="regexp" x="54" y="2057">[#x19E]</text> + <polygon points="43 2082 46 2073 98 2073 101 2082 98 2091 46 2091" class="regexp"/> + <text class="regexp" x="54" y="2085">[#x1A1]</text> + <polygon points="43 2110 46 2101 98 2101 101 2110 98 2119 46 2119" class="regexp"/> + <text class="regexp" x="54" y="2113">[#x1A3]</text> + <polygon points="43 2138 46 2129 98 2129 101 2138 98 2147 46 2147" class="regexp"/> + <text class="regexp" x="54" y="2141">[#x1A5]</text> + <polygon points="43 2166 46 2157 98 2157 101 2166 98 2175 46 2175" class="regexp"/> + <text class="regexp" x="54" y="2169">[#x1A8]</text> + <polygon points="43 2194 46 2185 132 2185 135 2194 132 2203 46 2203" class="regexp"/> + <text class="regexp" x="54" y="2197">[#x1AA-#x1AB]</text> + <polygon points="43 2222 46 2213 98 2213 101 2222 98 2231 46 2231" class="regexp"/> + <text class="regexp" x="54" y="2225">[#x1AD]</text> + <polygon points="43 2250 46 2241 98 2241 101 2250 98 2259 46 2259" class="regexp"/> + <text class="regexp" x="54" y="2253">[#x1B0]</text> + <polygon points="43 2278 46 2269 98 2269 101 2278 98 2287 46 2287" class="regexp"/> + <text class="regexp" x="54" y="2281">[#x1B4]</text> + <polygon points="43 2306 46 2297 98 2297 101 2306 98 2315 46 2315" class="regexp"/> + <text class="regexp" x="54" y="2309">[#x1B6]</text> + <polygon points="43 2334 46 2325 132 2325 135 2334 132 2343 46 2343" class="regexp"/> + <text class="regexp" x="54" y="2337">[#x1B9-#x1BA]</text> + <polygon points="43 2362 46 2353 132 2353 135 2362 132 2371 46 2371" class="regexp"/> + <text class="regexp" x="54" y="2365">[#x1BD-#x1BF]</text> + <polygon points="43 2390 46 2381 98 2381 101 2390 98 2399 46 2399" class="regexp"/> + <text class="regexp" x="54" y="2393">[#x1C6]</text> + <polygon points="43 2418 46 2409 98 2409 101 2418 98 2427 46 2427" class="regexp"/> + <text class="regexp" x="54" y="2421">[#x1C9]</text> + <polygon points="43 2446 46 2437 100 2437 103 2446 100 2455 46 2455" class="regexp"/> + <text class="regexp" x="54" y="2449">[#x1CC]</text> + <polygon points="43 2474 46 2465 98 2465 101 2474 98 2483 46 2483" class="regexp"/> + <text class="regexp" x="54" y="2477">[#x1CE]</text> + <polygon points="43 2502 46 2493 98 2493 101 2502 98 2511 46 2511" class="regexp"/> + <text class="regexp" x="54" y="2505">[#x1D0]</text> + <polygon points="43 2530 46 2521 98 2521 101 2530 98 2539 46 2539" class="regexp"/> + <text class="regexp" x="54" y="2533">[#x1D2]</text> + <polygon points="43 2558 46 2549 98 2549 101 2558 98 2567 46 2567" class="regexp"/> + <text class="regexp" x="54" y="2561">[#x1D4]</text> + <polygon points="43 2586 46 2577 98 2577 101 2586 98 2595 46 2595" class="regexp"/> + <text class="regexp" x="54" y="2589">[#x1D6]</text> + <polygon points="43 2614 46 2605 98 2605 101 2614 98 2623 46 2623" class="regexp"/> + <text class="regexp" x="54" y="2617">[#x1D8]</text> + <polygon points="43 2642 46 2633 98 2633 101 2642 98 2651 46 2651" class="regexp"/> + <text class="regexp" x="54" y="2645">[#x1DA]</text> + <polygon points="43 2670 46 2661 136 2661 139 2670 136 2679 46 2679" class="regexp"/> + <text class="regexp" x="54" y="2673">[#x1DC-#x1DD]</text> + <polygon points="43 2698 46 2689 98 2689 101 2698 98 2707 46 2707" class="regexp"/> + <text class="regexp" x="54" y="2701">[#x1DF]</text> + <polygon points="43 2726 46 2717 98 2717 101 2726 98 2735 46 2735" class="regexp"/> + <text class="regexp" x="54" y="2729">[#x1E1]</text> + <polygon points="43 2754 46 2745 98 2745 101 2754 98 2763 46 2763" class="regexp"/> + <text class="regexp" x="54" y="2757">[#x1E3]</text> + <polygon points="43 2782 46 2773 98 2773 101 2782 98 2791 46 2791" class="regexp"/> + <text class="regexp" x="54" y="2785">[#x1E5]</text> + <polygon points="43 2810 46 2801 98 2801 101 2810 98 2819 46 2819" class="regexp"/> + <text class="regexp" x="54" y="2813">[#x1E7]</text> + <polygon points="43 2838 46 2829 98 2829 101 2838 98 2847 46 2847" class="regexp"/> + <text class="regexp" x="54" y="2841">[#x1E9]</text> + <polygon points="43 2866 46 2857 98 2857 101 2866 98 2875 46 2875" class="regexp"/> + <text class="regexp" x="54" y="2869">[#x1EB]</text> + <polygon points="43 2894 46 2885 98 2885 101 2894 98 2903 46 2903" class="regexp"/> + <text class="regexp" x="54" y="2897">[#x1ED]</text> + <polygon points="43 2922 46 2913 130 2913 133 2922 130 2931 46 2931" class="regexp"/> + <text class="regexp" x="54" y="2925">[#x1EF-#x1F0]</text> + <polygon points="43 2950 46 2941 96 2941 99 2950 96 2959 46 2959" class="regexp"/> + <text class="regexp" x="54" y="2953">[#x1F3]</text> + <polygon points="43 2978 46 2969 96 2969 99 2978 96 2987 46 2987" class="regexp"/> + <text class="regexp" x="54" y="2981">[#x1F5]</text> + <polygon points="43 3006 46 2997 96 2997 99 3006 96 3015 46 3015" class="regexp"/> + <text class="regexp" x="54" y="3009">[#x1F9]</text> + <polygon points="43 3034 46 3025 96 3025 99 3034 96 3043 46 3043" class="regexp"/> + <text class="regexp" x="54" y="3037">[#x1FB]</text> + <polygon points="43 3062 46 3053 98 3053 101 3062 98 3071 46 3071" class="regexp"/> + <text class="regexp" x="54" y="3065">[#x1FD]</text> + <polygon points="43 3090 46 3081 96 3081 99 3090 96 3099 46 3099" class="regexp"/> + <text class="regexp" x="54" y="3093">[#x1FF]</text> + <polygon points="43 3118 46 3109 98 3109 101 3118 98 3127 46 3127" class="regexp"/> + <text class="regexp" x="54" y="3121">[#x201]</text> + <polygon points="43 3146 46 3137 98 3137 101 3146 98 3155 46 3155" class="regexp"/> + <text class="regexp" x="54" y="3149">[#x203]</text> + <polygon points="43 3174 46 3165 98 3165 101 3174 98 3183 46 3183" class="regexp"/> + <text class="regexp" x="54" y="3177">[#x205]</text> + <polygon points="43 3202 46 3193 98 3193 101 3202 98 3211 46 3211" class="regexp"/> + <text class="regexp" x="54" y="3205">[#x207]</text> + <polygon points="43 3230 46 3221 98 3221 101 3230 98 3239 46 3239" class="regexp"/> + <text class="regexp" x="54" y="3233">[#x209]</text> + <polygon points="43 3258 46 3249 98 3249 101 3258 98 3267 46 3267" class="regexp"/> + <text class="regexp" x="54" y="3261">[#x20B]</text> + <polygon points="43 3286 46 3277 98 3277 101 3286 98 3295 46 3295" class="regexp"/> + <text class="regexp" x="54" y="3289">[#x20D]</text> + <polygon points="43 3314 46 3305 96 3305 99 3314 96 3323 46 3323" class="regexp"/> + <text class="regexp" x="54" y="3317">[#x20F]</text> + <polygon points="43 3342 46 3333 98 3333 101 3342 98 3351 46 3351" class="regexp"/> + <text class="regexp" x="54" y="3345">[#x211]</text> + <polygon points="43 3370 46 3361 98 3361 101 3370 98 3379 46 3379" class="regexp"/> + <text class="regexp" x="54" y="3373">[#x213]</text> + <polygon points="43 3398 46 3389 98 3389 101 3398 98 3407 46 3407" class="regexp"/> + <text class="regexp" x="54" y="3401">[#x215]</text> + <polygon points="43 3426 46 3417 98 3417 101 3426 98 3435 46 3435" class="regexp"/> + <text class="regexp" x="54" y="3429">[#x217]</text> + <polygon points="43 3454 46 3445 98 3445 101 3454 98 3463 46 3463" class="regexp"/> + <text class="regexp" x="54" y="3457">[#x219]</text> + <polygon points="43 3482 46 3473 98 3473 101 3482 98 3491 46 3491" class="regexp"/> + <text class="regexp" x="54" y="3485">[#x21B]</text> + <polygon points="43 3510 46 3501 98 3501 101 3510 98 3519 46 3519" class="regexp"/> + <text class="regexp" x="54" y="3513">[#x21D]</text> + <polygon points="43 3538 46 3529 96 3529 99 3538 96 3547 46 3547" class="regexp"/> + <text class="regexp" x="54" y="3541">[#x21F]</text> + <polygon points="43 3566 46 3557 98 3557 101 3566 98 3575 46 3575" class="regexp"/> + <text class="regexp" x="54" y="3569">[#x221]</text> + <polygon points="43 3594 46 3585 98 3585 101 3594 98 3603 46 3603" class="regexp"/> + <text class="regexp" x="54" y="3597">[#x223]</text> + <polygon points="43 3622 46 3613 98 3613 101 3622 98 3631 46 3631" class="regexp"/> + <text class="regexp" x="54" y="3625">[#x225]</text> + <polygon points="43 3650 46 3641 98 3641 101 3650 98 3659 46 3659" class="regexp"/> + <text class="regexp" x="54" y="3653">[#x227]</text> + <polygon points="43 3678 46 3669 98 3669 101 3678 98 3687 46 3687" class="regexp"/> + <text class="regexp" x="54" y="3681">[#x229]</text> + <polygon points="43 3706 46 3697 98 3697 101 3706 98 3715 46 3715" class="regexp"/> + <text class="regexp" x="54" y="3709">[#x22B]</text> + <polygon points="43 3734 46 3725 98 3725 101 3734 98 3743 46 3743" class="regexp"/> + <text class="regexp" x="54" y="3737">[#x22D]</text> + <polygon points="43 3762 46 3753 96 3753 99 3762 96 3771 46 3771" class="regexp"/> + <text class="regexp" x="54" y="3765">[#x22F]</text> + <polygon points="43 3790 46 3781 98 3781 101 3790 98 3799 46 3799" class="regexp"/> + <text class="regexp" x="54" y="3793">[#x231]</text> + <polygon points="43 3818 46 3809 132 3809 135 3818 132 3827 46 3827" class="regexp"/> + <text class="regexp" x="54" y="3821">[#x233-#x239]</text> + <polygon points="43 3846 46 3837 98 3837 101 3846 98 3855 46 3855" class="regexp"/> + <text class="regexp" x="54" y="3849">[#x23C]</text> + <polygon points="43 3874 46 3865 130 3865 133 3874 130 3883 46 3883" class="regexp"/> + <text class="regexp" x="54" y="3877">[#x23F-#x240]</text> + <polygon points="43 3902 46 3893 98 3893 101 3902 98 3911 46 3911" class="regexp"/> + <text class="regexp" x="54" y="3905">[#x242]</text> + <polygon points="43 3930 46 3921 98 3921 101 3930 98 3939 46 3939" class="regexp"/> + <text class="regexp" x="54" y="3933">[#x247]</text> + <polygon points="43 3958 46 3949 98 3949 101 3958 98 3967 46 3967" class="regexp"/> + <text class="regexp" x="54" y="3961">[#x249]</text> + <polygon points="43 3986 46 3977 98 3977 101 3986 98 3995 46 3995" class="regexp"/> + <text class="regexp" x="54" y="3989">[#x24B]</text> + <polygon points="43 4014 46 4005 98 4005 101 4014 98 4023 46 4023" class="regexp"/> + <text class="regexp" x="54" y="4017">[#x24D]</text> + <polygon points="43 4042 46 4033 130 4033 133 4042 130 4051 46 4051" class="regexp"/> + <text class="regexp" x="54" y="4045">[#x24F-#x293]</text> + <polygon points="43 4070 46 4061 130 4061 133 4070 130 4079 46 4079" class="regexp"/> + <text class="regexp" x="54" y="4073">[#x295-#x2AF]</text> + <polygon points="43 4098 46 4089 98 4089 101 4098 98 4107 46 4107" class="regexp"/> + <text class="regexp" x="54" y="4101">[#x371]</text> + <polygon points="43 4126 46 4117 98 4117 101 4126 98 4135 46 4135" class="regexp"/> + <text class="regexp" x="54" y="4129">[#x373]</text> + <polygon points="43 4154 46 4145 98 4145 101 4154 98 4163 46 4163" class="regexp"/> + <text class="regexp" x="54" y="4157">[#x377]</text> + <polygon points="43 4182 46 4173 132 4173 135 4182 132 4191 46 4191" class="regexp"/> + <text class="regexp" x="54" y="4185">[#x37B-#x37D]</text> + <polygon points="43 4210 46 4201 98 4201 101 4210 98 4219 46 4219" class="regexp"/> + <text class="regexp" x="54" y="4213">[#x390]</text> + <polygon points="43 4238 46 4229 134 4229 137 4238 134 4247 46 4247" class="regexp"/> + <text class="regexp" x="54" y="4241">[#x3AC-#x3CE]</text> + <polygon points="43 4266 46 4257 134 4257 137 4266 134 4275 46 4275" class="regexp"/> + <text class="regexp" x="54" y="4269">[#x3D0-#x3D1]</text> + <polygon points="43 4294 46 4285 134 4285 137 4294 134 4303 46 4303" class="regexp"/> + <text class="regexp" x="54" y="4297">[#x3D5-#x3D7]</text> + <polygon points="43 4322 46 4313 98 4313 101 4322 98 4331 46 4331" class="regexp"/> + <text class="regexp" x="54" y="4325">[#x3D9]</text> + <polygon points="43 4350 46 4341 98 4341 101 4350 98 4359 46 4359" class="regexp"/> + <text class="regexp" x="54" y="4353">[#x3DB]</text> + <polygon points="43 4378 46 4369 100 4369 103 4378 100 4387 46 4387" class="regexp"/> + <text class="regexp" x="54" y="4381">[#x3DD]</text> + <polygon points="43 4406 46 4397 98 4397 101 4406 98 4415 46 4415" class="regexp"/> + <text class="regexp" x="54" y="4409">[#x3DF]</text> + <polygon points="43 4434 46 4425 98 4425 101 4434 98 4443 46 4443" class="regexp"/> + <text class="regexp" x="54" y="4437">[#x3E1]</text> + <polygon points="43 4462 46 4453 98 4453 101 4462 98 4471 46 4471" class="regexp"/> + <text class="regexp" x="54" y="4465">[#x3E3]</text> + <polygon points="43 4490 46 4481 98 4481 101 4490 98 4499 46 4499" class="regexp"/> + <text class="regexp" x="54" y="4493">[#x3E5]</text> + <polygon points="43 4518 46 4509 98 4509 101 4518 98 4527 46 4527" class="regexp"/> + <text class="regexp" x="54" y="4521">[#x3E7]</text> + <polygon points="43 4546 46 4537 98 4537 101 4546 98 4555 46 4555" class="regexp"/> + <text class="regexp" x="54" y="4549">[#x3E9]</text> + <polygon points="43 4574 46 4565 98 4565 101 4574 98 4583 46 4583" class="regexp"/> + <text class="regexp" x="54" y="4577">[#x3EB]</text> + <polygon points="43 4602 46 4593 98 4593 101 4602 98 4611 46 4611" class="regexp"/> + <text class="regexp" x="54" y="4605">[#x3ED]</text> + <polygon points="43 4630 46 4621 130 4621 133 4630 130 4639 46 4639" class="regexp"/> + <text class="regexp" x="54" y="4633">[#x3EF-#x3F3]</text> + <polygon points="43 4658 46 4649 96 4649 99 4658 96 4667 46 4667" class="regexp"/> + <text class="regexp" x="54" y="4661">[#x3F5]</text> + <polygon points="43 4686 46 4677 96 4677 99 4686 96 4695 46 4695" class="regexp"/> + <text class="regexp" x="54" y="4689">[#x3F8]</text> + <polygon points="43 4714 46 4705 130 4705 133 4714 130 4723 46 4723" class="regexp"/> + <text class="regexp" x="54" y="4717">[#x3FB-#x3FC]</text> + <polygon points="43 4742 46 4733 130 4733 133 4742 130 4751 46 4751" class="regexp"/> + <text class="regexp" x="54" y="4745">[#x430-#x45F]</text> + <polygon points="43 4770 46 4761 98 4761 101 4770 98 4779 46 4779" class="regexp"/> + <text class="regexp" x="54" y="4773">[#x461]</text> + <polygon points="43 4798 46 4789 98 4789 101 4798 98 4807 46 4807" class="regexp"/> + <text class="regexp" x="54" y="4801">[#x463]</text> + <polygon points="43 4826 46 4817 98 4817 101 4826 98 4835 46 4835" class="regexp"/> + <text class="regexp" x="54" y="4829">[#x465]</text> + <polygon points="43 4854 46 4845 98 4845 101 4854 98 4863 46 4863" class="regexp"/> + <text class="regexp" x="54" y="4857">[#x467]</text> + <polygon points="43 4882 46 4873 98 4873 101 4882 98 4891 46 4891" class="regexp"/> + <text class="regexp" x="54" y="4885">[#x469]</text> + <polygon points="43 4910 46 4901 98 4901 101 4910 98 4919 46 4919" class="regexp"/> + <text class="regexp" x="54" y="4913">[#x46B]</text> + <polygon points="43 4938 46 4929 98 4929 101 4938 98 4947 46 4947" class="regexp"/> + <text class="regexp" x="54" y="4941">[#x46D]</text> + <polygon points="43 4966 46 4957 96 4957 99 4966 96 4975 46 4975" class="regexp"/> + <text class="regexp" x="54" y="4969">[#x46F]</text> + <polygon points="43 4994 46 4985 98 4985 101 4994 98 5003 46 5003" class="regexp"/> + <text class="regexp" x="54" y="4997">[#x471]</text> + <polygon points="43 5022 46 5013 98 5013 101 5022 98 5031 46 5031" class="regexp"/> + <text class="regexp" x="54" y="5025">[#x473]</text> + <polygon points="43 5050 46 5041 98 5041 101 5050 98 5059 46 5059" class="regexp"/> + <text class="regexp" x="54" y="5053">[#x475]</text> + <polygon points="43 5078 46 5069 98 5069 101 5078 98 5087 46 5087" class="regexp"/> + <text class="regexp" x="54" y="5081">[#x477]</text> + <polygon points="43 5106 46 5097 98 5097 101 5106 98 5115 46 5115" class="regexp"/> + <text class="regexp" x="54" y="5109">[#x479]</text> + <polygon points="43 5134 46 5125 98 5125 101 5134 98 5143 46 5143" class="regexp"/> + <text class="regexp" x="54" y="5137">[#x47B]</text> + <polygon points="43 5162 46 5153 98 5153 101 5162 98 5171 46 5171" class="regexp"/> + <text class="regexp" x="54" y="5165">[#x47D]</text> + <polygon points="43 5190 46 5181 96 5181 99 5190 96 5199 46 5199" class="regexp"/> + <text class="regexp" x="54" y="5193">[#x47F]</text> + <polygon points="43 5218 46 5209 98 5209 101 5218 98 5227 46 5227" class="regexp"/> + <text class="regexp" x="54" y="5221">[#x481]</text> + <polygon points="43 5246 46 5237 98 5237 101 5246 98 5255 46 5255" class="regexp"/> + <text class="regexp" x="54" y="5249">[#x48B]</text> + <polygon points="43 5274 46 5265 98 5265 101 5274 98 5283 46 5283" class="regexp"/> + <text class="regexp" x="54" y="5277">[#x48D]</text> + <polygon points="43 5302 46 5293 96 5293 99 5302 96 5311 46 5311" class="regexp"/> + <text class="regexp" x="54" y="5305">[#x48F]</text> + <polygon points="43 5330 46 5321 98 5321 101 5330 98 5339 46 5339" class="regexp"/> + <text class="regexp" x="54" y="5333">[#x491]</text> + <polygon points="43 5358 46 5349 98 5349 101 5358 98 5367 46 5367" class="regexp"/> + <text class="regexp" x="54" y="5361">[#x493]</text> + <polygon points="43 5386 46 5377 98 5377 101 5386 98 5395 46 5395" class="regexp"/> + <text class="regexp" x="54" y="5389">[#x495]</text> + <polygon points="43 5414 46 5405 98 5405 101 5414 98 5423 46 5423" class="regexp"/> + <text class="regexp" x="54" y="5417">[#x497]</text> + <polygon points="43 5442 46 5433 98 5433 101 5442 98 5451 46 5451" class="regexp"/> + <text class="regexp" x="54" y="5445">[#x499]</text> + <polygon points="43 5470 46 5461 98 5461 101 5470 98 5479 46 5479" class="regexp"/> + <text class="regexp" x="54" y="5473">[#x49B]</text> + <polygon points="43 5498 46 5489 98 5489 101 5498 98 5507 46 5507" class="regexp"/> + <text class="regexp" x="54" y="5501">[#x49D]</text> + <polygon points="43 5526 46 5517 96 5517 99 5526 96 5535 46 5535" class="regexp"/> + <text class="regexp" x="54" y="5529">[#x49F]</text> + <polygon points="43 5554 46 5545 98 5545 101 5554 98 5563 46 5563" class="regexp"/> + <text class="regexp" x="54" y="5557">[#x4A1]</text> + <polygon points="43 5582 46 5573 98 5573 101 5582 98 5591 46 5591" class="regexp"/> + <text class="regexp" x="54" y="5585">[#x4A3]</text> + <polygon points="43 5610 46 5601 98 5601 101 5610 98 5619 46 5619" class="regexp"/> + <text class="regexp" x="54" y="5613">[#x4A5]</text> + <polygon points="43 5638 46 5629 98 5629 101 5638 98 5647 46 5647" class="regexp"/> + <text class="regexp" x="54" y="5641">[#x4A7]</text> + <polygon points="43 5666 46 5657 98 5657 101 5666 98 5675 46 5675" class="regexp"/> + <text class="regexp" x="54" y="5669">[#x4A9]</text> + <polygon points="43 5694 46 5685 98 5685 101 5694 98 5703 46 5703" class="regexp"/> + <text class="regexp" x="54" y="5697">[#x4AB]</text> + <polygon points="43 5722 46 5713 98 5713 101 5722 98 5731 46 5731" class="regexp"/> + <text class="regexp" x="54" y="5725">[#x4AD]</text> + <polygon points="43 5750 46 5741 96 5741 99 5750 96 5759 46 5759" class="regexp"/> + <text class="regexp" x="54" y="5753">[#x4AF]</text> + <polygon points="43 5778 46 5769 98 5769 101 5778 98 5787 46 5787" class="regexp"/> + <text class="regexp" x="54" y="5781">[#x4B1]</text> + <polygon points="43 5806 46 5797 98 5797 101 5806 98 5815 46 5815" class="regexp"/> + <text class="regexp" x="54" y="5809">[#x4B3]</text> + <polygon points="43 5834 46 5825 98 5825 101 5834 98 5843 46 5843" class="regexp"/> + <text class="regexp" x="54" y="5837">[#x4B5]</text> + <polygon points="43 5862 46 5853 98 5853 101 5862 98 5871 46 5871" class="regexp"/> + <text class="regexp" x="54" y="5865">[#x4B7]</text> + <polygon points="43 5890 46 5881 98 5881 101 5890 98 5899 46 5899" class="regexp"/> + <text class="regexp" x="54" y="5893">[#x4B9]</text> + <polygon points="43 5918 46 5909 98 5909 101 5918 98 5927 46 5927" class="regexp"/> + <text class="regexp" x="54" y="5921">[#x4BB]</text> + <polygon points="43 5946 46 5937 98 5937 101 5946 98 5955 46 5955" class="regexp"/> + <text class="regexp" x="54" y="5949">[#x4BD]</text> + <polygon points="43 5974 46 5965 96 5965 99 5974 96 5983 46 5983" class="regexp"/> + <text class="regexp" x="54" y="5977">[#x4BF]</text> + <polygon points="43 6002 46 5993 98 5993 101 6002 98 6011 46 6011" class="regexp"/> + <text class="regexp" x="54" y="6005">[#x4C2]</text> + <polygon points="43 6030 46 6021 98 6021 101 6030 98 6039 46 6039" class="regexp"/> + <text class="regexp" x="54" y="6033">[#x4C4]</text> + <polygon points="43 6058 46 6049 98 6049 101 6058 98 6067 46 6067" class="regexp"/> + <text class="regexp" x="54" y="6061">[#x4C6]</text> + <polygon points="43 6086 46 6077 98 6077 101 6086 98 6095 46 6095" class="regexp"/> + <text class="regexp" x="54" y="6089">[#x4C8]</text> + <polygon points="43 6114 46 6105 98 6105 101 6114 98 6123 46 6123" class="regexp"/> + <text class="regexp" x="54" y="6117">[#x4CA]</text> + <polygon points="43 6142 46 6133 100 6133 103 6142 100 6151 46 6151" class="regexp"/> + <text class="regexp" x="54" y="6145">[#x4CC]</text> + <polygon points="43 6170 46 6161 132 6161 135 6170 132 6179 46 6179" class="regexp"/> + <text class="regexp" x="54" y="6173">[#x4CE-#x4CF]</text> + <polygon points="43 6198 46 6189 98 6189 101 6198 98 6207 46 6207" class="regexp"/> + <text class="regexp" x="54" y="6201">[#x4D1]</text> + <polygon points="43 6226 46 6217 98 6217 101 6226 98 6235 46 6235" class="regexp"/> + <text class="regexp" x="54" y="6229">[#x4D3]</text> + <polygon points="43 6254 46 6245 98 6245 101 6254 98 6263 46 6263" class="regexp"/> + <text class="regexp" x="54" y="6257">[#x4D5]</text> + <polygon points="43 6282 46 6273 98 6273 101 6282 98 6291 46 6291" class="regexp"/> + <text class="regexp" x="54" y="6285">[#x4D7]</text> + <polygon points="43 6310 46 6301 98 6301 101 6310 98 6319 46 6319" class="regexp"/> + <text class="regexp" x="54" y="6313">[#x4D9]</text> + <polygon points="43 6338 46 6329 98 6329 101 6338 98 6347 46 6347" class="regexp"/> + <text class="regexp" x="54" y="6341">[#x4DB]</text> + <polygon points="43 6366 46 6357 100 6357 103 6366 100 6375 46 6375" class="regexp"/> + <text class="regexp" x="54" y="6369">[#x4DD]</text> + <polygon points="43 6394 46 6385 98 6385 101 6394 98 6403 46 6403" class="regexp"/> + <text class="regexp" x="54" y="6397">[#x4DF]</text> + <polygon points="43 6422 46 6413 98 6413 101 6422 98 6431 46 6431" class="regexp"/> + <text class="regexp" x="54" y="6425">[#x4E1]</text> + <polygon points="43 6450 46 6441 98 6441 101 6450 98 6459 46 6459" class="regexp"/> + <text class="regexp" x="54" y="6453">[#x4E3]</text> + <polygon points="43 6478 46 6469 98 6469 101 6478 98 6487 46 6487" class="regexp"/> + <text class="regexp" x="54" y="6481">[#x4E5]</text> + <polygon points="43 6506 46 6497 98 6497 101 6506 98 6515 46 6515" class="regexp"/> + <text class="regexp" x="54" y="6509">[#x4E7]</text> + <polygon points="43 6534 46 6525 98 6525 101 6534 98 6543 46 6543" class="regexp"/> + <text class="regexp" x="54" y="6537">[#x4E9]</text> + <polygon points="43 6562 46 6553 98 6553 101 6562 98 6571 46 6571" class="regexp"/> + <text class="regexp" x="54" y="6565">[#x4EB]</text> + <polygon points="43 6590 46 6581 98 6581 101 6590 98 6599 46 6599" class="regexp"/> + <text class="regexp" x="54" y="6593">[#x4ED]</text> + <polygon points="43 6618 46 6609 96 6609 99 6618 96 6627 46 6627" class="regexp"/> + <text class="regexp" x="54" y="6621">[#x4EF]</text> + <polygon points="43 6646 46 6637 96 6637 99 6646 96 6655 46 6655" class="regexp"/> + <text class="regexp" x="54" y="6649">[#x4F1]</text> + <polygon points="43 6674 46 6665 96 6665 99 6674 96 6683 46 6683" class="regexp"/> + <text class="regexp" x="54" y="6677">[#x4F3]</text> + <polygon points="43 6702 46 6693 96 6693 99 6702 96 6711 46 6711" class="regexp"/> + <text class="regexp" x="54" y="6705">[#x4F5]</text> + <polygon points="43 6730 46 6721 96 6721 99 6730 96 6739 46 6739" class="regexp"/> + <text class="regexp" x="54" y="6733">[#x4F7]</text> + <polygon points="43 6758 46 6749 96 6749 99 6758 96 6767 46 6767" class="regexp"/> + <text class="regexp" x="54" y="6761">[#x4F9]</text> + <polygon points="43 6786 46 6777 96 6777 99 6786 96 6795 46 6795" class="regexp"/> + <text class="regexp" x="54" y="6789">[#x4FB]</text> + <polygon points="43 6814 46 6805 98 6805 101 6814 98 6823 46 6823" class="regexp"/> + <text class="regexp" x="54" y="6817">[#x4FD]</text> + <polygon points="43 6842 46 6833 96 6833 99 6842 96 6851 46 6851" class="regexp"/> + <text class="regexp" x="54" y="6845">[#x4FF]</text> + <polygon points="43 6870 46 6861 98 6861 101 6870 98 6879 46 6879" class="regexp"/> + <text class="regexp" x="54" y="6873">[#x501]</text> + <polygon points="43 6898 46 6889 98 6889 101 6898 98 6907 46 6907" class="regexp"/> + <text class="regexp" x="54" y="6901">[#x503]</text> + <polygon points="43 6926 46 6917 98 6917 101 6926 98 6935 46 6935" class="regexp"/> + <text class="regexp" x="54" y="6929">[#x505]</text> + <polygon points="43 6954 46 6945 98 6945 101 6954 98 6963 46 6963" class="regexp"/> + <text class="regexp" x="54" y="6957">[#x507]</text> + <polygon points="43 6982 46 6973 98 6973 101 6982 98 6991 46 6991" class="regexp"/> + <text class="regexp" x="54" y="6985">[#x509]</text> + <polygon points="43 7010 46 7001 98 7001 101 7010 98 7019 46 7019" class="regexp"/> + <text class="regexp" x="54" y="7013">[#x50B]</text> + <polygon points="43 7038 46 7029 98 7029 101 7038 98 7047 46 7047" class="regexp"/> + <text class="regexp" x="54" y="7041">[#x50D]</text> + <polygon points="43 7066 46 7057 96 7057 99 7066 96 7075 46 7075" class="regexp"/> + <text class="regexp" x="54" y="7069">[#x50F]</text> + <polygon points="43 7094 46 7085 98 7085 101 7094 98 7103 46 7103" class="regexp"/> + <text class="regexp" x="54" y="7097">[#x511]</text> + <polygon points="43 7122 46 7113 98 7113 101 7122 98 7131 46 7131" class="regexp"/> + <text class="regexp" x="54" y="7125">[#x513]</text> + <polygon points="43 7150 46 7141 98 7141 101 7150 98 7159 46 7159" class="regexp"/> + <text class="regexp" x="54" y="7153">[#x515]</text> + <polygon points="43 7178 46 7169 98 7169 101 7178 98 7187 46 7187" class="regexp"/> + <text class="regexp" x="54" y="7181">[#x517]</text> + <polygon points="43 7206 46 7197 98 7197 101 7206 98 7215 46 7215" class="regexp"/> + <text class="regexp" x="54" y="7209">[#x519]</text> + <polygon points="43 7234 46 7225 98 7225 101 7234 98 7243 46 7243" class="regexp"/> + <text class="regexp" x="54" y="7237">[#x51B]</text> + <polygon points="43 7262 46 7253 98 7253 101 7262 98 7271 46 7271" class="regexp"/> + <text class="regexp" x="54" y="7265">[#x51D]</text> + <polygon points="43 7290 46 7281 96 7281 99 7290 96 7299 46 7299" class="regexp"/> + <text class="regexp" x="54" y="7293">[#x51F]</text> + <polygon points="43 7318 46 7309 98 7309 101 7318 98 7327 46 7327" class="regexp"/> + <text class="regexp" x="54" y="7321">[#x521]</text> + <polygon points="43 7346 46 7337 98 7337 101 7346 98 7355 46 7355" class="regexp"/> + <text class="regexp" x="54" y="7349">[#x523]</text> + <polygon points="43 7374 46 7365 98 7365 101 7374 98 7383 46 7383" class="regexp"/> + <text class="regexp" x="54" y="7377">[#x525]</text> + <polygon points="43 7402 46 7393 98 7393 101 7402 98 7411 46 7411" class="regexp"/> + <text class="regexp" x="54" y="7405">[#x527]</text> + <polygon points="43 7430 46 7421 98 7421 101 7430 98 7439 46 7439" class="regexp"/> + <text class="regexp" x="54" y="7433">[#x529]</text> + <polygon points="43 7458 46 7449 98 7449 101 7458 98 7467 46 7467" class="regexp"/> + <text class="regexp" x="54" y="7461">[#x52B]</text> + <polygon points="43 7486 46 7477 98 7477 101 7486 98 7495 46 7495" class="regexp"/> + <text class="regexp" x="54" y="7489">[#x52D]</text> + <polygon points="43 7514 46 7505 96 7505 99 7514 96 7523 46 7523" class="regexp"/> + <text class="regexp" x="54" y="7517">[#x52F]</text> + <polygon points="43 7542 46 7533 132 7533 135 7542 132 7551 46 7551" class="regexp"/> + <text class="regexp" x="54" y="7545">[#x560-#x588]</text> + <polygon points="43 7570 46 7561 144 7561 147 7570 144 7579 46 7579" class="regexp"/> + <text class="regexp" x="54" y="7573">[#x10D0-#x10FA]</text> + <polygon points="43 7598 46 7589 142 7589 145 7598 142 7607 46 7607" class="regexp"/> + <text class="regexp" x="54" y="7601">[#x10FD-#x10FF]</text> + <polygon points="43 7626 46 7617 142 7617 145 7626 142 7635 46 7635" class="regexp"/> + <text class="regexp" x="54" y="7629">[#x13F8-#x13FD]</text> + <polygon points="43 7654 46 7645 146 7645 149 7654 146 7663 46 7663" class="regexp"/> + <text class="regexp" x="54" y="7657">[#x1C80-#x1C88]</text> + <polygon points="43 7682 46 7673 146 7673 149 7682 146 7691 46 7691" class="regexp"/> + <text class="regexp" x="54" y="7685">[#x1D00-#x1D2B]</text> + <polygon points="43 7710 46 7701 146 7701 149 7710 146 7719 46 7719" class="regexp"/> + <text class="regexp" x="54" y="7713">[#x1D6B-#x1D77]</text> + <polygon points="43 7738 46 7729 146 7729 149 7738 146 7747 46 7747" class="regexp"/> + <text class="regexp" x="54" y="7741">[#x1D79-#x1D9A]</text> + <polygon points="43 7766 46 7757 104 7757 107 7766 104 7775 46 7775" class="regexp"/> + <text class="regexp" x="54" y="7769">[#x1E01]</text> + <polygon points="43 7794 46 7785 104 7785 107 7794 104 7803 46 7803" class="regexp"/> + <text class="regexp" x="54" y="7797">[#x1E03]</text> + <polygon points="43 7822 46 7813 104 7813 107 7822 104 7831 46 7831" class="regexp"/> + <text class="regexp" x="54" y="7825">[#x1E05]</text> + <polygon points="43 7850 46 7841 104 7841 107 7850 104 7859 46 7859" class="regexp"/> + <text class="regexp" x="54" y="7853">[#x1E07]</text> + <polygon points="43 7878 46 7869 104 7869 107 7878 104 7887 46 7887" class="regexp"/> + <text class="regexp" x="54" y="7881">[#x1E09]</text> + <polygon points="43 7906 46 7897 104 7897 107 7906 104 7915 46 7915" class="regexp"/> + <text class="regexp" x="54" y="7909">[#x1E0B]</text> + <polygon points="43 7934 46 7925 104 7925 107 7934 104 7943 46 7943" class="regexp"/> + <text class="regexp" x="54" y="7937">[#x1E0D]</text> + <polygon points="43 7962 46 7953 102 7953 105 7962 102 7971 46 7971" class="regexp"/> + <text class="regexp" x="54" y="7965">[#x1E0F]</text> + <polygon points="43 7990 46 7981 104 7981 107 7990 104 7999 46 7999" class="regexp"/> + <text class="regexp" x="54" y="7993">[#x1E11]</text> + <polygon points="43 8018 46 8009 104 8009 107 8018 104 8027 46 8027" class="regexp"/> + <text class="regexp" x="54" y="8021">[#x1E13]</text> + <polygon points="43 8046 46 8037 104 8037 107 8046 104 8055 46 8055" class="regexp"/> + <text class="regexp" x="54" y="8049">[#x1E15]</text> + <polygon points="43 8074 46 8065 104 8065 107 8074 104 8083 46 8083" class="regexp"/> + <text class="regexp" x="54" y="8077">[#x1E17]</text> + <polygon points="43 8102 46 8093 104 8093 107 8102 104 8111 46 8111" class="regexp"/> + <text class="regexp" x="54" y="8105">[#x1E19]</text> + <polygon points="43 8130 46 8121 104 8121 107 8130 104 8139 46 8139" class="regexp"/> + <text class="regexp" x="54" y="8133">[#x1E1B]</text> + <polygon points="43 8158 46 8149 104 8149 107 8158 104 8167 46 8167" class="regexp"/> + <text class="regexp" x="54" y="8161">[#x1E1D]</text> + <polygon points="43 8186 46 8177 102 8177 105 8186 102 8195 46 8195" class="regexp"/> + <text class="regexp" x="54" y="8189">[#x1E1F]</text> + <polygon points="43 8214 46 8205 104 8205 107 8214 104 8223 46 8223" class="regexp"/> + <text class="regexp" x="54" y="8217">[#x1E21]</text> + <polygon points="43 8242 46 8233 104 8233 107 8242 104 8251 46 8251" class="regexp"/> + <text class="regexp" x="54" y="8245">[#x1E23]</text> + <polygon points="43 8270 46 8261 104 8261 107 8270 104 8279 46 8279" class="regexp"/> + <text class="regexp" x="54" y="8273">[#x1E25]</text> + <polygon points="43 8298 46 8289 104 8289 107 8298 104 8307 46 8307" class="regexp"/> + <text class="regexp" x="54" y="8301">[#x1E27]</text> + <polygon points="43 8326 46 8317 104 8317 107 8326 104 8335 46 8335" class="regexp"/> + <text class="regexp" x="54" y="8329">[#x1E29]</text> + <polygon points="43 8354 46 8345 104 8345 107 8354 104 8363 46 8363" class="regexp"/> + <text class="regexp" x="54" y="8357">[#x1E2B]</text> + <polygon points="43 8382 46 8373 104 8373 107 8382 104 8391 46 8391" class="regexp"/> + <text class="regexp" x="54" y="8385">[#x1E2D]</text> + <polygon points="43 8410 46 8401 102 8401 105 8410 102 8419 46 8419" class="regexp"/> + <text class="regexp" x="54" y="8413">[#x1E2F]</text> + <polygon points="43 8438 46 8429 104 8429 107 8438 104 8447 46 8447" class="regexp"/> + <text class="regexp" x="54" y="8441">[#x1E31]</text> + <polygon points="43 8466 46 8457 104 8457 107 8466 104 8475 46 8475" class="regexp"/> + <text class="regexp" x="54" y="8469">[#x1E33]</text> + <polygon points="43 8494 46 8485 104 8485 107 8494 104 8503 46 8503" class="regexp"/> + <text class="regexp" x="54" y="8497">[#x1E35]</text> + <polygon points="43 8522 46 8513 104 8513 107 8522 104 8531 46 8531" class="regexp"/> + <text class="regexp" x="54" y="8525">[#x1E37]</text> + <polygon points="43 8550 46 8541 104 8541 107 8550 104 8559 46 8559" class="regexp"/> + <text class="regexp" x="54" y="8553">[#x1E39]</text> + <polygon points="43 8578 46 8569 104 8569 107 8578 104 8587 46 8587" class="regexp"/> + <text class="regexp" x="54" y="8581">[#x1E3B]</text> + <polygon points="43 8606 46 8597 104 8597 107 8606 104 8615 46 8615" class="regexp"/> + <text class="regexp" x="54" y="8609">[#x1E3D]</text> + <polygon points="43 8634 46 8625 102 8625 105 8634 102 8643 46 8643" class="regexp"/> + <text class="regexp" x="54" y="8637">[#x1E3F]</text> + <polygon points="43 8662 46 8653 104 8653 107 8662 104 8671 46 8671" class="regexp"/> + <text class="regexp" x="54" y="8665">[#x1E41]</text> + <polygon points="43 8690 46 8681 104 8681 107 8690 104 8699 46 8699" class="regexp"/> + <text class="regexp" x="54" y="8693">[#x1E43]</text> + <polygon points="43 8718 46 8709 104 8709 107 8718 104 8727 46 8727" class="regexp"/> + <text class="regexp" x="54" y="8721">[#x1E45]</text> + <polygon points="43 8746 46 8737 104 8737 107 8746 104 8755 46 8755" class="regexp"/> + <text class="regexp" x="54" y="8749">[#x1E47]</text> + <polygon points="43 8774 46 8765 104 8765 107 8774 104 8783 46 8783" class="regexp"/> + <text class="regexp" x="54" y="8777">[#x1E49]</text> + <polygon points="43 8802 46 8793 104 8793 107 8802 104 8811 46 8811" class="regexp"/> + <text class="regexp" x="54" y="8805">[#x1E4B]</text> + <polygon points="43 8830 46 8821 104 8821 107 8830 104 8839 46 8839" class="regexp"/> + <text class="regexp" x="54" y="8833">[#x1E4D]</text> + <polygon points="43 8858 46 8849 102 8849 105 8858 102 8867 46 8867" class="regexp"/> + <text class="regexp" x="54" y="8861">[#x1E4F]</text> + <polygon points="43 8886 46 8877 104 8877 107 8886 104 8895 46 8895" class="regexp"/> + <text class="regexp" x="54" y="8889">[#x1E51]</text> + <polygon points="43 8914 46 8905 104 8905 107 8914 104 8923 46 8923" class="regexp"/> + <text class="regexp" x="54" y="8917">[#x1E53]</text> + <polygon points="43 8942 46 8933 104 8933 107 8942 104 8951 46 8951" class="regexp"/> + <text class="regexp" x="54" y="8945">[#x1E55]</text> + <polygon points="43 8970 46 8961 104 8961 107 8970 104 8979 46 8979" class="regexp"/> + <text class="regexp" x="54" y="8973">[#x1E57]</text> + <polygon points="43 8998 46 8989 104 8989 107 8998 104 9007 46 9007" class="regexp"/> + <text class="regexp" x="54" y="9001">[#x1E59]</text> + <polygon points="43 9026 46 9017 104 9017 107 9026 104 9035 46 9035" class="regexp"/> + <text class="regexp" x="54" y="9029">[#x1E5B]</text> + <polygon points="43 9054 46 9045 104 9045 107 9054 104 9063 46 9063" class="regexp"/> + <text class="regexp" x="54" y="9057">[#x1E5D]</text> + <polygon points="43 9082 46 9073 102 9073 105 9082 102 9091 46 9091" class="regexp"/> + <text class="regexp" x="54" y="9085">[#x1E5F]</text> + <polygon points="43 9110 46 9101 104 9101 107 9110 104 9119 46 9119" class="regexp"/> + <text class="regexp" x="54" y="9113">[#x1E61]</text> + <polygon points="43 9138 46 9129 104 9129 107 9138 104 9147 46 9147" class="regexp"/> + <text class="regexp" x="54" y="9141">[#x1E63]</text> + <polygon points="43 9166 46 9157 104 9157 107 9166 104 9175 46 9175" class="regexp"/> + <text class="regexp" x="54" y="9169">[#x1E65]</text> + <polygon points="43 9194 46 9185 104 9185 107 9194 104 9203 46 9203" class="regexp"/> + <text class="regexp" x="54" y="9197">[#x1E67]</text> + <polygon points="43 9222 46 9213 104 9213 107 9222 104 9231 46 9231" class="regexp"/> + <text class="regexp" x="54" y="9225">[#x1E69]</text> + <polygon points="43 9250 46 9241 104 9241 107 9250 104 9259 46 9259" class="regexp"/> + <text class="regexp" x="54" y="9253">[#x1E6B]</text> + <polygon points="43 9278 46 9269 104 9269 107 9278 104 9287 46 9287" class="regexp"/> + <text class="regexp" x="54" y="9281">[#x1E6D]</text> + <polygon points="43 9306 46 9297 102 9297 105 9306 102 9315 46 9315" class="regexp"/> + <text class="regexp" x="54" y="9309">[#x1E6F]</text> + <polygon points="43 9334 46 9325 104 9325 107 9334 104 9343 46 9343" class="regexp"/> + <text class="regexp" x="54" y="9337">[#x1E71]</text> + <polygon points="43 9362 46 9353 104 9353 107 9362 104 9371 46 9371" class="regexp"/> + <text class="regexp" x="54" y="9365">[#x1E73]</text> + <polygon points="43 9390 46 9381 104 9381 107 9390 104 9399 46 9399" class="regexp"/> + <text class="regexp" x="54" y="9393">[#x1E75]</text> + <polygon points="43 9418 46 9409 104 9409 107 9418 104 9427 46 9427" class="regexp"/> + <text class="regexp" x="54" y="9421">[#x1E77]</text> + <polygon points="43 9446 46 9437 104 9437 107 9446 104 9455 46 9455" class="regexp"/> + <text class="regexp" x="54" y="9449">[#x1E79]</text> + <polygon points="43 9474 46 9465 104 9465 107 9474 104 9483 46 9483" class="regexp"/> + <text class="regexp" x="54" y="9477">[#x1E7B]</text> + <polygon points="43 9502 46 9493 104 9493 107 9502 104 9511 46 9511" class="regexp"/> + <text class="regexp" x="54" y="9505">[#x1E7D]</text> + <polygon points="43 9530 46 9521 102 9521 105 9530 102 9539 46 9539" class="regexp"/> + <text class="regexp" x="54" y="9533">[#x1E7F]</text> + <polygon points="43 9558 46 9549 104 9549 107 9558 104 9567 46 9567" class="regexp"/> + <text class="regexp" x="54" y="9561">[#x1E81]</text> + <polygon points="43 9586 46 9577 104 9577 107 9586 104 9595 46 9595" class="regexp"/> + <text class="regexp" x="54" y="9589">[#x1E83]</text> + <polygon points="43 9614 46 9605 104 9605 107 9614 104 9623 46 9623" class="regexp"/> + <text class="regexp" x="54" y="9617">[#x1E85]</text> + <polygon points="43 9642 46 9633 104 9633 107 9642 104 9651 46 9651" class="regexp"/> + <text class="regexp" x="54" y="9645">[#x1E87]</text> + <polygon points="43 9670 46 9661 104 9661 107 9670 104 9679 46 9679" class="regexp"/> + <text class="regexp" x="54" y="9673">[#x1E89]</text> + <polygon points="43 9698 46 9689 104 9689 107 9698 104 9707 46 9707" class="regexp"/> + <text class="regexp" x="54" y="9701">[#x1E8B]</text> + <polygon points="43 9726 46 9717 104 9717 107 9726 104 9735 46 9735" class="regexp"/> + <text class="regexp" x="54" y="9729">[#x1E8D]</text> + <polygon points="43 9754 46 9745 102 9745 105 9754 102 9763 46 9763" class="regexp"/> + <text class="regexp" x="54" y="9757">[#x1E8F]</text> + <polygon points="43 9782 46 9773 104 9773 107 9782 104 9791 46 9791" class="regexp"/> + <text class="regexp" x="54" y="9785">[#x1E91]</text> + <polygon points="43 9810 46 9801 104 9801 107 9810 104 9819 46 9819" class="regexp"/> + <text class="regexp" x="54" y="9813">[#x1E93]</text> + <polygon points="43 9838 46 9829 144 9829 147 9838 144 9847 46 9847" class="regexp"/> + <text class="regexp" x="54" y="9841">[#x1E95-#x1E9D]</text> + <polygon points="43 9866 46 9857 102 9857 105 9866 102 9875 46 9875" class="regexp"/> + <text class="regexp" x="54" y="9869">[#x1E9F]</text> + <polygon points="43 9894 46 9885 104 9885 107 9894 104 9903 46 9903" class="regexp"/> + <text class="regexp" x="54" y="9897">[#x1EA1]</text> + <polygon points="43 9922 46 9913 104 9913 107 9922 104 9931 46 9931" class="regexp"/> + <text class="regexp" x="54" y="9925">[#x1EA3]</text> + <polygon points="43 9950 46 9941 104 9941 107 9950 104 9959 46 9959" class="regexp"/> + <text class="regexp" x="54" y="9953">[#x1EA5]</text> + <polygon points="43 9978 46 9969 104 9969 107 9978 104 9987 46 9987" class="regexp"/> + <text class="regexp" x="54" y="9981">[#x1EA7]</text> + <polygon points="43 10006 46 9997 104 9997 107 10006 104 10015 46 10015" class="regexp"/> + <text class="regexp" x="54" y="10009">[#x1EA9]</text> + <polygon points="43 10034 46 10025 104 10025 107 10034 104 10043 46 10043" class="regexp"/> + <text class="regexp" x="54" y="10037">[#x1EAB]</text> + <polygon points="43 10062 46 10053 104 10053 107 10062 104 10071 46 10071" class="regexp"/> + <text class="regexp" x="54" y="10065">[#x1EAD]</text> + <polygon points="43 10090 46 10081 102 10081 105 10090 102 10099 46 10099" class="regexp"/> + <text class="regexp" x="54" y="10093">[#x1EAF]</text> + <polygon points="43 10118 46 10109 104 10109 107 10118 104 10127 46 10127" class="regexp"/> + <text class="regexp" x="54" y="10121">[#x1EB1]</text> + <polygon points="43 10146 46 10137 104 10137 107 10146 104 10155 46 10155" class="regexp"/> + <text class="regexp" x="54" y="10149">[#x1EB3]</text> + <polygon points="43 10174 46 10165 104 10165 107 10174 104 10183 46 10183" class="regexp"/> + <text class="regexp" x="54" y="10177">[#x1EB5]</text> + <polygon points="43 10202 46 10193 104 10193 107 10202 104 10211 46 10211" class="regexp"/> + <text class="regexp" x="54" y="10205">[#x1EB7]</text> + <polygon points="43 10230 46 10221 104 10221 107 10230 104 10239 46 10239" class="regexp"/> + <text class="regexp" x="54" y="10233">[#x1EB9]</text> + <polygon points="43 10258 46 10249 104 10249 107 10258 104 10267 46 10267" class="regexp"/> + <text class="regexp" x="54" y="10261">[#x1EBB]</text> + <polygon points="43 10286 46 10277 104 10277 107 10286 104 10295 46 10295" class="regexp"/> + <text class="regexp" x="54" y="10289">[#x1EBD]</text> + <polygon points="43 10314 46 10305 102 10305 105 10314 102 10323 46 10323" class="regexp"/> + <text class="regexp" x="54" y="10317">[#x1EBF]</text> + <polygon points="43 10342 46 10333 104 10333 107 10342 104 10351 46 10351" class="regexp"/> + <text class="regexp" x="54" y="10345">[#x1EC1]</text> + <polygon points="43 10370 46 10361 104 10361 107 10370 104 10379 46 10379" class="regexp"/> + <text class="regexp" x="54" y="10373">[#x1EC3]</text> + <polygon points="43 10398 46 10389 104 10389 107 10398 104 10407 46 10407" class="regexp"/> + <text class="regexp" x="54" y="10401">[#x1EC5]</text> + <polygon points="43 10426 46 10417 104 10417 107 10426 104 10435 46 10435" class="regexp"/> + <text class="regexp" x="54" y="10429">[#x1EC7]</text> + <polygon points="43 10454 46 10445 104 10445 107 10454 104 10463 46 10463" class="regexp"/> + <text class="regexp" x="54" y="10457">[#x1EC9]</text> + <polygon points="43 10482 46 10473 104 10473 107 10482 104 10491 46 10491" class="regexp"/> + <text class="regexp" x="54" y="10485">[#x1ECB]</text> + <polygon points="43 10510 46 10501 106 10501 109 10510 106 10519 46 10519" class="regexp"/> + <text class="regexp" x="54" y="10513">[#x1ECD]</text> + <polygon points="43 10538 46 10529 104 10529 107 10538 104 10547 46 10547" class="regexp"/> + <text class="regexp" x="54" y="10541">[#x1ECF]</text> + <polygon points="43 10566 46 10557 104 10557 107 10566 104 10575 46 10575" class="regexp"/> + <text class="regexp" x="54" y="10569">[#x1ED1]</text> + <polygon points="43 10594 46 10585 104 10585 107 10594 104 10603 46 10603" class="regexp"/> + <text class="regexp" x="54" y="10597">[#x1ED3]</text> + <polygon points="43 10622 46 10613 104 10613 107 10622 104 10631 46 10631" class="regexp"/> + <text class="regexp" x="54" y="10625">[#x1ED5]</text> + <polygon points="43 10650 46 10641 104 10641 107 10650 104 10659 46 10659" class="regexp"/> + <text class="regexp" x="54" y="10653">[#x1ED7]</text> + <polygon points="43 10678 46 10669 104 10669 107 10678 104 10687 46 10687" class="regexp"/> + <text class="regexp" x="54" y="10681">[#x1ED9]</text> + <polygon points="43 10706 46 10697 104 10697 107 10706 104 10715 46 10715" class="regexp"/> + <text class="regexp" x="54" y="10709">[#x1EDB]</text> + <polygon points="43 10734 46 10725 106 10725 109 10734 106 10743 46 10743" class="regexp"/> + <text class="regexp" x="54" y="10737">[#x1EDD]</text> + <polygon points="43 10762 46 10753 104 10753 107 10762 104 10771 46 10771" class="regexp"/> + <text class="regexp" x="54" y="10765">[#x1EDF]</text> + <polygon points="43 10790 46 10781 104 10781 107 10790 104 10799 46 10799" class="regexp"/> + <text class="regexp" x="54" y="10793">[#x1EE1]</text> + <polygon points="43 10818 46 10809 104 10809 107 10818 104 10827 46 10827" class="regexp"/> + <text class="regexp" x="54" y="10821">[#x1EE3]</text> + <polygon points="43 10846 46 10837 104 10837 107 10846 104 10855 46 10855" class="regexp"/> + <text class="regexp" x="54" y="10849">[#x1EE5]</text> + <polygon points="43 10874 46 10865 104 10865 107 10874 104 10883 46 10883" class="regexp"/> + <text class="regexp" x="54" y="10877">[#x1EE7]</text> + <polygon points="43 10902 46 10893 104 10893 107 10902 104 10911 46 10911" class="regexp"/> + <text class="regexp" x="54" y="10905">[#x1EE9]</text> + <polygon points="43 10930 46 10921 104 10921 107 10930 104 10939 46 10939" class="regexp"/> + <text class="regexp" x="54" y="10933">[#x1EEB]</text> + <polygon points="43 10958 46 10949 104 10949 107 10958 104 10967 46 10967" class="regexp"/> + <text class="regexp" x="54" y="10961">[#x1EED]</text> + <polygon points="43 10986 46 10977 102 10977 105 10986 102 10995 46 10995" class="regexp"/> + <text class="regexp" x="54" y="10989">[#x1EEF]</text> + <polygon points="43 11014 46 11005 102 11005 105 11014 102 11023 46 11023" class="regexp"/> + <text class="regexp" x="54" y="11017">[#x1EF1]</text> + <polygon points="43 11042 46 11033 102 11033 105 11042 102 11051 46 11051" class="regexp"/> + <text class="regexp" x="54" y="11045">[#x1EF3]</text> + <polygon points="43 11070 46 11061 102 11061 105 11070 102 11079 46 11079" class="regexp"/> + <text class="regexp" x="54" y="11073">[#x1EF5]</text> + <polygon points="43 11098 46 11089 102 11089 105 11098 102 11107 46 11107" class="regexp"/> + <text class="regexp" x="54" y="11101">[#x1EF7]</text> + <polygon points="43 11126 46 11117 102 11117 105 11126 102 11135 46 11135" class="regexp"/> + <text class="regexp" x="54" y="11129">[#x1EF9]</text> + <polygon points="43 11154 46 11145 102 11145 105 11154 102 11163 46 11163" class="regexp"/> + <text class="regexp" x="54" y="11157">[#x1EFB]</text> + <polygon points="43 11182 46 11173 104 11173 107 11182 104 11191 46 11191" class="regexp"/> + <text class="regexp" x="54" y="11185">[#x1EFD]</text> + <polygon points="43 11210 46 11201 140 11201 143 11210 140 11219 46 11219" class="regexp"/> + <text class="regexp" x="54" y="11213">[#x1EFF-#x1F07]</text> + <polygon points="43 11238 46 11229 142 11229 145 11238 142 11247 46 11247" class="regexp"/> + <text class="regexp" x="54" y="11241">[#x1F10-#x1F15]</text> + <polygon points="43 11266 46 11257 142 11257 145 11266 142 11275 46 11275" class="regexp"/> + <text class="regexp" x="54" y="11269">[#x1F20-#x1F27]</text> + <polygon points="43 11294 46 11285 142 11285 145 11294 142 11303 46 11303" class="regexp"/> + <text class="regexp" x="54" y="11297">[#x1F30-#x1F37]</text> + <polygon points="43 11322 46 11313 142 11313 145 11322 142 11331 46 11331" class="regexp"/> + <text class="regexp" x="54" y="11325">[#x1F40-#x1F45]</text> + <polygon points="43 11350 46 11341 142 11341 145 11350 142 11359 46 11359" class="regexp"/> + <text class="regexp" x="54" y="11353">[#x1F50-#x1F57]</text> + <polygon points="43 11378 46 11369 142 11369 145 11378 142 11387 46 11387" class="regexp"/> + <text class="regexp" x="54" y="11381">[#x1F60-#x1F67]</text> + <polygon points="43 11406 46 11397 142 11397 145 11406 142 11415 46 11415" class="regexp"/> + <text class="regexp" x="54" y="11409">[#x1F70-#x1F7D]</text> + <polygon points="43 11434 46 11425 142 11425 145 11434 142 11443 46 11443" class="regexp"/> + <text class="regexp" x="54" y="11437">[#x1F80-#x1F87]</text> + <polygon points="43 11462 46 11453 142 11453 145 11462 142 11471 46 11471" class="regexp"/> + <text class="regexp" x="54" y="11465">[#x1F90-#x1F97]</text> + <polygon points="43 11490 46 11481 142 11481 145 11490 142 11499 46 11499" class="regexp"/> + <text class="regexp" x="54" y="11493">[#x1FA0-#x1FA7]</text> + <polygon points="43 11518 46 11509 142 11509 145 11518 142 11527 46 11527" class="regexp"/> + <text class="regexp" x="54" y="11521">[#x1FB0-#x1FB4]</text> + <polygon points="43 11546 46 11537 142 11537 145 11546 142 11555 46 11555" class="regexp"/> + <text class="regexp" x="54" y="11549">[#x1FB6-#x1FB7]</text> + <polygon points="43 11574 46 11565 102 11565 105 11574 102 11583 46 11583" class="regexp"/> + <text class="regexp" x="54" y="11577">[#x1FBE]</text> + <polygon points="43 11602 46 11593 144 11593 147 11602 144 11611 46 11611" class="regexp"/> + <text class="regexp" x="54" y="11605">[#x1FC2-#x1FC4]</text> + <polygon points="43 11630 46 11621 144 11621 147 11630 144 11639 46 11639" class="regexp"/> + <text class="regexp" x="54" y="11633">[#x1FC6-#x1FC7]</text> + <polygon points="43 11658 46 11649 144 11649 147 11658 144 11667 46 11667" class="regexp"/> + <text class="regexp" x="54" y="11661">[#x1FD0-#x1FD3]</text> + <polygon points="43 11686 46 11677 144 11677 147 11686 144 11695 46 11695" class="regexp"/> + <text class="regexp" x="54" y="11689">[#x1FD6-#x1FD7]</text> + <polygon points="43 11714 46 11705 142 11705 145 11714 142 11723 46 11723" class="regexp"/> + <text class="regexp" x="54" y="11717">[#x1FE0-#x1FE7]</text> + <polygon points="43 11742 46 11733 140 11733 143 11742 140 11751 46 11751" class="regexp"/> + <text class="regexp" x="54" y="11745">[#x1FF2-#x1FF4]</text> + <polygon points="43 11770 46 11761 140 11761 143 11770 140 11779 46 11779" class="regexp"/> + <text class="regexp" x="54" y="11773">[#x1FF6-#x1FF7]</text> + <polygon points="43 11798 46 11789 104 11789 107 11798 104 11807 46 11807" class="regexp"/> + <text class="regexp" x="54" y="11801">[#x210A]</text> + <polygon points="43 11826 46 11817 142 11817 145 11826 142 11835 46 11835" class="regexp"/> + <text class="regexp" x="54" y="11829">[#x210E-#x210F]</text> + <polygon points="43 11854 46 11845 104 11845 107 11854 104 11863 46 11863" class="regexp"/> + <text class="regexp" x="54" y="11857">[#x2113]</text> + <polygon points="43 11882 46 11873 102 11873 105 11882 102 11891 46 11891" class="regexp"/> + <text class="regexp" x="54" y="11885">[#x212F]</text> + <polygon points="43 11910 46 11901 104 11901 107 11910 104 11919 46 11919" class="regexp"/> + <text class="regexp" x="54" y="11913">[#x2134]</text> + <polygon points="43 11938 46 11929 104 11929 107 11938 104 11947 46 11947" class="regexp"/> + <text class="regexp" x="54" y="11941">[#x2139]</text> + <polygon points="43 11966 46 11957 146 11957 149 11966 146 11975 46 11975" class="regexp"/> + <text class="regexp" x="54" y="11969">[#x213C-#x213D]</text> + <polygon points="43 11994 46 11985 144 11985 147 11994 144 12003 46 12003" class="regexp"/> + <text class="regexp" x="54" y="11997">[#x2146-#x2149]</text> + <polygon points="43 12022 46 12013 104 12013 107 12022 104 12031 46 12031" class="regexp"/> + <text class="regexp" x="54" y="12025">[#x214E]</text> + <polygon points="43 12050 46 12041 104 12041 107 12050 104 12059 46 12059" class="regexp"/> + <text class="regexp" x="54" y="12053">[#x2184]</text> + <polygon points="43 12078 46 12069 144 12069 147 12078 144 12087 46 12087" class="regexp"/> + <text class="regexp" x="54" y="12081">[#x2C30-#x2C5F]</text> + <polygon points="43 12106 46 12097 104 12097 107 12106 104 12115 46 12115" class="regexp"/> + <text class="regexp" x="54" y="12109">[#x2C61]</text> + <polygon points="43 12134 46 12125 146 12125 149 12134 146 12143 46 12143" class="regexp"/> + <text class="regexp" x="54" y="12137">[#x2C65-#x2C66]</text> + <polygon points="43 12162 46 12153 104 12153 107 12162 104 12171 46 12171" class="regexp"/> + <text class="regexp" x="54" y="12165">[#x2C68]</text> + <polygon points="43 12190 46 12181 104 12181 107 12190 104 12199 46 12199" class="regexp"/> + <text class="regexp" x="54" y="12193">[#x2C6A]</text> + <polygon points="43 12218 46 12209 106 12209 109 12218 106 12227 46 12227" class="regexp"/> + <text class="regexp" x="54" y="12221">[#x2C6C]</text> + <polygon points="43 12246 46 12237 104 12237 107 12246 104 12255 46 12255" class="regexp"/> + <text class="regexp" x="54" y="12249">[#x2C71]</text> + <polygon points="43 12274 46 12265 146 12265 149 12274 146 12283 46 12283" class="regexp"/> + <text class="regexp" x="54" y="12277">[#x2C73-#x2C74]</text> + <polygon points="43 12302 46 12293 146 12293 149 12302 146 12311 46 12311" class="regexp"/> + <text class="regexp" x="54" y="12305">[#x2C76-#x2C7B]</text> + <polygon points="43 12330 46 12321 104 12321 107 12330 104 12339 46 12339" class="regexp"/> + <text class="regexp" x="54" y="12333">[#x2C81]</text> + <polygon points="43 12358 46 12349 104 12349 107 12358 104 12367 46 12367" class="regexp"/> + <text class="regexp" x="54" y="12361">[#x2C83]</text> + <polygon points="43 12386 46 12377 104 12377 107 12386 104 12395 46 12395" class="regexp"/> + <text class="regexp" x="54" y="12389">[#x2C85]</text> + <polygon points="43 12414 46 12405 104 12405 107 12414 104 12423 46 12423" class="regexp"/> + <text class="regexp" x="54" y="12417">[#x2C87]</text> + <polygon points="43 12442 46 12433 104 12433 107 12442 104 12451 46 12451" class="regexp"/> + <text class="regexp" x="54" y="12445">[#x2C89]</text> + <polygon points="43 12470 46 12461 104 12461 107 12470 104 12479 46 12479" class="regexp"/> + <text class="regexp" x="54" y="12473">[#x2C8B]</text> + <polygon points="43 12498 46 12489 106 12489 109 12498 106 12507 46 12507" class="regexp"/> + <text class="regexp" x="54" y="12501">[#x2C8D]</text> + <polygon points="43 12526 46 12517 104 12517 107 12526 104 12535 46 12535" class="regexp"/> + <text class="regexp" x="54" y="12529">[#x2C8F]</text> + <polygon points="43 12554 46 12545 104 12545 107 12554 104 12563 46 12563" class="regexp"/> + <text class="regexp" x="54" y="12557">[#x2C91]</text> + <polygon points="43 12582 46 12573 104 12573 107 12582 104 12591 46 12591" class="regexp"/> + <text class="regexp" x="54" y="12585">[#x2C93]</text> + <polygon points="43 12610 46 12601 104 12601 107 12610 104 12619 46 12619" class="regexp"/> + <text class="regexp" x="54" y="12613">[#x2C95]</text> + <polygon points="43 12638 46 12629 104 12629 107 12638 104 12647 46 12647" class="regexp"/> + <text class="regexp" x="54" y="12641">[#x2C97]</text> + <polygon points="43 12666 46 12657 104 12657 107 12666 104 12675 46 12675" class="regexp"/> + <text class="regexp" x="54" y="12669">[#x2C99]</text> + <polygon points="43 12694 46 12685 104 12685 107 12694 104 12703 46 12703" class="regexp"/> + <text class="regexp" x="54" y="12697">[#x2C9B]</text> + <polygon points="43 12722 46 12713 106 12713 109 12722 106 12731 46 12731" class="regexp"/> + <text class="regexp" x="54" y="12725">[#x2C9D]</text> + <polygon points="43 12750 46 12741 104 12741 107 12750 104 12759 46 12759" class="regexp"/> + <text class="regexp" x="54" y="12753">[#x2C9F]</text> + <polygon points="43 12778 46 12769 104 12769 107 12778 104 12787 46 12787" class="regexp"/> + <text class="regexp" x="54" y="12781">[#x2CA1]</text> + <polygon points="43 12806 46 12797 104 12797 107 12806 104 12815 46 12815" class="regexp"/> + <text class="regexp" x="54" y="12809">[#x2CA3]</text> + <polygon points="43 12834 46 12825 104 12825 107 12834 104 12843 46 12843" class="regexp"/> + <text class="regexp" x="54" y="12837">[#x2CA5]</text> + <polygon points="43 12862 46 12853 104 12853 107 12862 104 12871 46 12871" class="regexp"/> + <text class="regexp" x="54" y="12865">[#x2CA7]</text> + <polygon points="43 12890 46 12881 104 12881 107 12890 104 12899 46 12899" class="regexp"/> + <text class="regexp" x="54" y="12893">[#x2CA9]</text> + <polygon points="43 12918 46 12909 104 12909 107 12918 104 12927 46 12927" class="regexp"/> + <text class="regexp" x="54" y="12921">[#x2CAB]</text> + <polygon points="43 12946 46 12937 106 12937 109 12946 106 12955 46 12955" class="regexp"/> + <text class="regexp" x="54" y="12949">[#x2CAD]</text> + <polygon points="43 12974 46 12965 104 12965 107 12974 104 12983 46 12983" class="regexp"/> + <text class="regexp" x="54" y="12977">[#x2CAF]</text> + <polygon points="43 13002 46 12993 104 12993 107 13002 104 13011 46 13011" class="regexp"/> + <text class="regexp" x="54" y="13005">[#x2CB1]</text> + <polygon points="43 13030 46 13021 104 13021 107 13030 104 13039 46 13039" class="regexp"/> + <text class="regexp" x="54" y="13033">[#x2CB3]</text> + <polygon points="43 13058 46 13049 104 13049 107 13058 104 13067 46 13067" class="regexp"/> + <text class="regexp" x="54" y="13061">[#x2CB5]</text> + <polygon points="43 13086 46 13077 104 13077 107 13086 104 13095 46 13095" class="regexp"/> + <text class="regexp" x="54" y="13089">[#x2CB7]</text> + <polygon points="43 13114 46 13105 104 13105 107 13114 104 13123 46 13123" class="regexp"/> + <text class="regexp" x="54" y="13117">[#x2CB9]</text> + <polygon points="43 13142 46 13133 104 13133 107 13142 104 13151 46 13151" class="regexp"/> + <text class="regexp" x="54" y="13145">[#x2CBB]</text> + <polygon points="43 13170 46 13161 106 13161 109 13170 106 13179 46 13179" class="regexp"/> + <text class="regexp" x="54" y="13173">[#x2CBD]</text> + <polygon points="43 13198 46 13189 104 13189 107 13198 104 13207 46 13207" class="regexp"/> + <text class="regexp" x="54" y="13201">[#x2CBF]</text> + <polygon points="43 13226 46 13217 106 13217 109 13226 106 13235 46 13235" class="regexp"/> + <text class="regexp" x="54" y="13229">[#x2CC1]</text> + <polygon points="43 13254 46 13245 106 13245 109 13254 106 13263 46 13263" class="regexp"/> + <text class="regexp" x="54" y="13257">[#x2CC3]</text> + <polygon points="43 13282 46 13273 106 13273 109 13282 106 13291 46 13291" class="regexp"/> + <text class="regexp" x="54" y="13285">[#x2CC5]</text> + <polygon points="43 13310 46 13301 106 13301 109 13310 106 13319 46 13319" class="regexp"/> + <text class="regexp" x="54" y="13313">[#x2CC7]</text> + <polygon points="43 13338 46 13329 106 13329 109 13338 106 13347 46 13347" class="regexp"/> + <text class="regexp" x="54" y="13341">[#x2CC9]</text> + <polygon points="43 13366 46 13357 106 13357 109 13366 106 13375 46 13375" class="regexp"/> + <text class="regexp" x="54" y="13369">[#x2CCB]</text> + <polygon points="43 13394 46 13385 106 13385 109 13394 106 13403 46 13403" class="regexp"/> + <text class="regexp" x="54" y="13397">[#x2CCD]</text> + <polygon points="43 13422 46 13413 104 13413 107 13422 104 13431 46 13431" class="regexp"/> + <text class="regexp" x="54" y="13425">[#x2CCF]</text> + <polygon points="43 13450 46 13441 106 13441 109 13450 106 13459 46 13459" class="regexp"/> + <text class="regexp" x="54" y="13453">[#x2CD1]</text> + <polygon points="43 13478 46 13469 106 13469 109 13478 106 13487 46 13487" class="regexp"/> + <text class="regexp" x="54" y="13481">[#x2CD3]</text> + <polygon points="43 13506 46 13497 106 13497 109 13506 106 13515 46 13515" class="regexp"/> + <text class="regexp" x="54" y="13509">[#x2CD5]</text> + <polygon points="43 13534 46 13525 106 13525 109 13534 106 13543 46 13543" class="regexp"/> + <text class="regexp" x="54" y="13537">[#x2CD7]</text> + <polygon points="43 13562 46 13553 106 13553 109 13562 106 13571 46 13571" class="regexp"/> + <text class="regexp" x="54" y="13565">[#x2CD9]</text> + <polygon points="43 13590 46 13581 106 13581 109 13590 106 13599 46 13599" class="regexp"/> + <text class="regexp" x="54" y="13593">[#x2CDB]</text> + <polygon points="43 13618 46 13609 106 13609 109 13618 106 13627 46 13627" class="regexp"/> + <text class="regexp" x="54" y="13621">[#x2CDD]</text> + <polygon points="43 13646 46 13637 104 13637 107 13646 104 13655 46 13655" class="regexp"/> + <text class="regexp" x="54" y="13649">[#x2CDF]</text> + <polygon points="43 13674 46 13665 104 13665 107 13674 104 13683 46 13683" class="regexp"/> + <text class="regexp" x="54" y="13677">[#x2CE1]</text> + <polygon points="43 13702 46 13693 146 13693 149 13702 146 13711 46 13711" class="regexp"/> + <text class="regexp" x="54" y="13705">[#x2CE3-#x2CE4]</text> + <polygon points="43 13730 46 13721 106 13721 109 13730 106 13739 46 13739" class="regexp"/> + <text class="regexp" x="54" y="13733">[#x2CEC]</text> + <polygon points="43 13758 46 13749 104 13749 107 13758 104 13767 46 13767" class="regexp"/> + <text class="regexp" x="54" y="13761">[#x2CEE]</text> + <polygon points="43 13786 46 13777 104 13777 107 13786 104 13795 46 13795" class="regexp"/> + <text class="regexp" x="54" y="13789">[#x2CF3]</text> + <polygon points="43 13814 46 13805 146 13805 149 13814 146 13823 46 13823" class="regexp"/> + <text class="regexp" x="54" y="13817">[#x2D00-#x2D25]</text> + <polygon points="43 13842 46 13833 104 13833 107 13842 104 13851 46 13851" class="regexp"/> + <text class="regexp" x="54" y="13845">[#x2D27]</text> + <polygon points="43 13870 46 13861 106 13861 109 13870 106 13879 46 13879" class="regexp"/> + <text class="regexp" x="54" y="13873">[#x2D2D]</text> + <polygon points="43 13898 46 13889 104 13889 107 13898 104 13907 46 13907" class="regexp"/> + <text class="regexp" x="54" y="13901">[#xA641]</text> + <polygon points="43 13926 46 13917 104 13917 107 13926 104 13935 46 13935" class="regexp"/> + <text class="regexp" x="54" y="13929">[#xA643]</text> + <polygon points="43 13954 46 13945 104 13945 107 13954 104 13963 46 13963" class="regexp"/> + <text class="regexp" x="54" y="13957">[#xA645]</text> + <polygon points="43 13982 46 13973 104 13973 107 13982 104 13991 46 13991" class="regexp"/> + <text class="regexp" x="54" y="13985">[#xA647]</text> + <polygon points="43 14010 46 14001 104 14001 107 14010 104 14019 46 14019" class="regexp"/> + <text class="regexp" x="54" y="14013">[#xA649]</text> + <polygon points="43 14038 46 14029 104 14029 107 14038 104 14047 46 14047" class="regexp"/> + <text class="regexp" x="54" y="14041">[#xA64B]</text> + <polygon points="43 14066 46 14057 104 14057 107 14066 104 14075 46 14075" class="regexp"/> + <text class="regexp" x="54" y="14069">[#xA64D]</text> + <polygon points="43 14094 46 14085 102 14085 105 14094 102 14103 46 14103" class="regexp"/> + <text class="regexp" x="54" y="14097">[#xA64F]</text> + <polygon points="43 14122 46 14113 104 14113 107 14122 104 14131 46 14131" class="regexp"/> + <text class="regexp" x="54" y="14125">[#xA651]</text> + <polygon points="43 14150 46 14141 104 14141 107 14150 104 14159 46 14159" class="regexp"/> + <text class="regexp" x="54" y="14153">[#xA653]</text> + <polygon points="43 14178 46 14169 104 14169 107 14178 104 14187 46 14187" class="regexp"/> + <text class="regexp" x="54" y="14181">[#xA655]</text> + <polygon points="43 14206 46 14197 104 14197 107 14206 104 14215 46 14215" class="regexp"/> + <text class="regexp" x="54" y="14209">[#xA657]</text> + <polygon points="43 14234 46 14225 104 14225 107 14234 104 14243 46 14243" class="regexp"/> + <text class="regexp" x="54" y="14237">[#xA659]</text> + <polygon points="43 14262 46 14253 104 14253 107 14262 104 14271 46 14271" class="regexp"/> + <text class="regexp" x="54" y="14265">[#xA65B]</text> + <polygon points="43 14290 46 14281 104 14281 107 14290 104 14299 46 14299" class="regexp"/> + <text class="regexp" x="54" y="14293">[#xA65D]</text> + <polygon points="43 14318 46 14309 102 14309 105 14318 102 14327 46 14327" class="regexp"/> + <text class="regexp" x="54" y="14321">[#xA65F]</text> + <polygon points="43 14346 46 14337 104 14337 107 14346 104 14355 46 14355" class="regexp"/> + <text class="regexp" x="54" y="14349">[#xA661]</text> + <polygon points="43 14374 46 14365 104 14365 107 14374 104 14383 46 14383" class="regexp"/> + <text class="regexp" x="54" y="14377">[#xA663]</text> + <polygon points="43 14402 46 14393 104 14393 107 14402 104 14411 46 14411" class="regexp"/> + <text class="regexp" x="54" y="14405">[#xA665]</text> + <polygon points="43 14430 46 14421 104 14421 107 14430 104 14439 46 14439" class="regexp"/> + <text class="regexp" x="54" y="14433">[#xA667]</text> + <polygon points="43 14458 46 14449 104 14449 107 14458 104 14467 46 14467" class="regexp"/> + <text class="regexp" x="54" y="14461">[#xA669]</text> + <polygon points="43 14486 46 14477 104 14477 107 14486 104 14495 46 14495" class="regexp"/> + <text class="regexp" x="54" y="14489">[#xA66B]</text> + <polygon points="43 14514 46 14505 104 14505 107 14514 104 14523 46 14523" class="regexp"/> + <text class="regexp" x="54" y="14517">[#xA66D]</text> + <polygon points="43 14542 46 14533 104 14533 107 14542 104 14551 46 14551" class="regexp"/> + <text class="regexp" x="54" y="14545">[#xA681]</text> + <polygon points="43 14570 46 14561 104 14561 107 14570 104 14579 46 14579" class="regexp"/> + <text class="regexp" x="54" y="14573">[#xA683]</text> + <polygon points="43 14598 46 14589 104 14589 107 14598 104 14607 46 14607" class="regexp"/> + <text class="regexp" x="54" y="14601">[#xA685]</text> + <polygon points="43 14626 46 14617 104 14617 107 14626 104 14635 46 14635" class="regexp"/> + <text class="regexp" x="54" y="14629">[#xA687]</text> + <polygon points="43 14654 46 14645 104 14645 107 14654 104 14663 46 14663" class="regexp"/> + <text class="regexp" x="54" y="14657">[#xA689]</text> + <polygon points="43 14682 46 14673 104 14673 107 14682 104 14691 46 14691" class="regexp"/> + <text class="regexp" x="54" y="14685">[#xA68B]</text> + <polygon points="43 14710 46 14701 104 14701 107 14710 104 14719 46 14719" class="regexp"/> + <text class="regexp" x="54" y="14713">[#xA68D]</text> + <polygon points="43 14738 46 14729 102 14729 105 14738 102 14747 46 14747" class="regexp"/> + <text class="regexp" x="54" y="14741">[#xA68F]</text> + <polygon points="43 14766 46 14757 104 14757 107 14766 104 14775 46 14775" class="regexp"/> + <text class="regexp" x="54" y="14769">[#xA691]</text> + <polygon points="43 14794 46 14785 104 14785 107 14794 104 14803 46 14803" class="regexp"/> + <text class="regexp" x="54" y="14797">[#xA693]</text> + <polygon points="43 14822 46 14813 104 14813 107 14822 104 14831 46 14831" class="regexp"/> + <text class="regexp" x="54" y="14825">[#xA695]</text> + <polygon points="43 14850 46 14841 104 14841 107 14850 104 14859 46 14859" class="regexp"/> + <text class="regexp" x="54" y="14853">[#xA697]</text> + <polygon points="43 14878 46 14869 104 14869 107 14878 104 14887 46 14887" class="regexp"/> + <text class="regexp" x="54" y="14881">[#xA699]</text> + <polygon points="43 14906 46 14897 104 14897 107 14906 104 14915 46 14915" class="regexp"/> + <text class="regexp" x="54" y="14909">[#xA69B]</text> + <polygon points="43 14934 46 14925 104 14925 107 14934 104 14943 46 14943" class="regexp"/> + <text class="regexp" x="54" y="14937">[#xA723]</text> + <polygon points="43 14962 46 14953 104 14953 107 14962 104 14971 46 14971" class="regexp"/> + <text class="regexp" x="54" y="14965">[#xA725]</text> + <polygon points="43 14990 46 14981 104 14981 107 14990 104 14999 46 14999" class="regexp"/> + <text class="regexp" x="54" y="14993">[#xA727]</text> + <polygon points="43 15018 46 15009 104 15009 107 15018 104 15027 46 15027" class="regexp"/> + <text class="regexp" x="54" y="15021">[#xA729]</text> + <polygon points="43 15046 46 15037 104 15037 107 15046 104 15055 46 15055" class="regexp"/> + <text class="regexp" x="54" y="15049">[#xA72B]</text> + <polygon points="43 15074 46 15065 104 15065 107 15074 104 15083 46 15083" class="regexp"/> + <text class="regexp" x="54" y="15077">[#xA72D]</text> + <polygon points="43 15102 46 15093 142 15093 145 15102 142 15111 46 15111" class="regexp"/> + <text class="regexp" x="54" y="15105">[#xA72F-#xA731]</text> + <polygon points="43 15130 46 15121 104 15121 107 15130 104 15139 46 15139" class="regexp"/> + <text class="regexp" x="54" y="15133">[#xA733]</text> + <polygon points="43 15158 46 15149 104 15149 107 15158 104 15167 46 15167" class="regexp"/> + <text class="regexp" x="54" y="15161">[#xA735]</text> + <polygon points="43 15186 46 15177 104 15177 107 15186 104 15195 46 15195" class="regexp"/> + <text class="regexp" x="54" y="15189">[#xA737]</text> + <polygon points="43 15214 46 15205 104 15205 107 15214 104 15223 46 15223" class="regexp"/> + <text class="regexp" x="54" y="15217">[#xA739]</text> + <polygon points="43 15242 46 15233 104 15233 107 15242 104 15251 46 15251" class="regexp"/> + <text class="regexp" x="54" y="15245">[#xA73B]</text> + <polygon points="43 15270 46 15261 104 15261 107 15270 104 15279 46 15279" class="regexp"/> + <text class="regexp" x="54" y="15273">[#xA73D]</text> + <polygon points="43 15298 46 15289 102 15289 105 15298 102 15307 46 15307" class="regexp"/> + <text class="regexp" x="54" y="15301">[#xA73F]</text> + <polygon points="43 15326 46 15317 104 15317 107 15326 104 15335 46 15335" class="regexp"/> + <text class="regexp" x="54" y="15329">[#xA741]</text> + <polygon points="43 15354 46 15345 104 15345 107 15354 104 15363 46 15363" class="regexp"/> + <text class="regexp" x="54" y="15357">[#xA743]</text> + <polygon points="43 15382 46 15373 104 15373 107 15382 104 15391 46 15391" class="regexp"/> + <text class="regexp" x="54" y="15385">[#xA745]</text> + <polygon points="43 15410 46 15401 104 15401 107 15410 104 15419 46 15419" class="regexp"/> + <text class="regexp" x="54" y="15413">[#xA747]</text> + <polygon points="43 15438 46 15429 104 15429 107 15438 104 15447 46 15447" class="regexp"/> + <text class="regexp" x="54" y="15441">[#xA749]</text> + <polygon points="43 15466 46 15457 104 15457 107 15466 104 15475 46 15475" class="regexp"/> + <text class="regexp" x="54" y="15469">[#xA74B]</text> + <polygon points="43 15494 46 15485 104 15485 107 15494 104 15503 46 15503" class="regexp"/> + <text class="regexp" x="54" y="15497">[#xA74D]</text> + <polygon points="43 15522 46 15513 102 15513 105 15522 102 15531 46 15531" class="regexp"/> + <text class="regexp" x="54" y="15525">[#xA74F]</text> + <polygon points="43 15550 46 15541 104 15541 107 15550 104 15559 46 15559" class="regexp"/> + <text class="regexp" x="54" y="15553">[#xA751]</text> + <polygon points="43 15578 46 15569 104 15569 107 15578 104 15587 46 15587" class="regexp"/> + <text class="regexp" x="54" y="15581">[#xA753]</text> + <polygon points="43 15606 46 15597 104 15597 107 15606 104 15615 46 15615" class="regexp"/> + <text class="regexp" x="54" y="15609">[#xA755]</text> + <polygon points="43 15634 46 15625 104 15625 107 15634 104 15643 46 15643" class="regexp"/> + <text class="regexp" x="54" y="15637">[#xA757]</text> + <polygon points="43 15662 46 15653 104 15653 107 15662 104 15671 46 15671" class="regexp"/> + <text class="regexp" x="54" y="15665">[#xA759]</text> + <polygon points="43 15690 46 15681 104 15681 107 15690 104 15699 46 15699" class="regexp"/> + <text class="regexp" x="54" y="15693">[#xA75B]</text> + <polygon points="43 15718 46 15709 104 15709 107 15718 104 15727 46 15727" class="regexp"/> + <text class="regexp" x="54" y="15721">[#xA75D]</text> + <polygon points="43 15746 46 15737 102 15737 105 15746 102 15755 46 15755" class="regexp"/> + <text class="regexp" x="54" y="15749">[#xA75F]</text> + <polygon points="43 15774 46 15765 104 15765 107 15774 104 15783 46 15783" class="regexp"/> + <text class="regexp" x="54" y="15777">[#xA761]</text> + <polygon points="43 15802 46 15793 104 15793 107 15802 104 15811 46 15811" class="regexp"/> + <text class="regexp" x="54" y="15805">[#xA763]</text> + <polygon points="43 15830 46 15821 104 15821 107 15830 104 15839 46 15839" class="regexp"/> + <text class="regexp" x="54" y="15833">[#xA765]</text> + <polygon points="43 15858 46 15849 104 15849 107 15858 104 15867 46 15867" class="regexp"/> + <text class="regexp" x="54" y="15861">[#xA767]</text> + <polygon points="43 15886 46 15877 104 15877 107 15886 104 15895 46 15895" class="regexp"/> + <text class="regexp" x="54" y="15889">[#xA769]</text> + <polygon points="43 15914 46 15905 104 15905 107 15914 104 15923 46 15923" class="regexp"/> + <text class="regexp" x="54" y="15917">[#xA76B]</text> + <polygon points="43 15942 46 15933 104 15933 107 15942 104 15951 46 15951" class="regexp"/> + <text class="regexp" x="54" y="15945">[#xA76D]</text> + <polygon points="43 15970 46 15961 102 15961 105 15970 102 15979 46 15979" class="regexp"/> + <text class="regexp" x="54" y="15973">[#xA76F]</text> + <polygon points="43 15998 46 15989 144 15989 147 15998 144 16007 46 16007" class="regexp"/> + <text class="regexp" x="54" y="16001">[#xA771-#xA778]</text> + <polygon points="43 16026 46 16017 104 16017 107 16026 104 16035 46 16035" class="regexp"/> + <text class="regexp" x="54" y="16029">[#xA77A]</text> + <polygon points="43 16054 46 16045 104 16045 107 16054 104 16063 46 16063" class="regexp"/> + <text class="regexp" x="54" y="16057">[#xA77C]</text> + <polygon points="43 16082 46 16073 102 16073 105 16082 102 16091 46 16091" class="regexp"/> + <text class="regexp" x="54" y="16085">[#xA77F]</text> + <polygon points="43 16110 46 16101 104 16101 107 16110 104 16119 46 16119" class="regexp"/> + <text class="regexp" x="54" y="16113">[#xA781]</text> + <polygon points="43 16138 46 16129 104 16129 107 16138 104 16147 46 16147" class="regexp"/> + <text class="regexp" x="54" y="16141">[#xA783]</text> + <polygon points="43 16166 46 16157 104 16157 107 16166 104 16175 46 16175" class="regexp"/> + <text class="regexp" x="54" y="16169">[#xA785]</text> + <polygon points="43 16194 46 16185 104 16185 107 16194 104 16203 46 16203" class="regexp"/> + <text class="regexp" x="54" y="16197">[#xA787]</text> + <polygon points="43 16222 46 16213 104 16213 107 16222 104 16231 46 16231" class="regexp"/> + <text class="regexp" x="54" y="16225">[#xA78C]</text> + <polygon points="43 16250 46 16241 104 16241 107 16250 104 16259 46 16259" class="regexp"/> + <text class="regexp" x="54" y="16253">[#xA78E]</text> + <polygon points="43 16278 46 16269 104 16269 107 16278 104 16287 46 16287" class="regexp"/> + <text class="regexp" x="54" y="16281">[#xA791]</text> + <polygon points="43 16306 46 16297 144 16297 147 16306 144 16315 46 16315" class="regexp"/> + <text class="regexp" x="54" y="16309">[#xA793-#xA795]</text> + <polygon points="43 16334 46 16325 104 16325 107 16334 104 16343 46 16343" class="regexp"/> + <text class="regexp" x="54" y="16337">[#xA797]</text> + <polygon points="43 16362 46 16353 104 16353 107 16362 104 16371 46 16371" class="regexp"/> + <text class="regexp" x="54" y="16365">[#xA799]</text> + <polygon points="43 16390 46 16381 104 16381 107 16390 104 16399 46 16399" class="regexp"/> + <text class="regexp" x="54" y="16393">[#xA79B]</text> + <polygon points="43 16418 46 16409 104 16409 107 16418 104 16427 46 16427" class="regexp"/> + <text class="regexp" x="54" y="16421">[#xA79D]</text> + <polygon points="43 16446 46 16437 102 16437 105 16446 102 16455 46 16455" class="regexp"/> + <text class="regexp" x="54" y="16449">[#xA79F]</text> + <polygon points="43 16474 46 16465 104 16465 107 16474 104 16483 46 16483" class="regexp"/> + <text class="regexp" x="54" y="16477">[#xA7A1]</text> + <polygon points="43 16502 46 16493 104 16493 107 16502 104 16511 46 16511" class="regexp"/> + <text class="regexp" x="54" y="16505">[#xA7A3]</text> + <polygon points="43 16530 46 16521 104 16521 107 16530 104 16539 46 16539" class="regexp"/> + <text class="regexp" x="54" y="16533">[#xA7A5]</text> + <polygon points="43 16558 46 16549 104 16549 107 16558 104 16567 46 16567" class="regexp"/> + <text class="regexp" x="54" y="16561">[#xA7A7]</text> + <polygon points="43 16586 46 16577 104 16577 107 16586 104 16595 46 16595" class="regexp"/> + <text class="regexp" x="54" y="16589">[#xA7A9]</text> + <polygon points="43 16614 46 16605 102 16605 105 16614 102 16623 46 16623" class="regexp"/> + <text class="regexp" x="54" y="16617">[#xA7AF]</text> + <polygon points="43 16642 46 16633 104 16633 107 16642 104 16651 46 16651" class="regexp"/> + <text class="regexp" x="54" y="16645">[#xA7B5]</text> + <polygon points="43 16670 46 16661 104 16661 107 16670 104 16679 46 16679" class="regexp"/> + <text class="regexp" x="54" y="16673">[#xA7B7]</text> + <polygon points="43 16698 46 16689 104 16689 107 16698 104 16707 46 16707" class="regexp"/> + <text class="regexp" x="54" y="16701">[#xA7B9]</text> + <polygon points="43 16726 46 16717 104 16717 107 16726 104 16735 46 16735" class="regexp"/> + <text class="regexp" x="54" y="16729">[#xA7BB]</text> + <polygon points="43 16754 46 16745 104 16745 107 16754 104 16763 46 16763" class="regexp"/> + <text class="regexp" x="54" y="16757">[#xA7BD]</text> + <polygon points="43 16782 46 16773 102 16773 105 16782 102 16791 46 16791" class="regexp"/> + <text class="regexp" x="54" y="16785">[#xA7BF]</text> + <polygon points="43 16810 46 16801 104 16801 107 16810 104 16819 46 16819" class="regexp"/> + <text class="regexp" x="54" y="16813">[#xA7C1]</text> + <polygon points="43 16838 46 16829 104 16829 107 16838 104 16847 46 16847" class="regexp"/> + <text class="regexp" x="54" y="16841">[#xA7C3]</text> + <polygon points="43 16866 46 16857 104 16857 107 16866 104 16875 46 16875" class="regexp"/> + <text class="regexp" x="54" y="16869">[#xA7C8]</text> + <polygon points="43 16894 46 16885 104 16885 107 16894 104 16903 46 16903" class="regexp"/> + <text class="regexp" x="54" y="16897">[#xA7CA]</text> + <polygon points="43 16922 46 16913 104 16913 107 16922 104 16931 46 16931" class="regexp"/> + <text class="regexp" x="54" y="16925">[#xA7D1]</text> + <polygon points="43 16950 46 16941 104 16941 107 16950 104 16959 46 16959" class="regexp"/> + <text class="regexp" x="54" y="16953">[#xA7D3]</text> + <polygon points="43 16978 46 16969 104 16969 107 16978 104 16987 46 16987" class="regexp"/> + <text class="regexp" x="54" y="16981">[#xA7D5]</text> + <polygon points="43 17006 46 16997 104 16997 107 17006 104 17015 46 17015" class="regexp"/> + <text class="regexp" x="54" y="17009">[#xA7D7]</text> + <polygon points="43 17034 46 17025 104 17025 107 17034 104 17043 46 17043" class="regexp"/> + <text class="regexp" x="54" y="17037">[#xA7D9]</text> + <polygon points="43 17062 46 17053 102 17053 105 17062 102 17071 46 17071" class="regexp"/> + <text class="regexp" x="54" y="17065">[#xA7F6]</text> + <polygon points="43 17090 46 17081 102 17081 105 17090 102 17099 46 17099" class="regexp"/> + <text class="regexp" x="54" y="17093">[#xA7FA]</text> + <polygon points="43 17118 46 17109 144 17109 147 17118 144 17127 46 17127" class="regexp"/> + <text class="regexp" x="54" y="17121">[#xAB30-#xAB5A]</text> + <polygon points="43 17146 46 17137 144 17137 147 17146 144 17155 46 17155" class="regexp"/> + <text class="regexp" x="54" y="17149">[#xAB60-#xAB68]</text> + <polygon points="43 17174 46 17165 144 17165 147 17174 144 17183 46 17183" class="regexp"/> + <text class="regexp" x="54" y="17177">[#xAB70-#xABBF]</text> + <polygon points="43 17202 46 17193 142 17193 145 17202 142 17211 46 17211" class="regexp"/> + <text class="regexp" x="54" y="17205">[#xFB00-#xFB06]</text> + <polygon points="43 17230 46 17221 142 17221 145 17230 142 17239 46 17239" class="regexp"/> + <text class="regexp" x="54" y="17233">[#xFB13-#xFB17]</text> + <polygon points="43 17258 46 17249 140 17249 143 17258 140 17267 46 17267" class="regexp"/> + <text class="regexp" x="54" y="17261">[#xFF41-#xFF5A]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m40 0 h4 m0 0 h66 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 m52 0 h4 m0 0 h54 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m78 0 h4 m0 0 h28 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m76 0 h4 m0 0 h30 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m60 0 h4 m0 0 h46 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m60 0 h4 m0 0 h46 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m60 0 h4 m0 0 h46 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m60 0 h4 m0 0 h46 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m23 -17248 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="#ll" title="Ll" shape="rect">Ll</a>       ::= [a-z#xB5#xDF-#xF6#xF8-#xFF#x101#x103#x105#x107#x109#x10B#x10D#x10F#x111#x113#x115#x117#x119#x11B#x11D#x11F#x121#x123#x125#x127#x129#x12B#x12D#x12F#x131#x133#x135#x137-#x138#x13A#x13C#x13E#x140#x142#x144#x146#x148-#x149#x14B#x14D#x14F#x151#x153#x155#x157#x159#x15B#x15D#x15F#x161#x163#x165#x167#x169#x16B#x16D#x16F#x171#x173#x175#x177#x17A#x17C#x17E-#x180#x183#x185#x188#x18C-#x18D#x192#x195#x199-#x19B#x19E#x1A1#x1A3#x1A5#x1A8#x1AA-#x1AB#x1AD#x1B0#x1B4#x1B6#x1B9-#x1BA#x1BD-#x1BF#x1C6#x1C9#x1CC#x1CE#x1D0#x1D2#x1D4#x1D6#x1D8#x1DA#x1DC-#x1DD#x1DF#x1E1#x1E3#x1E5#x1E7#x1E9#x1EB#x1ED#x1EF-#x1F0#x1F3#x1F5#x1F9#x1FB#x1FD#x1FF#x201#x203#x205#x207#x209#x20B#x20D#x20F#x211#x213#x215#x217#x219#x21B#x21D#x21F#x221#x223#x225#x227#x229#x22B#x22D#x22F#x231#x233-#x239#x23C#x23F-#x240#x242#x247#x249#x24B#x24D#x24F-#x293#x295-#x2AF#x371#x373#x377#x37B-#x37D#x390#x3AC-#x3CE#x3D0-#x3D1#x3D5-#x3D7#x3D9#x3DB#x3DD#x3DF#x3E1#x3E3#x3E5#x3E7#x3E9#x3EB#x3ED#x3EF-#x3F3#x3F5#x3F8#x3FB-#x3FC#x430-#x45F#x461#x463#x465#x467#x469#x46B#x46D#x46F#x471#x473#x475#x477#x479#x47B#x47D#x47F#x481#x48B#x48D#x48F#x491#x493#x495#x497#x499#x49B#x49D#x49F#x4A1#x4A3#x4A5#x4A7#x4A9#x4AB#x4AD#x4AF#x4B1#x4B3#x4B5#x4B7#x4B9#x4BB#x4BD#x4BF#x4C2#x4C4#x4C6#x4C8#x4CA#x4CC#x4CE-#x4CF#x4D1#x4D3#x4D5#x4D7#x4D9#x4DB#x4DD#x4DF#x4E1#x4E3#x4E5#x4E7#x4E9#x4EB#x4ED#x4EF#x4F1#x4F3#x4F5#x4F7#x4F9#x4FB#x4FD#x4FF#x501#x503#x505#x507#x509#x50B#x50D#x50F#x511#x513#x515#x517#x519#x51B#x51D#x51F#x521#x523#x525#x527#x529#x52B#x52D#x52F#x560-#x588#x10D0-#x10FA#x10FD-#x10FF#x13F8-#x13FD#x1C80-#x1C88#x1D00-#x1D2B#x1D6B-#x1D77#x1D79-#x1D9A#x1E01#x1E03#x1E05#x1E07#x1E09#x1E0B#x1E0D#x1E0F#x1E11#x1E13#x1E15#x1E17#x1E19#x1E1B#x1E1D#x1E1F#x1E21#x1E23#x1E25#x1E27#x1E29#x1E2B#x1E2D#x1E2F#x1E31#x1E33#x1E35#x1E37#x1E39#x1E3B#x1E3D#x1E3F#x1E41#x1E43#x1E45#x1E47#x1E49#x1E4B#x1E4D#x1E4F#x1E51#x1E53#x1E55#x1E57#x1E59#x1E5B#x1E5D#x1E5F#x1E61#x1E63#x1E65#x1E67#x1E69#x1E6B#x1E6D#x1E6F#x1E71#x1E73#x1E75#x1E77#x1E79#x1E7B#x1E7D#x1E7F#x1E81#x1E83#x1E85#x1E87#x1E89#x1E8B#x1E8D#x1E8F#x1E91#x1E93#x1E95-#x1E9D#x1E9F#x1EA1#x1EA3#x1EA5#x1EA7#x1EA9#x1EAB#x1EAD#x1EAF#x1EB1#x1EB3#x1EB5#x1EB7#x1EB9#x1EBB#x1EBD#x1EBF#x1EC1#x1EC3#x1EC5#x1EC7#x1EC9#x1ECB#x1ECD#x1ECF#x1ED1#x1ED3#x1ED5#x1ED7#x1ED9#x1EDB#x1EDD#x1EDF#x1EE1#x1EE3#x1EE5#x1EE7#x1EE9#x1EEB#x1EED#x1EEF#x1EF1#x1EF3#x1EF5#x1EF7#x1EF9#x1EFB#x1EFD#x1EFF-#x1F07#x1F10-#x1F15#x1F20-#x1F27#x1F30-#x1F37#x1F40-#x1F45#x1F50-#x1F57#x1F60-#x1F67#x1F70-#x1F7D#x1F80-#x1F87#x1F90-#x1F97#x1FA0-#x1FA7#x1FB0-#x1FB4#x1FB6-#x1FB7#x1FBE#x1FC2-#x1FC4#x1FC6-#x1FC7#x1FD0-#x1FD3#x1FD6-#x1FD7#x1FE0-#x1FE7#x1FF2-#x1FF4#x1FF6-#x1FF7#x210A#x210E-#x210F#x2113#x212F#x2134#x2139#x213C-#x213D#x2146-#x2149#x214E#x2184#x2C30-#x2C5F#x2C61#x2C65-#x2C66#x2C68#x2C6A#x2C6C#x2C71#x2C73-#x2C74#x2C76-#x2C7B#x2C81#x2C83#x2C85#x2C87#x2C89#x2C8B#x2C8D#x2C8F#x2C91#x2C93#x2C95#x2C97#x2C99#x2C9B#x2C9D#x2C9F#x2CA1#x2CA3#x2CA5#x2CA7#x2CA9#x2CAB#x2CAD#x2CAF#x2CB1#x2CB3#x2CB5#x2CB7#x2CB9#x2CBB#x2CBD#x2CBF#x2CC1#x2CC3#x2CC5#x2CC7#x2CC9#x2CCB#x2CCD#x2CCF#x2CD1#x2CD3#x2CD5#x2CD7#x2CD9#x2CDB#x2CDD#x2CDF#x2CE1#x2CE3-#x2CE4#x2CEC#x2CEE#x2CF3#x2D00-#x2D25#x2D27#x2D2D#xA641#xA643#xA645#xA647#xA649#xA64B#xA64D#xA64F#xA651#xA653#xA655#xA657#xA659#xA65B#xA65D#xA65F#xA661#xA663#xA665#xA667#xA669#xA66B#xA66D#xA681#xA683#xA685#xA687#xA689#xA68B#xA68D#xA68F#xA691#xA693#xA695#xA697#xA699#xA69B#xA723#xA725#xA727#xA729#xA72B#xA72D#xA72F-#xA731#xA733#xA735#xA737#xA739#xA73B#xA73D#xA73F#xA741#xA743#xA745#xA747#xA749#xA74B#xA74D#xA74F#xA751#xA753#xA755#xA757#xA759#xA75B#xA75D#xA75F#xA761#xA763#xA765#xA767#xA769#xA76B#xA76D#xA76F#xA771-#xA778#xA77A#xA77C#xA77F#xA781#xA783#xA785#xA787#xA78C#xA78E#xA791#xA793-#xA795#xA797#xA799#xA79B#xA79D#xA79F#xA7A1#xA7A3#xA7A5#xA7A7#xA7A9#xA7AF#xA7B5#xA7B7#xA7B9#xA7BB#xA7BD#xA7BF#xA7C1#xA7C3#xA7C8#xA7CA#xA7D1#xA7D3#xA7D5#xA7D7#xA7D9#xA7F6#xA7FA#xAB30-#xAB5A#xAB60-#xAB68#xAB70-#xABBF#xFB00-#xFB06#xFB13-#xFB17#xFF41-#xFF5A]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierstart" title="unicodeidentifierstart">unicodeidentifierstart</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Lm +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="1589"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 132 1 135 10 132 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#x2B0-#x2C1]</text> + <polygon points="43 38 46 29 134 29 137 38 134 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x2C6-#x2D1]</text> + <polygon points="43 66 46 57 132 57 135 66 132 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x2E0-#x2E4]</text> + <polygon points="43 94 46 85 98 85 101 94 98 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x2EC]</text> + <polygon points="43 122 46 113 98 113 101 122 98 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x2EE]</text> + <polygon points="43 150 46 141 98 141 101 150 98 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x374]</text> + <polygon points="43 178 46 169 98 169 101 178 98 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#x37A]</text> + <polygon points="43 206 46 197 98 197 101 206 98 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#x559]</text> + <polygon points="43 234 46 225 98 225 101 234 98 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#x640]</text> + <polygon points="43 262 46 253 132 253 135 262 132 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#x6E5-#x6E6]</text> + <polygon points="43 290 46 281 130 281 133 290 130 299 46 299" class="regexp"/> + <text class="regexp" x="54" y="293">[#x7F4-#x7F5]</text> + <polygon points="43 318 46 309 96 309 99 318 96 327 46 327" class="regexp"/> + <text class="regexp" x="54" y="321">[#x7FA]</text> + <polygon points="43 346 46 337 98 337 101 346 98 355 46 355" class="regexp"/> + <text class="regexp" x="54" y="349">[#x81A]</text> + <polygon points="43 374 46 365 98 365 101 374 98 383 46 383" class="regexp"/> + <text class="regexp" x="54" y="377">[#x824]</text> + <polygon points="43 402 46 393 98 393 101 402 98 411 46 411" class="regexp"/> + <text class="regexp" x="54" y="405">[#x828]</text> + <polygon points="43 430 46 421 98 421 101 430 98 439 46 439" class="regexp"/> + <text class="regexp" x="54" y="433">[#x8C9]</text> + <polygon points="43 458 46 449 98 449 101 458 98 467 46 467" class="regexp"/> + <text class="regexp" x="54" y="461">[#x971]</text> + <polygon points="43 486 46 477 98 477 101 486 98 495 46 495" class="regexp"/> + <text class="regexp" x="54" y="489">[#xE46]</text> + <polygon points="43 514 46 505 98 505 101 514 98 523 46 523" class="regexp"/> + <text class="regexp" x="54" y="517">[#xEC6]</text> + <polygon points="43 542 46 533 104 533 107 542 104 551 46 551" class="regexp"/> + <text class="regexp" x="54" y="545">[#x10FC]</text> + <polygon points="43 570 46 561 104 561 107 570 104 579 46 579" class="regexp"/> + <text class="regexp" x="54" y="573">[#x17D7]</text> + <polygon points="43 598 46 589 104 589 107 598 104 607 46 607" class="regexp"/> + <text class="regexp" x="54" y="601">[#x1843]</text> + <polygon points="43 626 46 617 104 617 107 626 104 635 46 635" class="regexp"/> + <text class="regexp" x="54" y="629">[#x1AA7]</text> + <polygon points="43 654 46 645 146 645 149 654 146 663 46 663" class="regexp"/> + <text class="regexp" x="54" y="657">[#x1C78-#x1C7D]</text> + <polygon points="43 682 46 673 148 673 151 682 148 691 46 691" class="regexp"/> + <text class="regexp" x="54" y="685">[#x1D2C-#x1D6A]</text> + <polygon points="43 710 46 701 104 701 107 710 104 719 46 719" class="regexp"/> + <text class="regexp" x="54" y="713">[#x1D78]</text> + <polygon points="43 738 46 729 146 729 149 738 146 747 46 747" class="regexp"/> + <text class="regexp" x="54" y="741">[#x1D9B-#x1DBF]</text> + <polygon points="43 766 46 757 104 757 107 766 104 775 46 775" class="regexp"/> + <text class="regexp" x="54" y="769">[#x2071]</text> + <polygon points="43 794 46 785 102 785 105 794 102 803 46 803" class="regexp"/> + <text class="regexp" x="54" y="797">[#x207F]</text> + <polygon points="43 822 46 813 144 813 147 822 144 831 46 831" class="regexp"/> + <text class="regexp" x="54" y="825">[#x2090-#x209C]</text> + <polygon points="43 850 46 841 148 841 151 850 148 859 46 859" class="regexp"/> + <text class="regexp" x="54" y="853">[#x2C7C-#x2C7D]</text> + <polygon points="43 878 46 869 104 869 107 878 104 887 46 887" class="regexp"/> + <text class="regexp" x="54" y="881">[#x2D6F]</text> + <polygon points="43 906 46 897 102 897 105 906 102 915 46 915" class="regexp"/> + <text class="regexp" x="54" y="909">[#x2E2F]</text> + <polygon points="43 934 46 925 104 925 107 934 104 943 46 943" class="regexp"/> + <text class="regexp" x="54" y="937">[#x3005]</text> + <polygon points="43 962 46 953 144 953 147 962 144 971 46 971" class="regexp"/> + <text class="regexp" x="54" y="965">[#x3031-#x3035]</text> + <polygon points="43 990 46 981 104 981 107 990 104 999 46 999" class="regexp"/> + <text class="regexp" x="54" y="993">[#x303B]</text> + <polygon points="43 1018 46 1009 144 1009 147 1018 144 1027 46 1027" class="regexp"/> + <text class="regexp" x="54" y="1021">[#x309D-#x309E]</text> + <polygon points="43 1046 46 1037 142 1037 145 1046 142 1055 46 1055" class="regexp"/> + <text class="regexp" x="54" y="1049">[#x30FC-#x30FE]</text> + <polygon points="43 1074 46 1065 104 1065 107 1074 104 1083 46 1083" class="regexp"/> + <text class="regexp" x="54" y="1077">[#xA015]</text> + <polygon points="43 1102 46 1093 144 1093 147 1102 144 1111 46 1111" class="regexp"/> + <text class="regexp" x="54" y="1105">[#xA4F8-#xA4FD]</text> + <polygon points="43 1130 46 1121 104 1121 107 1130 104 1139 46 1139" class="regexp"/> + <text class="regexp" x="54" y="1133">[#xA60C]</text> + <polygon points="43 1158 46 1149 102 1149 105 1158 102 1167 46 1167" class="regexp"/> + <text class="regexp" x="54" y="1161">[#xA67F]</text> + <polygon points="43 1186 46 1177 146 1177 149 1186 146 1195 46 1195" class="regexp"/> + <text class="regexp" x="54" y="1189">[#xA69C-#xA69D]</text> + <polygon points="43 1214 46 1205 142 1205 145 1214 142 1223 46 1223" class="regexp"/> + <text class="regexp" x="54" y="1217">[#xA717-#xA71F]</text> + <polygon points="43 1242 46 1233 104 1233 107 1242 104 1251 46 1251" class="regexp"/> + <text class="regexp" x="54" y="1245">[#xA770]</text> + <polygon points="43 1270 46 1261 104 1261 107 1270 104 1279 46 1279" class="regexp"/> + <text class="regexp" x="54" y="1273">[#xA788]</text> + <polygon points="43 1298 46 1289 142 1289 145 1298 142 1307 46 1307" class="regexp"/> + <text class="regexp" x="54" y="1301">[#xA7F2-#xA7F4]</text> + <polygon points="43 1326 46 1317 142 1317 145 1326 142 1335 46 1335" class="regexp"/> + <text class="regexp" x="54" y="1329">[#xA7F8-#xA7F9]</text> + <polygon points="43 1354 46 1345 104 1345 107 1354 104 1363 46 1363" class="regexp"/> + <text class="regexp" x="54" y="1357">[#xA9CF]</text> + <polygon points="43 1382 46 1373 104 1373 107 1382 104 1391 46 1391" class="regexp"/> + <text class="regexp" x="54" y="1385">[#xA9E6]</text> + <polygon points="43 1410 46 1401 104 1401 107 1410 104 1419 46 1419" class="regexp"/> + <text class="regexp" x="54" y="1413">[#xAA70]</text> + <polygon points="43 1438 46 1429 106 1429 109 1438 106 1447 46 1447" class="regexp"/> + <text class="regexp" x="54" y="1441">[#xAADD]</text> + <polygon points="43 1466 46 1457 142 1457 145 1466 142 1475 46 1475" class="regexp"/> + <text class="regexp" x="54" y="1469">[#xAAF3-#xAAF4]</text> + <polygon points="43 1494 46 1485 144 1485 147 1494 144 1503 46 1503" class="regexp"/> + <text class="regexp" x="54" y="1497">[#xAB5C-#xAB5F]</text> + <polygon points="43 1522 46 1513 104 1513 107 1522 104 1531 46 1531" class="regexp"/> + <text class="regexp" x="54" y="1525">[#xAB69]</text> + <polygon points="43 1550 46 1541 102 1541 105 1550 102 1559 46 1559" class="regexp"/> + <text class="regexp" x="54" y="1553">[#xFF70]</text> + <polygon points="43 1578 46 1569 138 1569 141 1578 138 1587 46 1587" class="regexp"/> + <text class="regexp" x="54" y="1581">[#xFF9E-#xFF9F]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m92 0 h4 m0 0 h16 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 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m66 0 h4 m0 0 h42 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m98 0 h4 m0 0 h10 m23 -1568 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="#lm" title="Lm" shape="rect">Lm</a>       ::= [#x2B0-#x2C1#x2C6-#x2D1#x2E0-#x2E4#x2EC#x2EE#x374#x37A#x559#x640#x6E5-#x6E6#x7F4-#x7F5#x7FA#x81A#x824#x828#x8C9#x971#xE46#xEC6#x10FC#x17D7#x1843#x1AA7#x1C78-#x1C7D#x1D2C-#x1D6A#x1D78#x1D9B-#x1DBF#x2071#x207F#x2090-#x209C#x2C7C-#x2C7D#x2D6F#x2E2F#x3005#x3031-#x3035#x303B#x309D-#x309E#x30FC-#x30FE#xA015#xA4F8-#xA4FD#xA60C#xA67F#xA69C-#xA69D#xA717-#xA71F#xA770#xA788#xA7F2-#xA7F4#xA7F8-#xA7F9#xA9CF#xA9E6#xAA70#xAADD#xAAF3-#xAAF4#xAB5C-#xAB5F#xAB69#xFF70#xFF9E-#xFF9F]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierstart" title="unicodeidentifierstart">unicodeidentifierstart</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Lo +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="8113"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 92 1 95 10 92 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#xAA]</text> + <polygon points="43 38 46 29 92 29 95 38 92 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#xBA]</text> + <polygon points="43 66 46 57 98 57 101 66 98 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x1BB]</text> + <polygon points="43 94 46 85 134 85 137 94 134 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x1C0-#x1C3]</text> + <polygon points="43 122 46 113 98 113 101 122 98 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x294]</text> + <polygon points="43 150 46 141 132 141 135 150 132 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x5D0-#x5EA]</text> + <polygon points="43 178 46 169 130 169 133 178 130 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#x5EF-#x5F2]</text> + <polygon points="43 206 46 197 130 197 133 206 130 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#x620-#x63F]</text> + <polygon points="43 234 46 225 132 225 135 234 132 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#x641-#x64A]</text> + <polygon points="43 262 46 253 130 253 133 262 130 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#x66E-#x66F]</text> + <polygon points="43 290 46 281 132 281 135 290 132 299 46 299" class="regexp"/> + <text class="regexp" x="54" y="293">[#x671-#x6D3]</text> + <polygon points="43 318 46 309 98 309 101 318 98 327 46 327" class="regexp"/> + <text class="regexp" x="54" y="321">[#x6D5]</text> + <polygon points="43 346 46 337 130 337 133 346 130 355 46 355" class="regexp"/> + <text class="regexp" x="54" y="349">[#x6EE-#x6EF]</text> + <polygon points="43 374 46 365 130 365 133 374 130 383 46 383" class="regexp"/> + <text class="regexp" x="54" y="377">[#x6FA-#x6FC]</text> + <polygon points="43 402 46 393 96 393 99 402 96 411 46 411" class="regexp"/> + <text class="regexp" x="54" y="405">[#x6FF]</text> + <polygon points="43 430 46 421 98 421 101 430 98 439 46 439" class="regexp"/> + <text class="regexp" x="54" y="433">[#x710]</text> + <polygon points="43 458 46 449 130 449 133 458 130 467 46 467" class="regexp"/> + <text class="regexp" x="54" y="461">[#x712-#x72F]</text> + <polygon points="43 486 46 477 132 477 135 486 132 495 46 495" class="regexp"/> + <text class="regexp" x="54" y="489">[#x74D-#x7A5]</text> + <polygon points="43 514 46 505 98 505 101 514 98 523 46 523" class="regexp"/> + <text class="regexp" x="54" y="517">[#x7B1]</text> + <polygon points="43 542 46 533 132 533 135 542 132 551 46 551" class="regexp"/> + <text class="regexp" x="54" y="545">[#x7CA-#x7EA]</text> + <polygon points="43 570 46 561 132 561 135 570 132 579 46 579" class="regexp"/> + <text class="regexp" x="54" y="573">[#x800-#x815]</text> + <polygon points="43 598 46 589 132 589 135 598 132 607 46 607" class="regexp"/> + <text class="regexp" x="54" y="601">[#x840-#x858]</text> + <polygon points="43 626 46 617 132 617 135 626 132 635 46 635" class="regexp"/> + <text class="regexp" x="54" y="629">[#x860-#x86A]</text> + <polygon points="43 654 46 645 132 645 135 654 132 663 46 663" class="regexp"/> + <text class="regexp" x="54" y="657">[#x870-#x887]</text> + <polygon points="43 682 46 673 132 673 135 682 132 691 46 691" class="regexp"/> + <text class="regexp" x="54" y="685">[#x889-#x88E]</text> + <polygon points="43 710 46 701 132 701 135 710 132 719 46 719" class="regexp"/> + <text class="regexp" x="54" y="713">[#x8A0-#x8C8]</text> + <polygon points="43 738 46 729 132 729 135 738 132 747 46 747" class="regexp"/> + <text class="regexp" x="54" y="741">[#x904-#x939]</text> + <polygon points="43 766 46 757 98 757 101 766 98 775 46 775" class="regexp"/> + <text class="regexp" x="54" y="769">[#x93D]</text> + <polygon points="43 794 46 785 98 785 101 794 98 803 46 803" class="regexp"/> + <text class="regexp" x="54" y="797">[#x950]</text> + <polygon points="43 822 46 813 132 813 135 822 132 831 46 831" class="regexp"/> + <text class="regexp" x="54" y="825">[#x958-#x961]</text> + <polygon points="43 850 46 841 132 841 135 850 132 859 46 859" class="regexp"/> + <text class="regexp" x="54" y="853">[#x972-#x980]</text> + <polygon points="43 878 46 869 132 869 135 878 132 887 46 887" class="regexp"/> + <text class="regexp" x="54" y="881">[#x985-#x98C]</text> + <polygon points="43 906 46 897 130 897 133 906 130 915 46 915" class="regexp"/> + <text class="regexp" x="54" y="909">[#x98F-#x990]</text> + <polygon points="43 934 46 925 132 925 135 934 132 943 46 943" class="regexp"/> + <text class="regexp" x="54" y="937">[#x993-#x9A8]</text> + <polygon points="43 962 46 953 132 953 135 962 132 971 46 971" class="regexp"/> + <text class="regexp" x="54" y="965">[#x9AA-#x9B0]</text> + <polygon points="43 990 46 981 98 981 101 990 98 999 46 999" class="regexp"/> + <text class="regexp" x="54" y="993">[#x9B2]</text> + <polygon points="43 1018 46 1009 132 1009 135 1018 132 1027 46 1027" class="regexp"/> + <text class="regexp" x="54" y="1021">[#x9B6-#x9B9]</text> + <polygon points="43 1046 46 1037 98 1037 101 1046 98 1055 46 1055" class="regexp"/> + <text class="regexp" x="54" y="1049">[#x9BD]</text> + <polygon points="43 1074 46 1065 98 1065 101 1074 98 1083 46 1083" class="regexp"/> + <text class="regexp" x="54" y="1077">[#x9CE]</text> + <polygon points="43 1102 46 1093 136 1093 139 1102 136 1111 46 1111" class="regexp"/> + <text class="regexp" x="54" y="1105">[#x9DC-#x9DD]</text> + <polygon points="43 1130 46 1121 132 1121 135 1130 132 1139 46 1139" class="regexp"/> + <text class="regexp" x="54" y="1133">[#x9DF-#x9E1]</text> + <polygon points="43 1158 46 1149 130 1149 133 1158 130 1167 46 1167" class="regexp"/> + <text class="regexp" x="54" y="1161">[#x9F0-#x9F1]</text> + <polygon points="43 1186 46 1177 98 1177 101 1186 98 1195 46 1195" class="regexp"/> + <text class="regexp" x="54" y="1189">[#x9FC]</text> + <polygon points="43 1214 46 1205 132 1205 135 1214 132 1223 46 1223" class="regexp"/> + <text class="regexp" x="54" y="1217">[#xA05-#xA0A]</text> + <polygon points="43 1242 46 1233 130 1233 133 1242 130 1251 46 1251" class="regexp"/> + <text class="regexp" x="54" y="1245">[#xA0F-#xA10]</text> + <polygon points="43 1270 46 1261 132 1261 135 1270 132 1279 46 1279" class="regexp"/> + <text class="regexp" x="54" y="1273">[#xA13-#xA28]</text> + <polygon points="43 1298 46 1289 132 1289 135 1298 132 1307 46 1307" class="regexp"/> + <text class="regexp" x="54" y="1301">[#xA2A-#xA30]</text> + <polygon points="43 1326 46 1317 132 1317 135 1326 132 1335 46 1335" class="regexp"/> + <text class="regexp" x="54" y="1329">[#xA32-#xA33]</text> + <polygon points="43 1354 46 1345 132 1345 135 1354 132 1363 46 1363" class="regexp"/> + <text class="regexp" x="54" y="1357">[#xA35-#xA36]</text> + <polygon points="43 1382 46 1373 132 1373 135 1382 132 1391 46 1391" class="regexp"/> + <text class="regexp" x="54" y="1385">[#xA38-#xA39]</text> + <polygon points="43 1410 46 1401 132 1401 135 1410 132 1419 46 1419" class="regexp"/> + <text class="regexp" x="54" y="1413">[#xA59-#xA5C]</text> + <polygon points="43 1438 46 1429 98 1429 101 1438 98 1447 46 1447" class="regexp"/> + <text class="regexp" x="54" y="1441">[#xA5E]</text> + <polygon points="43 1466 46 1457 132 1457 135 1466 132 1475 46 1475" class="regexp"/> + <text class="regexp" x="54" y="1469">[#xA72-#xA74]</text> + <polygon points="43 1494 46 1485 134 1485 137 1494 134 1503 46 1503" class="regexp"/> + <text class="regexp" x="54" y="1497">[#xA85-#xA8D]</text> + <polygon points="43 1522 46 1513 130 1513 133 1522 130 1531 46 1531" class="regexp"/> + <text class="regexp" x="54" y="1525">[#xA8F-#xA91]</text> + <polygon points="43 1550 46 1541 132 1541 135 1550 132 1559 46 1559" class="regexp"/> + <text class="regexp" x="54" y="1553">[#xA93-#xAA8]</text> + <polygon points="43 1578 46 1569 132 1569 135 1578 132 1587 46 1587" class="regexp"/> + <text class="regexp" x="54" y="1581">[#xAAA-#xAB0]</text> + <polygon points="43 1606 46 1597 132 1597 135 1606 132 1615 46 1615" class="regexp"/> + <text class="regexp" x="54" y="1609">[#xAB2-#xAB3]</text> + <polygon points="43 1634 46 1625 132 1625 135 1634 132 1643 46 1643" class="regexp"/> + <text class="regexp" x="54" y="1637">[#xAB5-#xAB9]</text> + <polygon points="43 1662 46 1653 98 1653 101 1662 98 1671 46 1671" class="regexp"/> + <text class="regexp" x="54" y="1665">[#xABD]</text> + <polygon points="43 1690 46 1681 98 1681 101 1690 98 1699 46 1699" class="regexp"/> + <text class="regexp" x="54" y="1693">[#xAD0]</text> + <polygon points="43 1718 46 1709 132 1709 135 1718 132 1727 46 1727" class="regexp"/> + <text class="regexp" x="54" y="1721">[#xAE0-#xAE1]</text> + <polygon points="43 1746 46 1737 96 1737 99 1746 96 1755 46 1755" class="regexp"/> + <text class="regexp" x="54" y="1749">[#xAF9]</text> + <polygon points="43 1774 46 1765 132 1765 135 1774 132 1783 46 1783" class="regexp"/> + <text class="regexp" x="54" y="1777">[#xB05-#xB0C]</text> + <polygon points="43 1802 46 1793 130 1793 133 1802 130 1811 46 1811" class="regexp"/> + <text class="regexp" x="54" y="1805">[#xB0F-#xB10]</text> + <polygon points="43 1830 46 1821 132 1821 135 1830 132 1839 46 1839" class="regexp"/> + <text class="regexp" x="54" y="1833">[#xB13-#xB28]</text> + <polygon points="43 1858 46 1849 132 1849 135 1858 132 1867 46 1867" class="regexp"/> + <text class="regexp" x="54" y="1861">[#xB2A-#xB30]</text> + <polygon points="43 1886 46 1877 132 1877 135 1886 132 1895 46 1895" class="regexp"/> + <text class="regexp" x="54" y="1889">[#xB32-#xB33]</text> + <polygon points="43 1914 46 1905 132 1905 135 1914 132 1923 46 1923" class="regexp"/> + <text class="regexp" x="54" y="1917">[#xB35-#xB39]</text> + <polygon points="43 1942 46 1933 98 1933 101 1942 98 1951 46 1951" class="regexp"/> + <text class="regexp" x="54" y="1945">[#xB3D]</text> + <polygon points="43 1970 46 1961 134 1961 137 1970 134 1979 46 1979" class="regexp"/> + <text class="regexp" x="54" y="1973">[#xB5C-#xB5D]</text> + <polygon points="43 1998 46 1989 130 1989 133 1998 130 2007 46 2007" class="regexp"/> + <text class="regexp" x="54" y="2001">[#xB5F-#xB61]</text> + <polygon points="43 2026 46 2017 98 2017 101 2026 98 2035 46 2035" class="regexp"/> + <text class="regexp" x="54" y="2029">[#xB71]</text> + <polygon points="43 2054 46 2045 98 2045 101 2054 98 2063 46 2063" class="regexp"/> + <text class="regexp" x="54" y="2057">[#xB83]</text> + <polygon points="43 2082 46 2073 132 2073 135 2082 132 2091 46 2091" class="regexp"/> + <text class="regexp" x="54" y="2085">[#xB85-#xB8A]</text> + <polygon points="43 2110 46 2101 132 2101 135 2110 132 2119 46 2119" class="regexp"/> + <text class="regexp" x="54" y="2113">[#xB8E-#xB90]</text> + <polygon points="43 2138 46 2129 132 2129 135 2138 132 2147 46 2147" class="regexp"/> + <text class="regexp" x="54" y="2141">[#xB92-#xB95]</text> + <polygon points="43 2166 46 2157 132 2157 135 2166 132 2175 46 2175" class="regexp"/> + <text class="regexp" x="54" y="2169">[#xB99-#xB9A]</text> + <polygon points="43 2194 46 2185 98 2185 101 2194 98 2203 46 2203" class="regexp"/> + <text class="regexp" x="54" y="2197">[#xB9C]</text> + <polygon points="43 2222 46 2213 130 2213 133 2222 130 2231 46 2231" class="regexp"/> + <text class="regexp" x="54" y="2225">[#xB9E-#xB9F]</text> + <polygon points="43 2250 46 2241 132 2241 135 2250 132 2259 46 2259" class="regexp"/> + <text class="regexp" x="54" y="2253">[#xBA3-#xBA4]</text> + <polygon points="43 2278 46 2269 132 2269 135 2278 132 2287 46 2287" class="regexp"/> + <text class="regexp" x="54" y="2281">[#xBA8-#xBAA]</text> + <polygon points="43 2306 46 2297 132 2297 135 2306 132 2315 46 2315" class="regexp"/> + <text class="regexp" x="54" y="2309">[#xBAE-#xBB9]</text> + <polygon points="43 2334 46 2325 98 2325 101 2334 98 2343 46 2343" class="regexp"/> + <text class="regexp" x="54" y="2337">[#xBD0]</text> + <polygon points="43 2362 46 2353 134 2353 137 2362 134 2371 46 2371" class="regexp"/> + <text class="regexp" x="54" y="2365">[#xC05-#xC0C]</text> + <polygon points="43 2390 46 2381 134 2381 137 2390 134 2399 46 2399" class="regexp"/> + <text class="regexp" x="54" y="2393">[#xC0E-#xC10]</text> + <polygon points="43 2418 46 2409 134 2409 137 2418 134 2427 46 2427" class="regexp"/> + <text class="regexp" x="54" y="2421">[#xC12-#xC28]</text> + <polygon points="43 2446 46 2437 134 2437 137 2446 134 2455 46 2455" class="regexp"/> + <text class="regexp" x="54" y="2449">[#xC2A-#xC39]</text> + <polygon points="43 2474 46 2465 100 2465 103 2474 100 2483 46 2483" class="regexp"/> + <text class="regexp" x="54" y="2477">[#xC3D]</text> + <polygon points="43 2502 46 2493 134 2493 137 2502 134 2511 46 2511" class="regexp"/> + <text class="regexp" x="54" y="2505">[#xC58-#xC5A]</text> + <polygon points="43 2530 46 2521 100 2521 103 2530 100 2539 46 2539" class="regexp"/> + <text class="regexp" x="54" y="2533">[#xC5D]</text> + <polygon points="43 2558 46 2549 134 2549 137 2558 134 2567 46 2567" class="regexp"/> + <text class="regexp" x="54" y="2561">[#xC60-#xC61]</text> + <polygon points="43 2586 46 2577 98 2577 101 2586 98 2595 46 2595" class="regexp"/> + <text class="regexp" x="54" y="2589">[#xC80]</text> + <polygon points="43 2614 46 2605 134 2605 137 2614 134 2623 46 2623" class="regexp"/> + <text class="regexp" x="54" y="2617">[#xC85-#xC8C]</text> + <polygon points="43 2642 46 2633 134 2633 137 2642 134 2651 46 2651" class="regexp"/> + <text class="regexp" x="54" y="2645">[#xC8E-#xC90]</text> + <polygon points="43 2670 46 2661 134 2661 137 2670 134 2679 46 2679" class="regexp"/> + <text class="regexp" x="54" y="2673">[#xC92-#xCA8]</text> + <polygon points="43 2698 46 2689 134 2689 137 2698 134 2707 46 2707" class="regexp"/> + <text class="regexp" x="54" y="2701">[#xCAA-#xCB3]</text> + <polygon points="43 2726 46 2717 134 2717 137 2726 134 2735 46 2735" class="regexp"/> + <text class="regexp" x="54" y="2729">[#xCB5-#xCB9]</text> + <polygon points="43 2754 46 2745 100 2745 103 2754 100 2763 46 2763" class="regexp"/> + <text class="regexp" x="54" y="2757">[#xCBD]</text> + <polygon points="43 2782 46 2773 138 2773 141 2782 138 2791 46 2791" class="regexp"/> + <text class="regexp" x="54" y="2785">[#xCDD-#xCDE]</text> + <polygon points="43 2810 46 2801 134 2801 137 2810 134 2819 46 2819" class="regexp"/> + <text class="regexp" x="54" y="2813">[#xCE0-#xCE1]</text> + <polygon points="43 2838 46 2829 132 2829 135 2838 132 2847 46 2847" class="regexp"/> + <text class="regexp" x="54" y="2841">[#xCF1-#xCF2]</text> + <polygon points="43 2866 46 2857 134 2857 137 2866 134 2875 46 2875" class="regexp"/> + <text class="regexp" x="54" y="2869">[#xD04-#xD0C]</text> + <polygon points="43 2894 46 2885 134 2885 137 2894 134 2903 46 2903" class="regexp"/> + <text class="regexp" x="54" y="2897">[#xD0E-#xD10]</text> + <polygon points="43 2922 46 2913 134 2913 137 2922 134 2931 46 2931" class="regexp"/> + <text class="regexp" x="54" y="2925">[#xD12-#xD3A]</text> + <polygon points="43 2950 46 2941 100 2941 103 2950 100 2959 46 2959" class="regexp"/> + <text class="regexp" x="54" y="2953">[#xD3D]</text> + <polygon points="43 2978 46 2969 98 2969 101 2978 98 2987 46 2987" class="regexp"/> + <text class="regexp" x="54" y="2981">[#xD4E]</text> + <polygon points="43 3006 46 2997 134 2997 137 3006 134 3015 46 3015" class="regexp"/> + <text class="regexp" x="54" y="3009">[#xD54-#xD56]</text> + <polygon points="43 3034 46 3025 132 3025 135 3034 132 3043 46 3043" class="regexp"/> + <text class="regexp" x="54" y="3037">[#xD5F-#xD61]</text> + <polygon points="43 3062 46 3053 134 3053 137 3062 134 3071 46 3071" class="regexp"/> + <text class="regexp" x="54" y="3065">[#xD7A-#xD7F]</text> + <polygon points="43 3090 46 3081 134 3081 137 3090 134 3099 46 3099" class="regexp"/> + <text class="regexp" x="54" y="3093">[#xD85-#xD96]</text> + <polygon points="43 3118 46 3109 134 3109 137 3118 134 3127 46 3127" class="regexp"/> + <text class="regexp" x="54" y="3121">[#xD9A-#xDB1]</text> + <polygon points="43 3146 46 3137 134 3137 137 3146 134 3155 46 3155" class="regexp"/> + <text class="regexp" x="54" y="3149">[#xDB3-#xDBB]</text> + <polygon points="43 3174 46 3165 100 3165 103 3174 100 3183 46 3183" class="regexp"/> + <text class="regexp" x="54" y="3177">[#xDBD]</text> + <polygon points="43 3202 46 3193 136 3193 139 3202 136 3211 46 3211" class="regexp"/> + <text class="regexp" x="54" y="3205">[#xDC0-#xDC6]</text> + <polygon points="43 3230 46 3221 132 3221 135 3230 132 3239 46 3239" class="regexp"/> + <text class="regexp" x="54" y="3233">[#xE01-#xE30]</text> + <polygon points="43 3258 46 3249 132 3249 135 3258 132 3267 46 3267" class="regexp"/> + <text class="regexp" x="54" y="3261">[#xE32-#xE33]</text> + <polygon points="43 3286 46 3277 132 3277 135 3286 132 3295 46 3295" class="regexp"/> + <text class="regexp" x="54" y="3289">[#xE40-#xE45]</text> + <polygon points="43 3314 46 3305 132 3305 135 3314 132 3323 46 3323" class="regexp"/> + <text class="regexp" x="54" y="3317">[#xE81-#xE82]</text> + <polygon points="43 3342 46 3333 98 3333 101 3342 98 3351 46 3351" class="regexp"/> + <text class="regexp" x="54" y="3345">[#xE84]</text> + <polygon points="43 3370 46 3361 132 3361 135 3370 132 3379 46 3379" class="regexp"/> + <text class="regexp" x="54" y="3373">[#xE86-#xE8A]</text> + <polygon points="43 3398 46 3389 132 3389 135 3398 132 3407 46 3407" class="regexp"/> + <text class="regexp" x="54" y="3401">[#xE8C-#xEA3]</text> + <polygon points="43 3426 46 3417 98 3417 101 3426 98 3435 46 3435" class="regexp"/> + <text class="regexp" x="54" y="3429">[#xEA5]</text> + <polygon points="43 3454 46 3445 132 3445 135 3454 132 3463 46 3463" class="regexp"/> + <text class="regexp" x="54" y="3457">[#xEA7-#xEB0]</text> + <polygon points="43 3482 46 3473 132 3473 135 3482 132 3491 46 3491" class="regexp"/> + <text class="regexp" x="54" y="3485">[#xEB2-#xEB3]</text> + <polygon points="43 3510 46 3501 98 3501 101 3510 98 3519 46 3519" class="regexp"/> + <text class="regexp" x="54" y="3513">[#xEBD]</text> + <polygon points="43 3538 46 3529 134 3529 137 3538 134 3547 46 3547" class="regexp"/> + <text class="regexp" x="54" y="3541">[#xEC0-#xEC4]</text> + <polygon points="43 3566 46 3557 134 3557 137 3566 134 3575 46 3575" class="regexp"/> + <text class="regexp" x="54" y="3569">[#xEDC-#xEDF]</text> + <polygon points="43 3594 46 3585 96 3585 99 3594 96 3603 46 3603" class="regexp"/> + <text class="regexp" x="54" y="3597">[#xF00]</text> + <polygon points="43 3622 46 3613 130 3613 133 3622 130 3631 46 3631" class="regexp"/> + <text class="regexp" x="54" y="3625">[#xF40-#xF47]</text> + <polygon points="43 3650 46 3641 130 3641 133 3650 130 3659 46 3659" class="regexp"/> + <text class="regexp" x="54" y="3653">[#xF49-#xF6C]</text> + <polygon points="43 3678 46 3669 130 3669 133 3678 130 3687 46 3687" class="regexp"/> + <text class="regexp" x="54" y="3681">[#xF88-#xF8C]</text> + <polygon points="43 3706 46 3697 144 3697 147 3706 144 3715 46 3715" class="regexp"/> + <text class="regexp" x="54" y="3709">[#x1000-#x102A]</text> + <polygon points="43 3734 46 3725 102 3725 105 3734 102 3743 46 3743" class="regexp"/> + <text class="regexp" x="54" y="3737">[#x103F]</text> + <polygon points="43 3762 46 3753 144 3753 147 3762 144 3771 46 3771" class="regexp"/> + <text class="regexp" x="54" y="3765">[#x1050-#x1055]</text> + <polygon points="43 3790 46 3781 144 3781 147 3790 144 3799 46 3799" class="regexp"/> + <text class="regexp" x="54" y="3793">[#x105A-#x105D]</text> + <polygon points="43 3818 46 3809 104 3809 107 3818 104 3827 46 3827" class="regexp"/> + <text class="regexp" x="54" y="3821">[#x1061]</text> + <polygon points="43 3846 46 3837 144 3837 147 3846 144 3855 46 3855" class="regexp"/> + <text class="regexp" x="54" y="3849">[#x1065-#x1066]</text> + <polygon points="43 3874 46 3865 144 3865 147 3874 144 3883 46 3883" class="regexp"/> + <text class="regexp" x="54" y="3877">[#x106E-#x1070]</text> + <polygon points="43 3902 46 3893 144 3893 147 3902 144 3911 46 3911" class="regexp"/> + <text class="regexp" x="54" y="3905">[#x1075-#x1081]</text> + <polygon points="43 3930 46 3921 104 3921 107 3930 104 3939 46 3939" class="regexp"/> + <text class="regexp" x="54" y="3933">[#x108E]</text> + <polygon points="43 3958 46 3949 144 3949 147 3958 144 3967 46 3967" class="regexp"/> + <text class="regexp" x="54" y="3961">[#x1100-#x1248]</text> + <polygon points="43 3986 46 3977 144 3977 147 3986 144 3995 46 3995" class="regexp"/> + <text class="regexp" x="54" y="3989">[#x124A-#x124D]</text> + <polygon points="43 4014 46 4005 144 4005 147 4014 144 4023 46 4023" class="regexp"/> + <text class="regexp" x="54" y="4017">[#x1250-#x1256]</text> + <polygon points="43 4042 46 4033 104 4033 107 4042 104 4051 46 4051" class="regexp"/> + <text class="regexp" x="54" y="4045">[#x1258]</text> + <polygon points="43 4070 46 4061 144 4061 147 4070 144 4079 46 4079" class="regexp"/> + <text class="regexp" x="54" y="4073">[#x125A-#x125D]</text> + <polygon points="43 4098 46 4089 144 4089 147 4098 144 4107 46 4107" class="regexp"/> + <text class="regexp" x="54" y="4101">[#x1260-#x1288]</text> + <polygon points="43 4126 46 4117 144 4117 147 4126 144 4135 46 4135" class="regexp"/> + <text class="regexp" x="54" y="4129">[#x128A-#x128D]</text> + <polygon points="43 4154 46 4145 144 4145 147 4154 144 4163 46 4163" class="regexp"/> + <text class="regexp" x="54" y="4157">[#x1290-#x12B0]</text> + <polygon points="43 4182 46 4173 144 4173 147 4182 144 4191 46 4191" class="regexp"/> + <text class="regexp" x="54" y="4185">[#x12B2-#x12B5]</text> + <polygon points="43 4210 46 4201 144 4201 147 4210 144 4219 46 4219" class="regexp"/> + <text class="regexp" x="54" y="4213">[#x12B8-#x12BE]</text> + <polygon points="43 4238 46 4229 104 4229 107 4238 104 4247 46 4247" class="regexp"/> + <text class="regexp" x="54" y="4241">[#x12C0]</text> + <polygon points="43 4266 46 4257 146 4257 149 4266 146 4275 46 4275" class="regexp"/> + <text class="regexp" x="54" y="4269">[#x12C2-#x12C5]</text> + <polygon points="43 4294 46 4285 146 4285 149 4294 146 4303 46 4303" class="regexp"/> + <text class="regexp" x="54" y="4297">[#x12C8-#x12D6]</text> + <polygon points="43 4322 46 4313 144 4313 147 4322 144 4331 46 4331" class="regexp"/> + <text class="regexp" x="54" y="4325">[#x12D8-#x1310]</text> + <polygon points="43 4350 46 4341 144 4341 147 4350 144 4359 46 4359" class="regexp"/> + <text class="regexp" x="54" y="4353">[#x1312-#x1315]</text> + <polygon points="43 4378 46 4369 144 4369 147 4378 144 4387 46 4387" class="regexp"/> + <text class="regexp" x="54" y="4381">[#x1318-#x135A]</text> + <polygon points="43 4406 46 4397 142 4397 145 4406 142 4415 46 4415" class="regexp"/> + <text class="regexp" x="54" y="4409">[#x1380-#x138F]</text> + <polygon points="43 4434 46 4425 144 4425 147 4434 144 4443 46 4443" class="regexp"/> + <text class="regexp" x="54" y="4437">[#x1401-#x166C]</text> + <polygon points="43 4462 46 4453 142 4453 145 4462 142 4471 46 4471" class="regexp"/> + <text class="regexp" x="54" y="4465">[#x166F-#x167F]</text> + <polygon points="43 4490 46 4481 144 4481 147 4490 144 4499 46 4499" class="regexp"/> + <text class="regexp" x="54" y="4493">[#x1681-#x169A]</text> + <polygon points="43 4518 46 4509 144 4509 147 4518 144 4527 46 4527" class="regexp"/> + <text class="regexp" x="54" y="4521">[#x16A0-#x16EA]</text> + <polygon points="43 4546 46 4537 142 4537 145 4546 142 4555 46 4555" class="regexp"/> + <text class="regexp" x="54" y="4549">[#x16F1-#x16F8]</text> + <polygon points="43 4574 46 4565 144 4565 147 4574 144 4583 46 4583" class="regexp"/> + <text class="regexp" x="54" y="4577">[#x1700-#x1711]</text> + <polygon points="43 4602 46 4593 142 4593 145 4602 142 4611 46 4611" class="regexp"/> + <text class="regexp" x="54" y="4605">[#x171F-#x1731]</text> + <polygon points="43 4630 46 4621 144 4621 147 4630 144 4639 46 4639" class="regexp"/> + <text class="regexp" x="54" y="4633">[#x1740-#x1751]</text> + <polygon points="43 4658 46 4649 144 4649 147 4658 144 4667 46 4667" class="regexp"/> + <text class="regexp" x="54" y="4661">[#x1760-#x176C]</text> + <polygon points="43 4686 46 4677 144 4677 147 4686 144 4695 46 4695" class="regexp"/> + <text class="regexp" x="54" y="4689">[#x176E-#x1770]</text> + <polygon points="43 4714 46 4705 144 4705 147 4714 144 4723 46 4723" class="regexp"/> + <text class="regexp" x="54" y="4717">[#x1780-#x17B3]</text> + <polygon points="43 4742 46 4733 106 4733 109 4742 106 4751 46 4751" class="regexp"/> + <text class="regexp" x="54" y="4745">[#x17DC]</text> + <polygon points="43 4770 46 4761 144 4761 147 4770 144 4779 46 4779" class="regexp"/> + <text class="regexp" x="54" y="4773">[#x1820-#x1842]</text> + <polygon points="43 4798 46 4789 144 4789 147 4798 144 4807 46 4807" class="regexp"/> + <text class="regexp" x="54" y="4801">[#x1844-#x1878]</text> + <polygon points="43 4826 46 4817 144 4817 147 4826 144 4835 46 4835" class="regexp"/> + <text class="regexp" x="54" y="4829">[#x1880-#x1884]</text> + <polygon points="43 4854 46 4845 144 4845 147 4854 144 4863 46 4863" class="regexp"/> + <text class="regexp" x="54" y="4857">[#x1887-#x18A8]</text> + <polygon points="43 4882 46 4873 104 4873 107 4882 104 4891 46 4891" class="regexp"/> + <text class="regexp" x="54" y="4885">[#x18AA]</text> + <polygon points="43 4910 46 4901 142 4901 145 4910 142 4919 46 4919" class="regexp"/> + <text class="regexp" x="54" y="4913">[#x18B0-#x18F5]</text> + <polygon points="43 4938 46 4929 144 4929 147 4938 144 4947 46 4947" class="regexp"/> + <text class="regexp" x="54" y="4941">[#x1900-#x191E]</text> + <polygon points="43 4966 46 4957 144 4957 147 4966 144 4975 46 4975" class="regexp"/> + <text class="regexp" x="54" y="4969">[#x1950-#x196D]</text> + <polygon points="43 4994 46 4985 144 4985 147 4994 144 5003 46 5003" class="regexp"/> + <text class="regexp" x="54" y="4997">[#x1970-#x1974]</text> + <polygon points="43 5022 46 5013 144 5013 147 5022 144 5031 46 5031" class="regexp"/> + <text class="regexp" x="54" y="5025">[#x1980-#x19AB]</text> + <polygon points="43 5050 46 5041 144 5041 147 5050 144 5059 46 5059" class="regexp"/> + <text class="regexp" x="54" y="5053">[#x19B0-#x19C9]</text> + <polygon points="43 5078 46 5069 144 5069 147 5078 144 5087 46 5087" class="regexp"/> + <text class="regexp" x="54" y="5081">[#x1A00-#x1A16]</text> + <polygon points="43 5106 46 5097 144 5097 147 5106 144 5115 46 5115" class="regexp"/> + <text class="regexp" x="54" y="5109">[#x1A20-#x1A54]</text> + <polygon points="43 5134 46 5125 144 5125 147 5134 144 5143 46 5143" class="regexp"/> + <text class="regexp" x="54" y="5137">[#x1B05-#x1B33]</text> + <polygon points="43 5162 46 5153 144 5153 147 5162 144 5171 46 5171" class="regexp"/> + <text class="regexp" x="54" y="5165">[#x1B45-#x1B4C]</text> + <polygon points="43 5190 46 5181 144 5181 147 5190 144 5199 46 5199" class="regexp"/> + <text class="regexp" x="54" y="5193">[#x1B83-#x1BA0]</text> + <polygon points="43 5218 46 5209 144 5209 147 5218 144 5227 46 5227" class="regexp"/> + <text class="regexp" x="54" y="5221">[#x1BAE-#x1BAF]</text> + <polygon points="43 5246 46 5237 144 5237 147 5246 144 5255 46 5255" class="regexp"/> + <text class="regexp" x="54" y="5249">[#x1BBA-#x1BE5]</text> + <polygon points="43 5274 46 5265 146 5265 149 5274 146 5283 46 5283" class="regexp"/> + <text class="regexp" x="54" y="5277">[#x1C00-#x1C23]</text> + <polygon points="43 5302 46 5293 146 5293 149 5302 146 5311 46 5311" class="regexp"/> + <text class="regexp" x="54" y="5305">[#x1C4D-#x1C4F]</text> + <polygon points="43 5330 46 5321 146 5321 149 5330 146 5339 46 5339" class="regexp"/> + <text class="regexp" x="54" y="5333">[#x1C5A-#x1C77]</text> + <polygon points="43 5358 46 5349 146 5349 149 5358 146 5367 46 5367" class="regexp"/> + <text class="regexp" x="54" y="5361">[#x1CE9-#x1CEC]</text> + <polygon points="43 5386 46 5377 144 5377 147 5386 144 5395 46 5395" class="regexp"/> + <text class="regexp" x="54" y="5389">[#x1CEE-#x1CF3]</text> + <polygon points="43 5414 46 5405 144 5405 147 5414 144 5423 46 5423" class="regexp"/> + <text class="regexp" x="54" y="5417">[#x1CF5-#x1CF6]</text> + <polygon points="43 5442 46 5433 104 5433 107 5442 104 5451 46 5451" class="regexp"/> + <text class="regexp" x="54" y="5445">[#x1CFA]</text> + <polygon points="43 5470 46 5461 144 5461 147 5470 144 5479 46 5479" class="regexp"/> + <text class="regexp" x="54" y="5473">[#x2135-#x2138]</text> + <polygon points="43 5498 46 5489 146 5489 149 5498 146 5507 46 5507" class="regexp"/> + <text class="regexp" x="54" y="5501">[#x2D30-#x2D67]</text> + <polygon points="43 5526 46 5517 146 5517 149 5526 146 5535 46 5535" class="regexp"/> + <text class="regexp" x="54" y="5529">[#x2D80-#x2D96]</text> + <polygon points="43 5554 46 5545 146 5545 149 5554 146 5563 46 5563" class="regexp"/> + <text class="regexp" x="54" y="5557">[#x2DA0-#x2DA6]</text> + <polygon points="43 5582 46 5573 146 5573 149 5582 146 5591 46 5591" class="regexp"/> + <text class="regexp" x="54" y="5585">[#x2DA8-#x2DAE]</text> + <polygon points="43 5610 46 5601 146 5601 149 5610 146 5619 46 5619" class="regexp"/> + <text class="regexp" x="54" y="5613">[#x2DB0-#x2DB6]</text> + <polygon points="43 5638 46 5629 146 5629 149 5638 146 5647 46 5647" class="regexp"/> + <text class="regexp" x="54" y="5641">[#x2DB8-#x2DBE]</text> + <polygon points="43 5666 46 5657 148 5657 151 5666 148 5675 46 5675" class="regexp"/> + <text class="regexp" x="54" y="5669">[#x2DC0-#x2DC6]</text> + <polygon points="43 5694 46 5685 148 5685 151 5694 148 5703 46 5703" class="regexp"/> + <text class="regexp" x="54" y="5697">[#x2DC8-#x2DCE]</text> + <polygon points="43 5722 46 5713 148 5713 151 5722 148 5731 46 5731" class="regexp"/> + <text class="regexp" x="54" y="5725">[#x2DD0-#x2DD6]</text> + <polygon points="43 5750 46 5741 148 5741 151 5750 148 5759 46 5759" class="regexp"/> + <text class="regexp" x="54" y="5753">[#x2DD8-#x2DDE]</text> + <polygon points="43 5778 46 5769 104 5769 107 5778 104 5787 46 5787" class="regexp"/> + <text class="regexp" x="54" y="5781">[#x3006]</text> + <polygon points="43 5806 46 5797 104 5797 107 5806 104 5815 46 5815" class="regexp"/> + <text class="regexp" x="54" y="5809">[#x303C]</text> + <polygon points="43 5834 46 5825 144 5825 147 5834 144 5843 46 5843" class="regexp"/> + <text class="regexp" x="54" y="5837">[#x3041-#x3096]</text> + <polygon points="43 5862 46 5853 102 5853 105 5862 102 5871 46 5871" class="regexp"/> + <text class="regexp" x="54" y="5865">[#x309F]</text> + <polygon points="43 5890 46 5881 142 5881 145 5890 142 5899 46 5899" class="regexp"/> + <text class="regexp" x="54" y="5893">[#x30A1-#x30FA]</text> + <polygon points="43 5918 46 5909 102 5909 105 5918 102 5927 46 5927" class="regexp"/> + <text class="regexp" x="54" y="5921">[#x30FF]</text> + <polygon points="43 5946 46 5937 142 5937 145 5946 142 5955 46 5955" class="regexp"/> + <text class="regexp" x="54" y="5949">[#x3105-#x312F]</text> + <polygon points="43 5974 46 5965 144 5965 147 5974 144 5983 46 5983" class="regexp"/> + <text class="regexp" x="54" y="5977">[#x3131-#x318E]</text> + <polygon points="43 6002 46 5993 142 5993 145 6002 142 6011 46 6011" class="regexp"/> + <text class="regexp" x="54" y="6005">[#x31A0-#x31BF]</text> + <polygon points="43 6030 46 6021 140 6021 143 6030 140 6039 46 6039" class="regexp"/> + <text class="regexp" x="54" y="6033">[#x31F0-#x31FF]</text> + <polygon points="43 6058 46 6049 104 6049 107 6058 104 6067 46 6067" class="regexp"/> + <text class="regexp" x="54" y="6061">[#x4DBF]</text> + <polygon points="43 6086 46 6077 140 6077 143 6086 140 6095 46 6095" class="regexp"/> + <text class="regexp" x="54" y="6089">[#x9FFF-#xA014]</text> + <polygon points="43 6114 46 6105 144 6105 147 6114 144 6123 46 6123" class="regexp"/> + <text class="regexp" x="54" y="6117">[#xA016-#xA48C]</text> + <polygon points="43 6142 46 6133 144 6133 147 6142 144 6151 46 6151" class="regexp"/> + <text class="regexp" x="54" y="6145">[#xA4D0-#xA4F7]</text> + <polygon points="43 6170 46 6161 144 6161 147 6170 144 6179 46 6179" class="regexp"/> + <text class="regexp" x="54" y="6173">[#xA500-#xA60B]</text> + <polygon points="43 6198 46 6189 142 6189 145 6198 142 6207 46 6207" class="regexp"/> + <text class="regexp" x="54" y="6201">[#xA610-#xA61F]</text> + <polygon points="43 6226 46 6217 144 6217 147 6226 144 6235 46 6235" class="regexp"/> + <text class="regexp" x="54" y="6229">[#xA62A-#xA62B]</text> + <polygon points="43 6254 46 6245 104 6245 107 6254 104 6263 46 6263" class="regexp"/> + <text class="regexp" x="54" y="6257">[#xA66E]</text> + <polygon points="43 6282 46 6273 144 6273 147 6282 144 6291 46 6291" class="regexp"/> + <text class="regexp" x="54" y="6285">[#xA6A0-#xA6E5]</text> + <polygon points="43 6310 46 6301 102 6301 105 6310 102 6319 46 6319" class="regexp"/> + <text class="regexp" x="54" y="6313">[#xA78F]</text> + <polygon points="43 6338 46 6329 102 6329 105 6338 102 6347 46 6347" class="regexp"/> + <text class="regexp" x="54" y="6341">[#xA7F7]</text> + <polygon points="43 6366 46 6357 144 6357 147 6366 144 6375 46 6375" class="regexp"/> + <text class="regexp" x="54" y="6369">[#xA7FB-#xA801]</text> + <polygon points="43 6394 46 6385 144 6385 147 6394 144 6403 46 6403" class="regexp"/> + <text class="regexp" x="54" y="6397">[#xA803-#xA805]</text> + <polygon points="43 6422 46 6413 144 6413 147 6422 144 6431 46 6431" class="regexp"/> + <text class="regexp" x="54" y="6425">[#xA807-#xA80A]</text> + <polygon points="43 6450 46 6441 144 6441 147 6450 144 6459 46 6459" class="regexp"/> + <text class="regexp" x="54" y="6453">[#xA80C-#xA822]</text> + <polygon points="43 6478 46 6469 144 6469 147 6478 144 6487 46 6487" class="regexp"/> + <text class="regexp" x="54" y="6481">[#xA840-#xA873]</text> + <polygon points="43 6506 46 6497 144 6497 147 6506 144 6515 46 6515" class="regexp"/> + <text class="regexp" x="54" y="6509">[#xA882-#xA8B3]</text> + <polygon points="43 6534 46 6525 142 6525 145 6534 142 6543 46 6543" class="regexp"/> + <text class="regexp" x="54" y="6537">[#xA8F2-#xA8F7]</text> + <polygon points="43 6562 46 6553 102 6553 105 6562 102 6571 46 6571" class="regexp"/> + <text class="regexp" x="54" y="6565">[#xA8FB]</text> + <polygon points="43 6590 46 6581 144 6581 147 6590 144 6599 46 6599" class="regexp"/> + <text class="regexp" x="54" y="6593">[#xA8FD-#xA8FE]</text> + <polygon points="43 6618 46 6609 144 6609 147 6618 144 6627 46 6627" class="regexp"/> + <text class="regexp" x="54" y="6621">[#xA90A-#xA925]</text> + <polygon points="43 6646 46 6637 144 6637 147 6646 144 6655 46 6655" class="regexp"/> + <text class="regexp" x="54" y="6649">[#xA930-#xA946]</text> + <polygon points="43 6674 46 6665 144 6665 147 6674 144 6683 46 6683" class="regexp"/> + <text class="regexp" x="54" y="6677">[#xA960-#xA97C]</text> + <polygon points="43 6702 46 6693 144 6693 147 6702 144 6711 46 6711" class="regexp"/> + <text class="regexp" x="54" y="6705">[#xA984-#xA9B2]</text> + <polygon points="43 6730 46 6721 144 6721 147 6730 144 6739 46 6739" class="regexp"/> + <text class="regexp" x="54" y="6733">[#xA9E0-#xA9E4]</text> + <polygon points="43 6758 46 6749 142 6749 145 6758 142 6767 46 6767" class="regexp"/> + <text class="regexp" x="54" y="6761">[#xA9E7-#xA9EF]</text> + <polygon points="43 6786 46 6777 142 6777 145 6786 142 6795 46 6795" class="regexp"/> + <text class="regexp" x="54" y="6789">[#xA9FA-#xA9FE]</text> + <polygon points="43 6814 46 6805 144 6805 147 6814 144 6823 46 6823" class="regexp"/> + <text class="regexp" x="54" y="6817">[#xAA00-#xAA28]</text> + <polygon points="43 6842 46 6833 144 6833 147 6842 144 6851 46 6851" class="regexp"/> + <text class="regexp" x="54" y="6845">[#xAA40-#xAA42]</text> + <polygon points="43 6870 46 6861 144 6861 147 6870 144 6879 46 6879" class="regexp"/> + <text class="regexp" x="54" y="6873">[#xAA44-#xAA4B]</text> + <polygon points="43 6898 46 6889 144 6889 147 6898 144 6907 46 6907" class="regexp"/> + <text class="regexp" x="54" y="6901">[#xAA60-#xAA6F]</text> + <polygon points="43 6926 46 6917 144 6917 147 6926 144 6935 46 6935" class="regexp"/> + <text class="regexp" x="54" y="6929">[#xAA71-#xAA76]</text> + <polygon points="43 6954 46 6945 104 6945 107 6954 104 6963 46 6963" class="regexp"/> + <text class="regexp" x="54" y="6957">[#xAA7A]</text> + <polygon points="43 6982 46 6973 144 6973 147 6982 144 6991 46 6991" class="regexp"/> + <text class="regexp" x="54" y="6985">[#xAA7E-#xAAAF]</text> + <polygon points="43 7010 46 7001 104 7001 107 7010 104 7019 46 7019" class="regexp"/> + <text class="regexp" x="54" y="7013">[#xAAB1]</text> + <polygon points="43 7038 46 7029 144 7029 147 7038 144 7047 46 7047" class="regexp"/> + <text class="regexp" x="54" y="7041">[#xAAB5-#xAAB6]</text> + <polygon points="43 7066 46 7057 146 7057 149 7066 146 7075 46 7075" class="regexp"/> + <text class="regexp" x="54" y="7069">[#xAAB9-#xAABD]</text> + <polygon points="43 7094 46 7085 104 7085 107 7094 104 7103 46 7103" class="regexp"/> + <text class="regexp" x="54" y="7097">[#xAAC0]</text> + <polygon points="43 7122 46 7113 104 7113 107 7122 104 7131 46 7131" class="regexp"/> + <text class="regexp" x="54" y="7125">[#xAAC2]</text> + <polygon points="43 7150 46 7141 148 7141 151 7150 148 7159 46 7159" class="regexp"/> + <text class="regexp" x="54" y="7153">[#xAADB-#xAADC]</text> + <polygon points="43 7178 46 7169 144 7169 147 7178 144 7187 46 7187" class="regexp"/> + <text class="regexp" x="54" y="7181">[#xAAE0-#xAAEA]</text> + <polygon points="43 7206 46 7197 102 7197 105 7206 102 7215 46 7215" class="regexp"/> + <text class="regexp" x="54" y="7209">[#xAAF2]</text> + <polygon points="43 7234 46 7225 144 7225 147 7234 144 7243 46 7243" class="regexp"/> + <text class="regexp" x="54" y="7237">[#xAB01-#xAB06]</text> + <polygon points="43 7262 46 7253 144 7253 147 7262 144 7271 46 7271" class="regexp"/> + <text class="regexp" x="54" y="7265">[#xAB09-#xAB0E]</text> + <polygon points="43 7290 46 7281 144 7281 147 7290 144 7299 46 7299" class="regexp"/> + <text class="regexp" x="54" y="7293">[#xAB11-#xAB16]</text> + <polygon points="43 7318 46 7309 144 7309 147 7318 144 7327 46 7327" class="regexp"/> + <text class="regexp" x="54" y="7321">[#xAB20-#xAB26]</text> + <polygon points="43 7346 46 7337 144 7337 147 7346 144 7355 46 7355" class="regexp"/> + <text class="regexp" x="54" y="7349">[#xAB28-#xAB2E]</text> + <polygon points="43 7374 46 7365 146 7365 149 7374 146 7383 46 7383" class="regexp"/> + <text class="regexp" x="54" y="7377">[#xABC0-#xABE2]</text> + <polygon points="43 7402 46 7393 104 7393 107 7402 104 7411 46 7411" class="regexp"/> + <text class="regexp" x="54" y="7405">[#xD7A3]</text> + <polygon points="43 7430 46 7421 148 7421 151 7430 148 7439 46 7439" class="regexp"/> + <text class="regexp" x="54" y="7433">[#xD7B0-#xD7C6]</text> + <polygon points="43 7458 46 7449 146 7449 149 7458 146 7467 46 7467" class="regexp"/> + <text class="regexp" x="54" y="7461">[#xD7CB-#xD7FB]</text> + <polygon points="43 7486 46 7477 142 7477 145 7486 142 7495 46 7495" class="regexp"/> + <text class="regexp" x="54" y="7489">[#xF900-#xFA6D]</text> + <polygon points="43 7514 46 7505 144 7505 147 7514 144 7523 46 7523" class="regexp"/> + <text class="regexp" x="54" y="7517">[#xFA70-#xFAD9]</text> + <polygon points="43 7542 46 7533 104 7533 107 7542 104 7551 46 7551" class="regexp"/> + <text class="regexp" x="54" y="7545">[#xFB1D]</text> + <polygon points="43 7570 46 7561 140 7561 143 7570 140 7579 46 7579" class="regexp"/> + <text class="regexp" x="54" y="7573">[#xFB1F-#xFB28]</text> + <polygon points="43 7598 46 7589 142 7589 145 7598 142 7607 46 7607" class="regexp"/> + <text class="regexp" x="54" y="7601">[#xFB2A-#xFB36]</text> + <polygon points="43 7626 46 7617 142 7617 145 7626 142 7635 46 7635" class="regexp"/> + <text class="regexp" x="54" y="7629">[#xFB38-#xFB3C]</text> + <polygon points="43 7654 46 7645 102 7645 105 7654 102 7663 46 7663" class="regexp"/> + <text class="regexp" x="54" y="7657">[#xFB3E]</text> + <polygon points="43 7682 46 7673 142 7673 145 7682 142 7691 46 7691" class="regexp"/> + <text class="regexp" x="54" y="7685">[#xFB40-#xFB41]</text> + <polygon points="43 7710 46 7701 142 7701 145 7710 142 7719 46 7719" class="regexp"/> + <text class="regexp" x="54" y="7713">[#xFB43-#xFB44]</text> + <polygon points="43 7738 46 7729 142 7729 145 7738 142 7747 46 7747" class="regexp"/> + <text class="regexp" x="54" y="7741">[#xFB46-#xFBB1]</text> + <polygon points="43 7766 46 7757 146 7757 149 7766 146 7775 46 7775" class="regexp"/> + <text class="regexp" x="54" y="7769">[#xFBD3-#xFD3D]</text> + <polygon points="43 7794 46 7785 142 7785 145 7794 142 7803 46 7803" class="regexp"/> + <text class="regexp" x="54" y="7797">[#xFD50-#xFD8F]</text> + <polygon points="43 7822 46 7813 144 7813 147 7822 144 7831 46 7831" class="regexp"/> + <text class="regexp" x="54" y="7825">[#xFD92-#xFDC7]</text> + <polygon points="43 7850 46 7841 142 7841 145 7850 142 7859 46 7859" class="regexp"/> + <text class="regexp" x="54" y="7853">[#xFDF0-#xFDFB]</text> + <polygon points="43 7878 46 7869 142 7869 145 7878 142 7887 46 7887" class="regexp"/> + <text class="regexp" x="54" y="7881">[#xFE70-#xFE74]</text> + <polygon points="43 7906 46 7897 142 7897 145 7906 142 7915 46 7915" class="regexp"/> + <text class="regexp" x="54" y="7909">[#xFE76-#xFEFC]</text> + <polygon points="43 7934 46 7925 138 7925 141 7934 138 7943 46 7943" class="regexp"/> + <text class="regexp" x="54" y="7937">[#xFF66-#xFF6F]</text> + <polygon points="43 7962 46 7953 140 7953 143 7962 140 7971 46 7971" class="regexp"/> + <text class="regexp" x="54" y="7965">[#xFF71-#xFF9D]</text> + <polygon points="43 7990 46 7981 140 7981 143 7990 140 7999 46 7999" class="regexp"/> + <text class="regexp" x="54" y="7993">[#xFFA0-#xFFBE]</text> + <polygon points="43 8018 46 8009 142 8009 145 8018 142 8027 46 8027" class="regexp"/> + <text class="regexp" x="54" y="8021">[#xFFC2-#xFFC7]</text> + <polygon points="43 8046 46 8037 140 8037 143 8046 140 8055 46 8055" class="regexp"/> + <text class="regexp" x="54" y="8049">[#xFFCA-#xFFCF]</text> + <polygon points="43 8074 46 8065 142 8065 145 8074 142 8083 46 8083" class="regexp"/> + <text class="regexp" x="54" y="8077">[#xFFD2-#xFFD7]</text> + <polygon points="43 8102 46 8093 144 8093 147 8102 144 8111 46 8111" class="regexp"/> + <text class="regexp" x="54" y="8105">[#xFFDA-#xFFDC]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m52 0 h4 m0 0 h56 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 m52 0 h4 m0 0 h56 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m96 0 h4 m0 0 h12 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m98 0 h4 m0 0 h10 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m96 0 h4 m0 0 h12 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m66 0 h4 m0 0 h42 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m100 0 h4 m0 0 h8 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m100 0 h4 m0 0 h8 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m100 0 h4 m0 0 h8 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m98 0 h4 m0 0 h10 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m100 0 h4 m0 0 h8 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m100 0 h4 m0 0 h8 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m100 0 h4 m0 0 h8 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m23 -8092 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="#lo" title="Lo" shape="rect">Lo</a>       ::= [#xAA#xBA#x1BB#x1C0-#x1C3#x294#x5D0-#x5EA#x5EF-#x5F2#x620-#x63F#x641-#x64A#x66E-#x66F#x671-#x6D3#x6D5#x6EE-#x6EF#x6FA-#x6FC#x6FF#x710#x712-#x72F#x74D-#x7A5#x7B1#x7CA-#x7EA#x800-#x815#x840-#x858#x860-#x86A#x870-#x887#x889-#x88E#x8A0-#x8C8#x904-#x939#x93D#x950#x958-#x961#x972-#x980#x985-#x98C#x98F-#x990#x993-#x9A8#x9AA-#x9B0#x9B2#x9B6-#x9B9#x9BD#x9CE#x9DC-#x9DD#x9DF-#x9E1#x9F0-#x9F1#x9FC#xA05-#xA0A#xA0F-#xA10#xA13-#xA28#xA2A-#xA30#xA32-#xA33#xA35-#xA36#xA38-#xA39#xA59-#xA5C#xA5E#xA72-#xA74#xA85-#xA8D#xA8F-#xA91#xA93-#xAA8#xAAA-#xAB0#xAB2-#xAB3#xAB5-#xAB9#xABD#xAD0#xAE0-#xAE1#xAF9#xB05-#xB0C#xB0F-#xB10#xB13-#xB28#xB2A-#xB30#xB32-#xB33#xB35-#xB39#xB3D#xB5C-#xB5D#xB5F-#xB61#xB71#xB83#xB85-#xB8A#xB8E-#xB90#xB92-#xB95#xB99-#xB9A#xB9C#xB9E-#xB9F#xBA3-#xBA4#xBA8-#xBAA#xBAE-#xBB9#xBD0#xC05-#xC0C#xC0E-#xC10#xC12-#xC28#xC2A-#xC39#xC3D#xC58-#xC5A#xC5D#xC60-#xC61#xC80#xC85-#xC8C#xC8E-#xC90#xC92-#xCA8#xCAA-#xCB3#xCB5-#xCB9#xCBD#xCDD-#xCDE#xCE0-#xCE1#xCF1-#xCF2#xD04-#xD0C#xD0E-#xD10#xD12-#xD3A#xD3D#xD4E#xD54-#xD56#xD5F-#xD61#xD7A-#xD7F#xD85-#xD96#xD9A-#xDB1#xDB3-#xDBB#xDBD#xDC0-#xDC6#xE01-#xE30#xE32-#xE33#xE40-#xE45#xE81-#xE82#xE84#xE86-#xE8A#xE8C-#xEA3#xEA5#xEA7-#xEB0#xEB2-#xEB3#xEBD#xEC0-#xEC4#xEDC-#xEDF#xF00#xF40-#xF47#xF49-#xF6C#xF88-#xF8C#x1000-#x102A#x103F#x1050-#x1055#x105A-#x105D#x1061#x1065-#x1066#x106E-#x1070#x1075-#x1081#x108E#x1100-#x1248#x124A-#x124D#x1250-#x1256#x1258#x125A-#x125D#x1260-#x1288#x128A-#x128D#x1290-#x12B0#x12B2-#x12B5#x12B8-#x12BE#x12C0#x12C2-#x12C5#x12C8-#x12D6#x12D8-#x1310#x1312-#x1315#x1318-#x135A#x1380-#x138F#x1401-#x166C#x166F-#x167F#x1681-#x169A#x16A0-#x16EA#x16F1-#x16F8#x1700-#x1711#x171F-#x1731#x1740-#x1751#x1760-#x176C#x176E-#x1770#x1780-#x17B3#x17DC#x1820-#x1842#x1844-#x1878#x1880-#x1884#x1887-#x18A8#x18AA#x18B0-#x18F5#x1900-#x191E#x1950-#x196D#x1970-#x1974#x1980-#x19AB#x19B0-#x19C9#x1A00-#x1A16#x1A20-#x1A54#x1B05-#x1B33#x1B45-#x1B4C#x1B83-#x1BA0#x1BAE-#x1BAF#x1BBA-#x1BE5#x1C00-#x1C23#x1C4D-#x1C4F#x1C5A-#x1C77#x1CE9-#x1CEC#x1CEE-#x1CF3#x1CF5-#x1CF6#x1CFA#x2135-#x2138#x2D30-#x2D67#x2D80-#x2D96#x2DA0-#x2DA6#x2DA8-#x2DAE#x2DB0-#x2DB6#x2DB8-#x2DBE#x2DC0-#x2DC6#x2DC8-#x2DCE#x2DD0-#x2DD6#x2DD8-#x2DDE#x3006#x303C#x3041-#x3096#x309F#x30A1-#x30FA#x30FF#x3105-#x312F#x3131-#x318E#x31A0-#x31BF#x31F0-#x31FF#x4DBF#x9FFF-#xA014#xA016-#xA48C#xA4D0-#xA4F7#xA500-#xA60B#xA610-#xA61F#xA62A-#xA62B#xA66E#xA6A0-#xA6E5#xA78F#xA7F7#xA7FB-#xA801#xA803-#xA805#xA807-#xA80A#xA80C-#xA822#xA840-#xA873#xA882-#xA8B3#xA8F2-#xA8F7#xA8FB#xA8FD-#xA8FE#xA90A-#xA925#xA930-#xA946#xA960-#xA97C#xA984-#xA9B2#xA9E0-#xA9E4#xA9E7-#xA9EF#xA9FA-#xA9FE#xAA00-#xAA28#xAA40-#xAA42#xAA44-#xAA4B#xAA60-#xAA6F#xAA71-#xAA76#xAA7A#xAA7E-#xAAAF#xAAB1#xAAB5-#xAAB6#xAAB9-#xAABD#xAAC0#xAAC2#xAADB-#xAADC#xAAE0-#xAAEA#xAAF2#xAB01-#xAB06#xAB09-#xAB0E#xAB11-#xAB16#xAB20-#xAB26#xAB28-#xAB2E#xABC0-#xABE2#xD7A3#xD7B0-#xD7C6#xD7CB-#xD7FB#xF900-#xFA6D#xFA70-#xFAD9#xFB1D#xFB1F-#xFB28#xFB2A-#xFB36#xFB38-#xFB3C#xFB3E#xFB40-#xFB41#xFB43-#xFB44#xFB46-#xFBB1#xFBD3-#xFD3D#xFD50-#xFD8F#xFD92-#xFDC7#xFDF0-#xFDFB#xFE70-#xFE74#xFE76-#xFEFC#xFF66-#xFF6F#xFF71-#xFF9D#xFFA0-#xFFBE#xFFC2-#xFFC7#xFFCA-#xFFCF#xFFD2-#xFFD7#xFFDA-#xFFDC]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierstart" title="unicodeidentifierstart">unicodeidentifierstart</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Lt +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="187" height="273"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 98 1 101 10 98 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#x1C5]</text> + <polygon points="43 38 46 29 98 29 101 38 98 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x1C8]</text> + <polygon points="43 66 46 57 98 57 101 66 98 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x1CB]</text> + <polygon points="43 94 46 85 96 85 99 94 96 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x1F2]</text> + <polygon points="43 122 46 113 140 113 143 122 140 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x1F88-#x1F8F]</text> + <polygon points="43 150 46 141 140 141 143 150 140 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x1F98-#x1F9F]</text> + <polygon points="43 178 46 169 140 169 143 178 140 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#x1FA8-#x1FAF]</text> + <polygon points="43 206 46 197 104 197 107 206 104 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#x1FBC]</text> + <polygon points="43 234 46 225 104 225 107 234 104 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#x1FCC]</text> + <polygon points="43 262 46 253 102 253 105 262 102 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#x1FFC]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m58 0 h4 m0 0 h42 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 m58 0 h4 m0 0 h42 m-118 -10 v20 m128 0 v-20 m-128 20 v8 m128 0 v-8 m-128 8 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m58 0 h4 m0 0 h42 m-118 -10 v20 m128 0 v-20 m-128 20 v8 m128 0 v-8 m-128 8 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m56 0 h4 m0 0 h44 m-118 -10 v20 m128 0 v-20 m-128 20 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 m-118 -10 v20 m128 0 v-20 m-128 20 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 m-118 -10 v20 m128 0 v-20 m-128 20 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 m-118 -10 v20 m128 0 v-20 m-128 20 v8 m128 0 v-8 m-128 8 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m64 0 h4 m0 0 h36 m-118 -10 v20 m128 0 v-20 m-128 20 v8 m128 0 v-8 m-128 8 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m64 0 h4 m0 0 h36 m-118 -10 v20 m128 0 v-20 m-128 20 v8 m128 0 v-8 m-128 8 q0 10 10 10 m108 0 q10 0 10 -10 m-118 10 h4 m62 0 h4 m0 0 h38 m23 -252 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="#lt" title="Lt" shape="rect">Lt</a>       ::= [#x1C5#x1C8#x1CB#x1F2#x1F88-#x1F8F#x1F98-#x1F9F#x1FA8-#x1FAF#x1FBC#x1FCC#x1FFC]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierstart" title="unicodeidentifierstart">unicodeidentifierstart</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Lu +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="16933"> + <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">[A-Z]</text> + <polygon points="43 38 46 29 122 29 125 38 122 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#xC0-#xD6]</text> + <polygon points="43 66 46 57 122 57 125 66 122 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#xD8-#xDE]</text> + <polygon points="43 94 46 85 98 85 101 94 98 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x100]</text> + <polygon points="43 122 46 113 98 113 101 122 98 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x102]</text> + <polygon points="43 150 46 141 98 141 101 150 98 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x104]</text> + <polygon points="43 178 46 169 98 169 101 178 98 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#x106]</text> + <polygon points="43 206 46 197 98 197 101 206 98 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#x108]</text> + <polygon points="43 234 46 225 98 225 101 234 98 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#x10A]</text> + <polygon points="43 262 46 253 98 253 101 262 98 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#x10C]</text> + <polygon points="43 290 46 281 98 281 101 290 98 299 46 299" class="regexp"/> + <text class="regexp" x="54" y="293">[#x10E]</text> + <polygon points="43 318 46 309 98 309 101 318 98 327 46 327" class="regexp"/> + <text class="regexp" x="54" y="321">[#x110]</text> + <polygon points="43 346 46 337 98 337 101 346 98 355 46 355" class="regexp"/> + <text class="regexp" x="54" y="349">[#x112]</text> + <polygon points="43 374 46 365 98 365 101 374 98 383 46 383" class="regexp"/> + <text class="regexp" x="54" y="377">[#x114]</text> + <polygon points="43 402 46 393 98 393 101 402 98 411 46 411" class="regexp"/> + <text class="regexp" x="54" y="405">[#x116]</text> + <polygon points="43 430 46 421 98 421 101 430 98 439 46 439" class="regexp"/> + <text class="regexp" x="54" y="433">[#x118]</text> + <polygon points="43 458 46 449 98 449 101 458 98 467 46 467" class="regexp"/> + <text class="regexp" x="54" y="461">[#x11A]</text> + <polygon points="43 486 46 477 98 477 101 486 98 495 46 495" class="regexp"/> + <text class="regexp" x="54" y="489">[#x11C]</text> + <polygon points="43 514 46 505 98 505 101 514 98 523 46 523" class="regexp"/> + <text class="regexp" x="54" y="517">[#x11E]</text> + <polygon points="43 542 46 533 98 533 101 542 98 551 46 551" class="regexp"/> + <text class="regexp" x="54" y="545">[#x120]</text> + <polygon points="43 570 46 561 98 561 101 570 98 579 46 579" class="regexp"/> + <text class="regexp" x="54" y="573">[#x122]</text> + <polygon points="43 598 46 589 98 589 101 598 98 607 46 607" class="regexp"/> + <text class="regexp" x="54" y="601">[#x124]</text> + <polygon points="43 626 46 617 98 617 101 626 98 635 46 635" class="regexp"/> + <text class="regexp" x="54" y="629">[#x126]</text> + <polygon points="43 654 46 645 98 645 101 654 98 663 46 663" class="regexp"/> + <text class="regexp" x="54" y="657">[#x128]</text> + <polygon points="43 682 46 673 98 673 101 682 98 691 46 691" class="regexp"/> + <text class="regexp" x="54" y="685">[#x12A]</text> + <polygon points="43 710 46 701 98 701 101 710 98 719 46 719" class="regexp"/> + <text class="regexp" x="54" y="713">[#x12C]</text> + <polygon points="43 738 46 729 98 729 101 738 98 747 46 747" class="regexp"/> + <text class="regexp" x="54" y="741">[#x12E]</text> + <polygon points="43 766 46 757 98 757 101 766 98 775 46 775" class="regexp"/> + <text class="regexp" x="54" y="769">[#x130]</text> + <polygon points="43 794 46 785 98 785 101 794 98 803 46 803" class="regexp"/> + <text class="regexp" x="54" y="797">[#x132]</text> + <polygon points="43 822 46 813 98 813 101 822 98 831 46 831" class="regexp"/> + <text class="regexp" x="54" y="825">[#x134]</text> + <polygon points="43 850 46 841 98 841 101 850 98 859 46 859" class="regexp"/> + <text class="regexp" x="54" y="853">[#x136]</text> + <polygon points="43 878 46 869 98 869 101 878 98 887 46 887" class="regexp"/> + <text class="regexp" x="54" y="881">[#x139]</text> + <polygon points="43 906 46 897 98 897 101 906 98 915 46 915" class="regexp"/> + <text class="regexp" x="54" y="909">[#x13B]</text> + <polygon points="43 934 46 925 98 925 101 934 98 943 46 943" class="regexp"/> + <text class="regexp" x="54" y="937">[#x13D]</text> + <polygon points="43 962 46 953 96 953 99 962 96 971 46 971" class="regexp"/> + <text class="regexp" x="54" y="965">[#x13F]</text> + <polygon points="43 990 46 981 98 981 101 990 98 999 46 999" class="regexp"/> + <text class="regexp" x="54" y="993">[#x141]</text> + <polygon points="43 1018 46 1009 98 1009 101 1018 98 1027 46 1027" class="regexp"/> + <text class="regexp" x="54" y="1021">[#x143]</text> + <polygon points="43 1046 46 1037 98 1037 101 1046 98 1055 46 1055" class="regexp"/> + <text class="regexp" x="54" y="1049">[#x145]</text> + <polygon points="43 1074 46 1065 98 1065 101 1074 98 1083 46 1083" class="regexp"/> + <text class="regexp" x="54" y="1077">[#x147]</text> + <polygon points="43 1102 46 1093 98 1093 101 1102 98 1111 46 1111" class="regexp"/> + <text class="regexp" x="54" y="1105">[#x14A]</text> + <polygon points="43 1130 46 1121 98 1121 101 1130 98 1139 46 1139" class="regexp"/> + <text class="regexp" x="54" y="1133">[#x14C]</text> + <polygon points="43 1158 46 1149 98 1149 101 1158 98 1167 46 1167" class="regexp"/> + <text class="regexp" x="54" y="1161">[#x14E]</text> + <polygon points="43 1186 46 1177 98 1177 101 1186 98 1195 46 1195" class="regexp"/> + <text class="regexp" x="54" y="1189">[#x150]</text> + <polygon points="43 1214 46 1205 98 1205 101 1214 98 1223 46 1223" class="regexp"/> + <text class="regexp" x="54" y="1217">[#x152]</text> + <polygon points="43 1242 46 1233 98 1233 101 1242 98 1251 46 1251" class="regexp"/> + <text class="regexp" x="54" y="1245">[#x154]</text> + <polygon points="43 1270 46 1261 98 1261 101 1270 98 1279 46 1279" class="regexp"/> + <text class="regexp" x="54" y="1273">[#x156]</text> + <polygon points="43 1298 46 1289 98 1289 101 1298 98 1307 46 1307" class="regexp"/> + <text class="regexp" x="54" y="1301">[#x158]</text> + <polygon points="43 1326 46 1317 98 1317 101 1326 98 1335 46 1335" class="regexp"/> + <text class="regexp" x="54" y="1329">[#x15A]</text> + <polygon points="43 1354 46 1345 98 1345 101 1354 98 1363 46 1363" class="regexp"/> + <text class="regexp" x="54" y="1357">[#x15C]</text> + <polygon points="43 1382 46 1373 98 1373 101 1382 98 1391 46 1391" class="regexp"/> + <text class="regexp" x="54" y="1385">[#x15E]</text> + <polygon points="43 1410 46 1401 98 1401 101 1410 98 1419 46 1419" class="regexp"/> + <text class="regexp" x="54" y="1413">[#x160]</text> + <polygon points="43 1438 46 1429 98 1429 101 1438 98 1447 46 1447" class="regexp"/> + <text class="regexp" x="54" y="1441">[#x162]</text> + <polygon points="43 1466 46 1457 98 1457 101 1466 98 1475 46 1475" class="regexp"/> + <text class="regexp" x="54" y="1469">[#x164]</text> + <polygon points="43 1494 46 1485 98 1485 101 1494 98 1503 46 1503" class="regexp"/> + <text class="regexp" x="54" y="1497">[#x166]</text> + <polygon points="43 1522 46 1513 98 1513 101 1522 98 1531 46 1531" class="regexp"/> + <text class="regexp" x="54" y="1525">[#x168]</text> + <polygon points="43 1550 46 1541 98 1541 101 1550 98 1559 46 1559" class="regexp"/> + <text class="regexp" x="54" y="1553">[#x16A]</text> + <polygon points="43 1578 46 1569 98 1569 101 1578 98 1587 46 1587" class="regexp"/> + <text class="regexp" x="54" y="1581">[#x16C]</text> + <polygon points="43 1606 46 1597 98 1597 101 1606 98 1615 46 1615" class="regexp"/> + <text class="regexp" x="54" y="1609">[#x16E]</text> + <polygon points="43 1634 46 1625 98 1625 101 1634 98 1643 46 1643" class="regexp"/> + <text class="regexp" x="54" y="1637">[#x170]</text> + <polygon points="43 1662 46 1653 98 1653 101 1662 98 1671 46 1671" class="regexp"/> + <text class="regexp" x="54" y="1665">[#x172]</text> + <polygon points="43 1690 46 1681 98 1681 101 1690 98 1699 46 1699" class="regexp"/> + <text class="regexp" x="54" y="1693">[#x174]</text> + <polygon points="43 1718 46 1709 98 1709 101 1718 98 1727 46 1727" class="regexp"/> + <text class="regexp" x="54" y="1721">[#x176]</text> + <polygon points="43 1746 46 1737 132 1737 135 1746 132 1755 46 1755" class="regexp"/> + <text class="regexp" x="54" y="1749">[#x178-#x179]</text> + <polygon points="43 1774 46 1765 98 1765 101 1774 98 1783 46 1783" class="regexp"/> + <text class="regexp" x="54" y="1777">[#x17B]</text> + <polygon points="43 1802 46 1793 98 1793 101 1802 98 1811 46 1811" class="regexp"/> + <text class="regexp" x="54" y="1805">[#x17D]</text> + <polygon points="43 1830 46 1821 132 1821 135 1830 132 1839 46 1839" class="regexp"/> + <text class="regexp" x="54" y="1833">[#x181-#x182]</text> + <polygon points="43 1858 46 1849 98 1849 101 1858 98 1867 46 1867" class="regexp"/> + <text class="regexp" x="54" y="1861">[#x184]</text> + <polygon points="43 1886 46 1877 132 1877 135 1886 132 1895 46 1895" class="regexp"/> + <text class="regexp" x="54" y="1889">[#x186-#x187]</text> + <polygon points="43 1914 46 1905 132 1905 135 1914 132 1923 46 1923" class="regexp"/> + <text class="regexp" x="54" y="1917">[#x189-#x18B]</text> + <polygon points="43 1942 46 1933 132 1933 135 1942 132 1951 46 1951" class="regexp"/> + <text class="regexp" x="54" y="1945">[#x18E-#x191]</text> + <polygon points="43 1970 46 1961 132 1961 135 1970 132 1979 46 1979" class="regexp"/> + <text class="regexp" x="54" y="1973">[#x193-#x194]</text> + <polygon points="43 1998 46 1989 132 1989 135 1998 132 2007 46 2007" class="regexp"/> + <text class="regexp" x="54" y="2001">[#x196-#x198]</text> + <polygon points="43 2026 46 2017 134 2017 137 2026 134 2035 46 2035" class="regexp"/> + <text class="regexp" x="54" y="2029">[#x19C-#x19D]</text> + <polygon points="43 2054 46 2045 130 2045 133 2054 130 2063 46 2063" class="regexp"/> + <text class="regexp" x="54" y="2057">[#x19F-#x1A0]</text> + <polygon points="43 2082 46 2073 98 2073 101 2082 98 2091 46 2091" class="regexp"/> + <text class="regexp" x="54" y="2085">[#x1A2]</text> + <polygon points="43 2110 46 2101 98 2101 101 2110 98 2119 46 2119" class="regexp"/> + <text class="regexp" x="54" y="2113">[#x1A4]</text> + <polygon points="43 2138 46 2129 132 2129 135 2138 132 2147 46 2147" class="regexp"/> + <text class="regexp" x="54" y="2141">[#x1A6-#x1A7]</text> + <polygon points="43 2166 46 2157 98 2157 101 2166 98 2175 46 2175" class="regexp"/> + <text class="regexp" x="54" y="2169">[#x1A9]</text> + <polygon points="43 2194 46 2185 98 2185 101 2194 98 2203 46 2203" class="regexp"/> + <text class="regexp" x="54" y="2197">[#x1AC]</text> + <polygon points="43 2222 46 2213 130 2213 133 2222 130 2231 46 2231" class="regexp"/> + <text class="regexp" x="54" y="2225">[#x1AE-#x1AF]</text> + <polygon points="43 2250 46 2241 132 2241 135 2250 132 2259 46 2259" class="regexp"/> + <text class="regexp" x="54" y="2253">[#x1B1-#x1B3]</text> + <polygon points="43 2278 46 2269 98 2269 101 2278 98 2287 46 2287" class="regexp"/> + <text class="regexp" x="54" y="2281">[#x1B5]</text> + <polygon points="43 2306 46 2297 132 2297 135 2306 132 2315 46 2315" class="regexp"/> + <text class="regexp" x="54" y="2309">[#x1B7-#x1B8]</text> + <polygon points="43 2334 46 2325 98 2325 101 2334 98 2343 46 2343" class="regexp"/> + <text class="regexp" x="54" y="2337">[#x1BC]</text> + <polygon points="43 2362 46 2353 98 2353 101 2362 98 2371 46 2371" class="regexp"/> + <text class="regexp" x="54" y="2365">[#x1C4]</text> + <polygon points="43 2390 46 2381 98 2381 101 2390 98 2399 46 2399" class="regexp"/> + <text class="regexp" x="54" y="2393">[#x1C7]</text> + <polygon points="43 2418 46 2409 98 2409 101 2418 98 2427 46 2427" class="regexp"/> + <text class="regexp" x="54" y="2421">[#x1CA]</text> + <polygon points="43 2446 46 2437 100 2437 103 2446 100 2455 46 2455" class="regexp"/> + <text class="regexp" x="54" y="2449">[#x1CD]</text> + <polygon points="43 2474 46 2465 98 2465 101 2474 98 2483 46 2483" class="regexp"/> + <text class="regexp" x="54" y="2477">[#x1CF]</text> + <polygon points="43 2502 46 2493 98 2493 101 2502 98 2511 46 2511" class="regexp"/> + <text class="regexp" x="54" y="2505">[#x1D1]</text> + <polygon points="43 2530 46 2521 98 2521 101 2530 98 2539 46 2539" class="regexp"/> + <text class="regexp" x="54" y="2533">[#x1D3]</text> + <polygon points="43 2558 46 2549 98 2549 101 2558 98 2567 46 2567" class="regexp"/> + <text class="regexp" x="54" y="2561">[#x1D5]</text> + <polygon points="43 2586 46 2577 98 2577 101 2586 98 2595 46 2595" class="regexp"/> + <text class="regexp" x="54" y="2589">[#x1D7]</text> + <polygon points="43 2614 46 2605 98 2605 101 2614 98 2623 46 2623" class="regexp"/> + <text class="regexp" x="54" y="2617">[#x1D9]</text> + <polygon points="43 2642 46 2633 98 2633 101 2642 98 2651 46 2651" class="regexp"/> + <text class="regexp" x="54" y="2645">[#x1DB]</text> + <polygon points="43 2670 46 2661 98 2661 101 2670 98 2679 46 2679" class="regexp"/> + <text class="regexp" x="54" y="2673">[#x1DE]</text> + <polygon points="43 2698 46 2689 98 2689 101 2698 98 2707 46 2707" class="regexp"/> + <text class="regexp" x="54" y="2701">[#x1E0]</text> + <polygon points="43 2726 46 2717 98 2717 101 2726 98 2735 46 2735" class="regexp"/> + <text class="regexp" x="54" y="2729">[#x1E2]</text> + <polygon points="43 2754 46 2745 98 2745 101 2754 98 2763 46 2763" class="regexp"/> + <text class="regexp" x="54" y="2757">[#x1E4]</text> + <polygon points="43 2782 46 2773 98 2773 101 2782 98 2791 46 2791" class="regexp"/> + <text class="regexp" x="54" y="2785">[#x1E6]</text> + <polygon points="43 2810 46 2801 98 2801 101 2810 98 2819 46 2819" class="regexp"/> + <text class="regexp" x="54" y="2813">[#x1E8]</text> + <polygon points="43 2838 46 2829 98 2829 101 2838 98 2847 46 2847" class="regexp"/> + <text class="regexp" x="54" y="2841">[#x1EA]</text> + <polygon points="43 2866 46 2857 98 2857 101 2866 98 2875 46 2875" class="regexp"/> + <text class="regexp" x="54" y="2869">[#x1EC]</text> + <polygon points="43 2894 46 2885 98 2885 101 2894 98 2903 46 2903" class="regexp"/> + <text class="regexp" x="54" y="2897">[#x1EE]</text> + <polygon points="43 2922 46 2913 96 2913 99 2922 96 2931 46 2931" class="regexp"/> + <text class="regexp" x="54" y="2925">[#x1F1]</text> + <polygon points="43 2950 46 2941 96 2941 99 2950 96 2959 46 2959" class="regexp"/> + <text class="regexp" x="54" y="2953">[#x1F4]</text> + <polygon points="43 2978 46 2969 130 2969 133 2978 130 2987 46 2987" class="regexp"/> + <text class="regexp" x="54" y="2981">[#x1F6-#x1F8]</text> + <polygon points="43 3006 46 2997 96 2997 99 3006 96 3015 46 3015" class="regexp"/> + <text class="regexp" x="54" y="3009">[#x1FA]</text> + <polygon points="43 3034 46 3025 98 3025 101 3034 98 3043 46 3043" class="regexp"/> + <text class="regexp" x="54" y="3037">[#x1FC]</text> + <polygon points="43 3062 46 3053 96 3053 99 3062 96 3071 46 3071" class="regexp"/> + <text class="regexp" x="54" y="3065">[#x1FE]</text> + <polygon points="43 3090 46 3081 98 3081 101 3090 98 3099 46 3099" class="regexp"/> + <text class="regexp" x="54" y="3093">[#x200]</text> + <polygon points="43 3118 46 3109 98 3109 101 3118 98 3127 46 3127" class="regexp"/> + <text class="regexp" x="54" y="3121">[#x202]</text> + <polygon points="43 3146 46 3137 98 3137 101 3146 98 3155 46 3155" class="regexp"/> + <text class="regexp" x="54" y="3149">[#x204]</text> + <polygon points="43 3174 46 3165 98 3165 101 3174 98 3183 46 3183" class="regexp"/> + <text class="regexp" x="54" y="3177">[#x206]</text> + <polygon points="43 3202 46 3193 98 3193 101 3202 98 3211 46 3211" class="regexp"/> + <text class="regexp" x="54" y="3205">[#x208]</text> + <polygon points="43 3230 46 3221 98 3221 101 3230 98 3239 46 3239" class="regexp"/> + <text class="regexp" x="54" y="3233">[#x20A]</text> + <polygon points="43 3258 46 3249 98 3249 101 3258 98 3267 46 3267" class="regexp"/> + <text class="regexp" x="54" y="3261">[#x20C]</text> + <polygon points="43 3286 46 3277 98 3277 101 3286 98 3295 46 3295" class="regexp"/> + <text class="regexp" x="54" y="3289">[#x20E]</text> + <polygon points="43 3314 46 3305 98 3305 101 3314 98 3323 46 3323" class="regexp"/> + <text class="regexp" x="54" y="3317">[#x210]</text> + <polygon points="43 3342 46 3333 98 3333 101 3342 98 3351 46 3351" class="regexp"/> + <text class="regexp" x="54" y="3345">[#x212]</text> + <polygon points="43 3370 46 3361 98 3361 101 3370 98 3379 46 3379" class="regexp"/> + <text class="regexp" x="54" y="3373">[#x214]</text> + <polygon points="43 3398 46 3389 98 3389 101 3398 98 3407 46 3407" class="regexp"/> + <text class="regexp" x="54" y="3401">[#x216]</text> + <polygon points="43 3426 46 3417 98 3417 101 3426 98 3435 46 3435" class="regexp"/> + <text class="regexp" x="54" y="3429">[#x218]</text> + <polygon points="43 3454 46 3445 98 3445 101 3454 98 3463 46 3463" class="regexp"/> + <text class="regexp" x="54" y="3457">[#x21A]</text> + <polygon points="43 3482 46 3473 98 3473 101 3482 98 3491 46 3491" class="regexp"/> + <text class="regexp" x="54" y="3485">[#x21C]</text> + <polygon points="43 3510 46 3501 98 3501 101 3510 98 3519 46 3519" class="regexp"/> + <text class="regexp" x="54" y="3513">[#x21E]</text> + <polygon points="43 3538 46 3529 98 3529 101 3538 98 3547 46 3547" class="regexp"/> + <text class="regexp" x="54" y="3541">[#x220]</text> + <polygon points="43 3566 46 3557 98 3557 101 3566 98 3575 46 3575" class="regexp"/> + <text class="regexp" x="54" y="3569">[#x222]</text> + <polygon points="43 3594 46 3585 98 3585 101 3594 98 3603 46 3603" class="regexp"/> + <text class="regexp" x="54" y="3597">[#x224]</text> + <polygon points="43 3622 46 3613 98 3613 101 3622 98 3631 46 3631" class="regexp"/> + <text class="regexp" x="54" y="3625">[#x226]</text> + <polygon points="43 3650 46 3641 98 3641 101 3650 98 3659 46 3659" class="regexp"/> + <text class="regexp" x="54" y="3653">[#x228]</text> + <polygon points="43 3678 46 3669 98 3669 101 3678 98 3687 46 3687" class="regexp"/> + <text class="regexp" x="54" y="3681">[#x22A]</text> + <polygon points="43 3706 46 3697 98 3697 101 3706 98 3715 46 3715" class="regexp"/> + <text class="regexp" x="54" y="3709">[#x22C]</text> + <polygon points="43 3734 46 3725 98 3725 101 3734 98 3743 46 3743" class="regexp"/> + <text class="regexp" x="54" y="3737">[#x22E]</text> + <polygon points="43 3762 46 3753 98 3753 101 3762 98 3771 46 3771" class="regexp"/> + <text class="regexp" x="54" y="3765">[#x230]</text> + <polygon points="43 3790 46 3781 98 3781 101 3790 98 3799 46 3799" class="regexp"/> + <text class="regexp" x="54" y="3793">[#x232]</text> + <polygon points="43 3818 46 3809 132 3809 135 3818 132 3827 46 3827" class="regexp"/> + <text class="regexp" x="54" y="3821">[#x23A-#x23B]</text> + <polygon points="43 3846 46 3837 132 3837 135 3846 132 3855 46 3855" class="regexp"/> + <text class="regexp" x="54" y="3849">[#x23D-#x23E]</text> + <polygon points="43 3874 46 3865 98 3865 101 3874 98 3883 46 3883" class="regexp"/> + <text class="regexp" x="54" y="3877">[#x241]</text> + <polygon points="43 3902 46 3893 132 3893 135 3902 132 3911 46 3911" class="regexp"/> + <text class="regexp" x="54" y="3905">[#x243-#x246]</text> + <polygon points="43 3930 46 3921 98 3921 101 3930 98 3939 46 3939" class="regexp"/> + <text class="regexp" x="54" y="3933">[#x248]</text> + <polygon points="43 3958 46 3949 98 3949 101 3958 98 3967 46 3967" class="regexp"/> + <text class="regexp" x="54" y="3961">[#x24A]</text> + <polygon points="43 3986 46 3977 98 3977 101 3986 98 3995 46 3995" class="regexp"/> + <text class="regexp" x="54" y="3989">[#x24C]</text> + <polygon points="43 4014 46 4005 98 4005 101 4014 98 4023 46 4023" class="regexp"/> + <text class="regexp" x="54" y="4017">[#x24E]</text> + <polygon points="43 4042 46 4033 98 4033 101 4042 98 4051 46 4051" class="regexp"/> + <text class="regexp" x="54" y="4045">[#x370]</text> + <polygon points="43 4070 46 4061 98 4061 101 4070 98 4079 46 4079" class="regexp"/> + <text class="regexp" x="54" y="4073">[#x372]</text> + <polygon points="43 4098 46 4089 98 4089 101 4098 98 4107 46 4107" class="regexp"/> + <text class="regexp" x="54" y="4101">[#x376]</text> + <polygon points="43 4126 46 4117 96 4117 99 4126 96 4135 46 4135" class="regexp"/> + <text class="regexp" x="54" y="4129">[#x37F]</text> + <polygon points="43 4154 46 4145 98 4145 101 4154 98 4163 46 4163" class="regexp"/> + <text class="regexp" x="54" y="4157">[#x386]</text> + <polygon points="43 4182 46 4173 132 4173 135 4182 132 4191 46 4191" class="regexp"/> + <text class="regexp" x="54" y="4185">[#x388-#x38A]</text> + <polygon points="43 4210 46 4201 98 4201 101 4210 98 4219 46 4219" class="regexp"/> + <text class="regexp" x="54" y="4213">[#x38C]</text> + <polygon points="43 4238 46 4229 130 4229 133 4238 130 4247 46 4247" class="regexp"/> + <text class="regexp" x="54" y="4241">[#x38E-#x38F]</text> + <polygon points="43 4266 46 4257 132 4257 135 4266 132 4275 46 4275" class="regexp"/> + <text class="regexp" x="54" y="4269">[#x391-#x3A1]</text> + <polygon points="43 4294 46 4285 132 4285 135 4294 132 4303 46 4303" class="regexp"/> + <text class="regexp" x="54" y="4297">[#x3A3-#x3AB]</text> + <polygon points="43 4322 46 4313 98 4313 101 4322 98 4331 46 4331" class="regexp"/> + <text class="regexp" x="54" y="4325">[#x3CF]</text> + <polygon points="43 4350 46 4341 134 4341 137 4350 134 4359 46 4359" class="regexp"/> + <text class="regexp" x="54" y="4353">[#x3D2-#x3D4]</text> + <polygon points="43 4378 46 4369 98 4369 101 4378 98 4387 46 4387" class="regexp"/> + <text class="regexp" x="54" y="4381">[#x3D8]</text> + <polygon points="43 4406 46 4397 98 4397 101 4406 98 4415 46 4415" class="regexp"/> + <text class="regexp" x="54" y="4409">[#x3DA]</text> + <polygon points="43 4434 46 4425 100 4425 103 4434 100 4443 46 4443" class="regexp"/> + <text class="regexp" x="54" y="4437">[#x3DC]</text> + <polygon points="43 4462 46 4453 98 4453 101 4462 98 4471 46 4471" class="regexp"/> + <text class="regexp" x="54" y="4465">[#x3DE]</text> + <polygon points="43 4490 46 4481 98 4481 101 4490 98 4499 46 4499" class="regexp"/> + <text class="regexp" x="54" y="4493">[#x3E0]</text> + <polygon points="43 4518 46 4509 98 4509 101 4518 98 4527 46 4527" class="regexp"/> + <text class="regexp" x="54" y="4521">[#x3E2]</text> + <polygon points="43 4546 46 4537 98 4537 101 4546 98 4555 46 4555" class="regexp"/> + <text class="regexp" x="54" y="4549">[#x3E4]</text> + <polygon points="43 4574 46 4565 98 4565 101 4574 98 4583 46 4583" class="regexp"/> + <text class="regexp" x="54" y="4577">[#x3E6]</text> + <polygon points="43 4602 46 4593 98 4593 101 4602 98 4611 46 4611" class="regexp"/> + <text class="regexp" x="54" y="4605">[#x3E8]</text> + <polygon points="43 4630 46 4621 98 4621 101 4630 98 4639 46 4639" class="regexp"/> + <text class="regexp" x="54" y="4633">[#x3EA]</text> + <polygon points="43 4658 46 4649 98 4649 101 4658 98 4667 46 4667" class="regexp"/> + <text class="regexp" x="54" y="4661">[#x3EC]</text> + <polygon points="43 4686 46 4677 98 4677 101 4686 98 4695 46 4695" class="regexp"/> + <text class="regexp" x="54" y="4689">[#x3EE]</text> + <polygon points="43 4714 46 4705 96 4705 99 4714 96 4723 46 4723" class="regexp"/> + <text class="regexp" x="54" y="4717">[#x3F4]</text> + <polygon points="43 4742 46 4733 96 4733 99 4742 96 4751 46 4751" class="regexp"/> + <text class="regexp" x="54" y="4745">[#x3F7]</text> + <polygon points="43 4770 46 4761 130 4761 133 4770 130 4779 46 4779" class="regexp"/> + <text class="regexp" x="54" y="4773">[#x3F9-#x3FA]</text> + <polygon points="43 4798 46 4789 130 4789 133 4798 130 4807 46 4807" class="regexp"/> + <text class="regexp" x="54" y="4801">[#x3FD-#x42F]</text> + <polygon points="43 4826 46 4817 98 4817 101 4826 98 4835 46 4835" class="regexp"/> + <text class="regexp" x="54" y="4829">[#x460]</text> + <polygon points="43 4854 46 4845 98 4845 101 4854 98 4863 46 4863" class="regexp"/> + <text class="regexp" x="54" y="4857">[#x462]</text> + <polygon points="43 4882 46 4873 98 4873 101 4882 98 4891 46 4891" class="regexp"/> + <text class="regexp" x="54" y="4885">[#x464]</text> + <polygon points="43 4910 46 4901 98 4901 101 4910 98 4919 46 4919" class="regexp"/> + <text class="regexp" x="54" y="4913">[#x466]</text> + <polygon points="43 4938 46 4929 98 4929 101 4938 98 4947 46 4947" class="regexp"/> + <text class="regexp" x="54" y="4941">[#x468]</text> + <polygon points="43 4966 46 4957 98 4957 101 4966 98 4975 46 4975" class="regexp"/> + <text class="regexp" x="54" y="4969">[#x46A]</text> + <polygon points="43 4994 46 4985 98 4985 101 4994 98 5003 46 5003" class="regexp"/> + <text class="regexp" x="54" y="4997">[#x46C]</text> + <polygon points="43 5022 46 5013 98 5013 101 5022 98 5031 46 5031" class="regexp"/> + <text class="regexp" x="54" y="5025">[#x46E]</text> + <polygon points="43 5050 46 5041 98 5041 101 5050 98 5059 46 5059" class="regexp"/> + <text class="regexp" x="54" y="5053">[#x470]</text> + <polygon points="43 5078 46 5069 98 5069 101 5078 98 5087 46 5087" class="regexp"/> + <text class="regexp" x="54" y="5081">[#x472]</text> + <polygon points="43 5106 46 5097 98 5097 101 5106 98 5115 46 5115" class="regexp"/> + <text class="regexp" x="54" y="5109">[#x474]</text> + <polygon points="43 5134 46 5125 98 5125 101 5134 98 5143 46 5143" class="regexp"/> + <text class="regexp" x="54" y="5137">[#x476]</text> + <polygon points="43 5162 46 5153 98 5153 101 5162 98 5171 46 5171" class="regexp"/> + <text class="regexp" x="54" y="5165">[#x478]</text> + <polygon points="43 5190 46 5181 98 5181 101 5190 98 5199 46 5199" class="regexp"/> + <text class="regexp" x="54" y="5193">[#x47A]</text> + <polygon points="43 5218 46 5209 98 5209 101 5218 98 5227 46 5227" class="regexp"/> + <text class="regexp" x="54" y="5221">[#x47C]</text> + <polygon points="43 5246 46 5237 98 5237 101 5246 98 5255 46 5255" class="regexp"/> + <text class="regexp" x="54" y="5249">[#x47E]</text> + <polygon points="43 5274 46 5265 98 5265 101 5274 98 5283 46 5283" class="regexp"/> + <text class="regexp" x="54" y="5277">[#x480]</text> + <polygon points="43 5302 46 5293 98 5293 101 5302 98 5311 46 5311" class="regexp"/> + <text class="regexp" x="54" y="5305">[#x48A]</text> + <polygon points="43 5330 46 5321 98 5321 101 5330 98 5339 46 5339" class="regexp"/> + <text class="regexp" x="54" y="5333">[#x48C]</text> + <polygon points="43 5358 46 5349 98 5349 101 5358 98 5367 46 5367" class="regexp"/> + <text class="regexp" x="54" y="5361">[#x48E]</text> + <polygon points="43 5386 46 5377 98 5377 101 5386 98 5395 46 5395" class="regexp"/> + <text class="regexp" x="54" y="5389">[#x490]</text> + <polygon points="43 5414 46 5405 98 5405 101 5414 98 5423 46 5423" class="regexp"/> + <text class="regexp" x="54" y="5417">[#x492]</text> + <polygon points="43 5442 46 5433 98 5433 101 5442 98 5451 46 5451" class="regexp"/> + <text class="regexp" x="54" y="5445">[#x494]</text> + <polygon points="43 5470 46 5461 98 5461 101 5470 98 5479 46 5479" class="regexp"/> + <text class="regexp" x="54" y="5473">[#x496]</text> + <polygon points="43 5498 46 5489 98 5489 101 5498 98 5507 46 5507" class="regexp"/> + <text class="regexp" x="54" y="5501">[#x498]</text> + <polygon points="43 5526 46 5517 98 5517 101 5526 98 5535 46 5535" class="regexp"/> + <text class="regexp" x="54" y="5529">[#x49A]</text> + <polygon points="43 5554 46 5545 98 5545 101 5554 98 5563 46 5563" class="regexp"/> + <text class="regexp" x="54" y="5557">[#x49C]</text> + <polygon points="43 5582 46 5573 98 5573 101 5582 98 5591 46 5591" class="regexp"/> + <text class="regexp" x="54" y="5585">[#x49E]</text> + <polygon points="43 5610 46 5601 98 5601 101 5610 98 5619 46 5619" class="regexp"/> + <text class="regexp" x="54" y="5613">[#x4A0]</text> + <polygon points="43 5638 46 5629 98 5629 101 5638 98 5647 46 5647" class="regexp"/> + <text class="regexp" x="54" y="5641">[#x4A2]</text> + <polygon points="43 5666 46 5657 98 5657 101 5666 98 5675 46 5675" class="regexp"/> + <text class="regexp" x="54" y="5669">[#x4A4]</text> + <polygon points="43 5694 46 5685 98 5685 101 5694 98 5703 46 5703" class="regexp"/> + <text class="regexp" x="54" y="5697">[#x4A6]</text> + <polygon points="43 5722 46 5713 98 5713 101 5722 98 5731 46 5731" class="regexp"/> + <text class="regexp" x="54" y="5725">[#x4A8]</text> + <polygon points="43 5750 46 5741 98 5741 101 5750 98 5759 46 5759" class="regexp"/> + <text class="regexp" x="54" y="5753">[#x4AA]</text> + <polygon points="43 5778 46 5769 98 5769 101 5778 98 5787 46 5787" class="regexp"/> + <text class="regexp" x="54" y="5781">[#x4AC]</text> + <polygon points="43 5806 46 5797 98 5797 101 5806 98 5815 46 5815" class="regexp"/> + <text class="regexp" x="54" y="5809">[#x4AE]</text> + <polygon points="43 5834 46 5825 98 5825 101 5834 98 5843 46 5843" class="regexp"/> + <text class="regexp" x="54" y="5837">[#x4B0]</text> + <polygon points="43 5862 46 5853 98 5853 101 5862 98 5871 46 5871" class="regexp"/> + <text class="regexp" x="54" y="5865">[#x4B2]</text> + <polygon points="43 5890 46 5881 98 5881 101 5890 98 5899 46 5899" class="regexp"/> + <text class="regexp" x="54" y="5893">[#x4B4]</text> + <polygon points="43 5918 46 5909 98 5909 101 5918 98 5927 46 5927" class="regexp"/> + <text class="regexp" x="54" y="5921">[#x4B6]</text> + <polygon points="43 5946 46 5937 98 5937 101 5946 98 5955 46 5955" class="regexp"/> + <text class="regexp" x="54" y="5949">[#x4B8]</text> + <polygon points="43 5974 46 5965 98 5965 101 5974 98 5983 46 5983" class="regexp"/> + <text class="regexp" x="54" y="5977">[#x4BA]</text> + <polygon points="43 6002 46 5993 98 5993 101 6002 98 6011 46 6011" class="regexp"/> + <text class="regexp" x="54" y="6005">[#x4BC]</text> + <polygon points="43 6030 46 6021 98 6021 101 6030 98 6039 46 6039" class="regexp"/> + <text class="regexp" x="54" y="6033">[#x4BE]</text> + <polygon points="43 6058 46 6049 134 6049 137 6058 134 6067 46 6067" class="regexp"/> + <text class="regexp" x="54" y="6061">[#x4C0-#x4C1]</text> + <polygon points="43 6086 46 6077 98 6077 101 6086 98 6095 46 6095" class="regexp"/> + <text class="regexp" x="54" y="6089">[#x4C3]</text> + <polygon points="43 6114 46 6105 98 6105 101 6114 98 6123 46 6123" class="regexp"/> + <text class="regexp" x="54" y="6117">[#x4C5]</text> + <polygon points="43 6142 46 6133 98 6133 101 6142 98 6151 46 6151" class="regexp"/> + <text class="regexp" x="54" y="6145">[#x4C7]</text> + <polygon points="43 6170 46 6161 98 6161 101 6170 98 6179 46 6179" class="regexp"/> + <text class="regexp" x="54" y="6173">[#x4C9]</text> + <polygon points="43 6198 46 6189 98 6189 101 6198 98 6207 46 6207" class="regexp"/> + <text class="regexp" x="54" y="6201">[#x4CB]</text> + <polygon points="43 6226 46 6217 100 6217 103 6226 100 6235 46 6235" class="regexp"/> + <text class="regexp" x="54" y="6229">[#x4CD]</text> + <polygon points="43 6254 46 6245 98 6245 101 6254 98 6263 46 6263" class="regexp"/> + <text class="regexp" x="54" y="6257">[#x4D0]</text> + <polygon points="43 6282 46 6273 98 6273 101 6282 98 6291 46 6291" class="regexp"/> + <text class="regexp" x="54" y="6285">[#x4D2]</text> + <polygon points="43 6310 46 6301 98 6301 101 6310 98 6319 46 6319" class="regexp"/> + <text class="regexp" x="54" y="6313">[#x4D4]</text> + <polygon points="43 6338 46 6329 98 6329 101 6338 98 6347 46 6347" class="regexp"/> + <text class="regexp" x="54" y="6341">[#x4D6]</text> + <polygon points="43 6366 46 6357 98 6357 101 6366 98 6375 46 6375" class="regexp"/> + <text class="regexp" x="54" y="6369">[#x4D8]</text> + <polygon points="43 6394 46 6385 98 6385 101 6394 98 6403 46 6403" class="regexp"/> + <text class="regexp" x="54" y="6397">[#x4DA]</text> + <polygon points="43 6422 46 6413 100 6413 103 6422 100 6431 46 6431" class="regexp"/> + <text class="regexp" x="54" y="6425">[#x4DC]</text> + <polygon points="43 6450 46 6441 98 6441 101 6450 98 6459 46 6459" class="regexp"/> + <text class="regexp" x="54" y="6453">[#x4DE]</text> + <polygon points="43 6478 46 6469 98 6469 101 6478 98 6487 46 6487" class="regexp"/> + <text class="regexp" x="54" y="6481">[#x4E0]</text> + <polygon points="43 6506 46 6497 98 6497 101 6506 98 6515 46 6515" class="regexp"/> + <text class="regexp" x="54" y="6509">[#x4E2]</text> + <polygon points="43 6534 46 6525 98 6525 101 6534 98 6543 46 6543" class="regexp"/> + <text class="regexp" x="54" y="6537">[#x4E4]</text> + <polygon points="43 6562 46 6553 98 6553 101 6562 98 6571 46 6571" class="regexp"/> + <text class="regexp" x="54" y="6565">[#x4E6]</text> + <polygon points="43 6590 46 6581 98 6581 101 6590 98 6599 46 6599" class="regexp"/> + <text class="regexp" x="54" y="6593">[#x4E8]</text> + <polygon points="43 6618 46 6609 98 6609 101 6618 98 6627 46 6627" class="regexp"/> + <text class="regexp" x="54" y="6621">[#x4EA]</text> + <polygon points="43 6646 46 6637 98 6637 101 6646 98 6655 46 6655" class="regexp"/> + <text class="regexp" x="54" y="6649">[#x4EC]</text> + <polygon points="43 6674 46 6665 98 6665 101 6674 98 6683 46 6683" class="regexp"/> + <text class="regexp" x="54" y="6677">[#x4EE]</text> + <polygon points="43 6702 46 6693 96 6693 99 6702 96 6711 46 6711" class="regexp"/> + <text class="regexp" x="54" y="6705">[#x4F0]</text> + <polygon points="43 6730 46 6721 96 6721 99 6730 96 6739 46 6739" class="regexp"/> + <text class="regexp" x="54" y="6733">[#x4F2]</text> + <polygon points="43 6758 46 6749 96 6749 99 6758 96 6767 46 6767" class="regexp"/> + <text class="regexp" x="54" y="6761">[#x4F4]</text> + <polygon points="43 6786 46 6777 96 6777 99 6786 96 6795 46 6795" class="regexp"/> + <text class="regexp" x="54" y="6789">[#x4F6]</text> + <polygon points="43 6814 46 6805 96 6805 99 6814 96 6823 46 6823" class="regexp"/> + <text class="regexp" x="54" y="6817">[#x4F8]</text> + <polygon points="43 6842 46 6833 96 6833 99 6842 96 6851 46 6851" class="regexp"/> + <text class="regexp" x="54" y="6845">[#x4FA]</text> + <polygon points="43 6870 46 6861 98 6861 101 6870 98 6879 46 6879" class="regexp"/> + <text class="regexp" x="54" y="6873">[#x4FC]</text> + <polygon points="43 6898 46 6889 96 6889 99 6898 96 6907 46 6907" class="regexp"/> + <text class="regexp" x="54" y="6901">[#x4FE]</text> + <polygon points="43 6926 46 6917 98 6917 101 6926 98 6935 46 6935" class="regexp"/> + <text class="regexp" x="54" y="6929">[#x500]</text> + <polygon points="43 6954 46 6945 98 6945 101 6954 98 6963 46 6963" class="regexp"/> + <text class="regexp" x="54" y="6957">[#x502]</text> + <polygon points="43 6982 46 6973 98 6973 101 6982 98 6991 46 6991" class="regexp"/> + <text class="regexp" x="54" y="6985">[#x504]</text> + <polygon points="43 7010 46 7001 98 7001 101 7010 98 7019 46 7019" class="regexp"/> + <text class="regexp" x="54" y="7013">[#x506]</text> + <polygon points="43 7038 46 7029 98 7029 101 7038 98 7047 46 7047" class="regexp"/> + <text class="regexp" x="54" y="7041">[#x508]</text> + <polygon points="43 7066 46 7057 98 7057 101 7066 98 7075 46 7075" class="regexp"/> + <text class="regexp" x="54" y="7069">[#x50A]</text> + <polygon points="43 7094 46 7085 98 7085 101 7094 98 7103 46 7103" class="regexp"/> + <text class="regexp" x="54" y="7097">[#x50C]</text> + <polygon points="43 7122 46 7113 98 7113 101 7122 98 7131 46 7131" class="regexp"/> + <text class="regexp" x="54" y="7125">[#x50E]</text> + <polygon points="43 7150 46 7141 98 7141 101 7150 98 7159 46 7159" class="regexp"/> + <text class="regexp" x="54" y="7153">[#x510]</text> + <polygon points="43 7178 46 7169 98 7169 101 7178 98 7187 46 7187" class="regexp"/> + <text class="regexp" x="54" y="7181">[#x512]</text> + <polygon points="43 7206 46 7197 98 7197 101 7206 98 7215 46 7215" class="regexp"/> + <text class="regexp" x="54" y="7209">[#x514]</text> + <polygon points="43 7234 46 7225 98 7225 101 7234 98 7243 46 7243" class="regexp"/> + <text class="regexp" x="54" y="7237">[#x516]</text> + <polygon points="43 7262 46 7253 98 7253 101 7262 98 7271 46 7271" class="regexp"/> + <text class="regexp" x="54" y="7265">[#x518]</text> + <polygon points="43 7290 46 7281 98 7281 101 7290 98 7299 46 7299" class="regexp"/> + <text class="regexp" x="54" y="7293">[#x51A]</text> + <polygon points="43 7318 46 7309 98 7309 101 7318 98 7327 46 7327" class="regexp"/> + <text class="regexp" x="54" y="7321">[#x51C]</text> + <polygon points="43 7346 46 7337 98 7337 101 7346 98 7355 46 7355" class="regexp"/> + <text class="regexp" x="54" y="7349">[#x51E]</text> + <polygon points="43 7374 46 7365 98 7365 101 7374 98 7383 46 7383" class="regexp"/> + <text class="regexp" x="54" y="7377">[#x520]</text> + <polygon points="43 7402 46 7393 98 7393 101 7402 98 7411 46 7411" class="regexp"/> + <text class="regexp" x="54" y="7405">[#x522]</text> + <polygon points="43 7430 46 7421 98 7421 101 7430 98 7439 46 7439" class="regexp"/> + <text class="regexp" x="54" y="7433">[#x524]</text> + <polygon points="43 7458 46 7449 98 7449 101 7458 98 7467 46 7467" class="regexp"/> + <text class="regexp" x="54" y="7461">[#x526]</text> + <polygon points="43 7486 46 7477 98 7477 101 7486 98 7495 46 7495" class="regexp"/> + <text class="regexp" x="54" y="7489">[#x528]</text> + <polygon points="43 7514 46 7505 98 7505 101 7514 98 7523 46 7523" class="regexp"/> + <text class="regexp" x="54" y="7517">[#x52A]</text> + <polygon points="43 7542 46 7533 98 7533 101 7542 98 7551 46 7551" class="regexp"/> + <text class="regexp" x="54" y="7545">[#x52C]</text> + <polygon points="43 7570 46 7561 98 7561 101 7570 98 7579 46 7579" class="regexp"/> + <text class="regexp" x="54" y="7573">[#x52E]</text> + <polygon points="43 7598 46 7589 132 7589 135 7598 132 7607 46 7607" class="regexp"/> + <text class="regexp" x="54" y="7601">[#x531-#x556]</text> + <polygon points="43 7626 46 7617 144 7617 147 7626 144 7635 46 7635" class="regexp"/> + <text class="regexp" x="54" y="7629">[#x10A0-#x10C5]</text> + <polygon points="43 7654 46 7645 104 7645 107 7654 104 7663 46 7663" class="regexp"/> + <text class="regexp" x="54" y="7657">[#x10C7]</text> + <polygon points="43 7682 46 7673 106 7673 109 7682 106 7691 46 7691" class="regexp"/> + <text class="regexp" x="54" y="7685">[#x10CD]</text> + <polygon points="43 7710 46 7701 142 7701 145 7710 142 7719 46 7719" class="regexp"/> + <text class="regexp" x="54" y="7713">[#x13A0-#x13F5]</text> + <polygon points="43 7738 46 7729 146 7729 149 7738 146 7747 46 7747" class="regexp"/> + <text class="regexp" x="54" y="7741">[#x1C90-#x1CBA]</text> + <polygon points="43 7766 46 7757 146 7757 149 7766 146 7775 46 7775" class="regexp"/> + <text class="regexp" x="54" y="7769">[#x1CBD-#x1CBF]</text> + <polygon points="43 7794 46 7785 104 7785 107 7794 104 7803 46 7803" class="regexp"/> + <text class="regexp" x="54" y="7797">[#x1E00]</text> + <polygon points="43 7822 46 7813 104 7813 107 7822 104 7831 46 7831" class="regexp"/> + <text class="regexp" x="54" y="7825">[#x1E02]</text> + <polygon points="43 7850 46 7841 104 7841 107 7850 104 7859 46 7859" class="regexp"/> + <text class="regexp" x="54" y="7853">[#x1E04]</text> + <polygon points="43 7878 46 7869 104 7869 107 7878 104 7887 46 7887" class="regexp"/> + <text class="regexp" x="54" y="7881">[#x1E06]</text> + <polygon points="43 7906 46 7897 104 7897 107 7906 104 7915 46 7915" class="regexp"/> + <text class="regexp" x="54" y="7909">[#x1E08]</text> + <polygon points="43 7934 46 7925 104 7925 107 7934 104 7943 46 7943" class="regexp"/> + <text class="regexp" x="54" y="7937">[#x1E0A]</text> + <polygon points="43 7962 46 7953 104 7953 107 7962 104 7971 46 7971" class="regexp"/> + <text class="regexp" x="54" y="7965">[#x1E0C]</text> + <polygon points="43 7990 46 7981 104 7981 107 7990 104 7999 46 7999" class="regexp"/> + <text class="regexp" x="54" y="7993">[#x1E0E]</text> + <polygon points="43 8018 46 8009 104 8009 107 8018 104 8027 46 8027" class="regexp"/> + <text class="regexp" x="54" y="8021">[#x1E10]</text> + <polygon points="43 8046 46 8037 104 8037 107 8046 104 8055 46 8055" class="regexp"/> + <text class="regexp" x="54" y="8049">[#x1E12]</text> + <polygon points="43 8074 46 8065 104 8065 107 8074 104 8083 46 8083" class="regexp"/> + <text class="regexp" x="54" y="8077">[#x1E14]</text> + <polygon points="43 8102 46 8093 104 8093 107 8102 104 8111 46 8111" class="regexp"/> + <text class="regexp" x="54" y="8105">[#x1E16]</text> + <polygon points="43 8130 46 8121 104 8121 107 8130 104 8139 46 8139" class="regexp"/> + <text class="regexp" x="54" y="8133">[#x1E18]</text> + <polygon points="43 8158 46 8149 104 8149 107 8158 104 8167 46 8167" class="regexp"/> + <text class="regexp" x="54" y="8161">[#x1E1A]</text> + <polygon points="43 8186 46 8177 104 8177 107 8186 104 8195 46 8195" class="regexp"/> + <text class="regexp" x="54" y="8189">[#x1E1C]</text> + <polygon points="43 8214 46 8205 104 8205 107 8214 104 8223 46 8223" class="regexp"/> + <text class="regexp" x="54" y="8217">[#x1E1E]</text> + <polygon points="43 8242 46 8233 104 8233 107 8242 104 8251 46 8251" class="regexp"/> + <text class="regexp" x="54" y="8245">[#x1E20]</text> + <polygon points="43 8270 46 8261 104 8261 107 8270 104 8279 46 8279" class="regexp"/> + <text class="regexp" x="54" y="8273">[#x1E22]</text> + <polygon points="43 8298 46 8289 104 8289 107 8298 104 8307 46 8307" class="regexp"/> + <text class="regexp" x="54" y="8301">[#x1E24]</text> + <polygon points="43 8326 46 8317 104 8317 107 8326 104 8335 46 8335" class="regexp"/> + <text class="regexp" x="54" y="8329">[#x1E26]</text> + <polygon points="43 8354 46 8345 104 8345 107 8354 104 8363 46 8363" class="regexp"/> + <text class="regexp" x="54" y="8357">[#x1E28]</text> + <polygon points="43 8382 46 8373 104 8373 107 8382 104 8391 46 8391" class="regexp"/> + <text class="regexp" x="54" y="8385">[#x1E2A]</text> + <polygon points="43 8410 46 8401 104 8401 107 8410 104 8419 46 8419" class="regexp"/> + <text class="regexp" x="54" y="8413">[#x1E2C]</text> + <polygon points="43 8438 46 8429 104 8429 107 8438 104 8447 46 8447" class="regexp"/> + <text class="regexp" x="54" y="8441">[#x1E2E]</text> + <polygon points="43 8466 46 8457 104 8457 107 8466 104 8475 46 8475" class="regexp"/> + <text class="regexp" x="54" y="8469">[#x1E30]</text> + <polygon points="43 8494 46 8485 104 8485 107 8494 104 8503 46 8503" class="regexp"/> + <text class="regexp" x="54" y="8497">[#x1E32]</text> + <polygon points="43 8522 46 8513 104 8513 107 8522 104 8531 46 8531" class="regexp"/> + <text class="regexp" x="54" y="8525">[#x1E34]</text> + <polygon points="43 8550 46 8541 104 8541 107 8550 104 8559 46 8559" class="regexp"/> + <text class="regexp" x="54" y="8553">[#x1E36]</text> + <polygon points="43 8578 46 8569 104 8569 107 8578 104 8587 46 8587" class="regexp"/> + <text class="regexp" x="54" y="8581">[#x1E38]</text> + <polygon points="43 8606 46 8597 104 8597 107 8606 104 8615 46 8615" class="regexp"/> + <text class="regexp" x="54" y="8609">[#x1E3A]</text> + <polygon points="43 8634 46 8625 104 8625 107 8634 104 8643 46 8643" class="regexp"/> + <text class="regexp" x="54" y="8637">[#x1E3C]</text> + <polygon points="43 8662 46 8653 104 8653 107 8662 104 8671 46 8671" class="regexp"/> + <text class="regexp" x="54" y="8665">[#x1E3E]</text> + <polygon points="43 8690 46 8681 104 8681 107 8690 104 8699 46 8699" class="regexp"/> + <text class="regexp" x="54" y="8693">[#x1E40]</text> + <polygon points="43 8718 46 8709 104 8709 107 8718 104 8727 46 8727" class="regexp"/> + <text class="regexp" x="54" y="8721">[#x1E42]</text> + <polygon points="43 8746 46 8737 104 8737 107 8746 104 8755 46 8755" class="regexp"/> + <text class="regexp" x="54" y="8749">[#x1E44]</text> + <polygon points="43 8774 46 8765 104 8765 107 8774 104 8783 46 8783" class="regexp"/> + <text class="regexp" x="54" y="8777">[#x1E46]</text> + <polygon points="43 8802 46 8793 104 8793 107 8802 104 8811 46 8811" class="regexp"/> + <text class="regexp" x="54" y="8805">[#x1E48]</text> + <polygon points="43 8830 46 8821 104 8821 107 8830 104 8839 46 8839" class="regexp"/> + <text class="regexp" x="54" y="8833">[#x1E4A]</text> + <polygon points="43 8858 46 8849 104 8849 107 8858 104 8867 46 8867" class="regexp"/> + <text class="regexp" x="54" y="8861">[#x1E4C]</text> + <polygon points="43 8886 46 8877 104 8877 107 8886 104 8895 46 8895" class="regexp"/> + <text class="regexp" x="54" y="8889">[#x1E4E]</text> + <polygon points="43 8914 46 8905 104 8905 107 8914 104 8923 46 8923" class="regexp"/> + <text class="regexp" x="54" y="8917">[#x1E50]</text> + <polygon points="43 8942 46 8933 104 8933 107 8942 104 8951 46 8951" class="regexp"/> + <text class="regexp" x="54" y="8945">[#x1E52]</text> + <polygon points="43 8970 46 8961 104 8961 107 8970 104 8979 46 8979" class="regexp"/> + <text class="regexp" x="54" y="8973">[#x1E54]</text> + <polygon points="43 8998 46 8989 104 8989 107 8998 104 9007 46 9007" class="regexp"/> + <text class="regexp" x="54" y="9001">[#x1E56]</text> + <polygon points="43 9026 46 9017 104 9017 107 9026 104 9035 46 9035" class="regexp"/> + <text class="regexp" x="54" y="9029">[#x1E58]</text> + <polygon points="43 9054 46 9045 104 9045 107 9054 104 9063 46 9063" class="regexp"/> + <text class="regexp" x="54" y="9057">[#x1E5A]</text> + <polygon points="43 9082 46 9073 104 9073 107 9082 104 9091 46 9091" class="regexp"/> + <text class="regexp" x="54" y="9085">[#x1E5C]</text> + <polygon points="43 9110 46 9101 104 9101 107 9110 104 9119 46 9119" class="regexp"/> + <text class="regexp" x="54" y="9113">[#x1E5E]</text> + <polygon points="43 9138 46 9129 104 9129 107 9138 104 9147 46 9147" class="regexp"/> + <text class="regexp" x="54" y="9141">[#x1E60]</text> + <polygon points="43 9166 46 9157 104 9157 107 9166 104 9175 46 9175" class="regexp"/> + <text class="regexp" x="54" y="9169">[#x1E62]</text> + <polygon points="43 9194 46 9185 104 9185 107 9194 104 9203 46 9203" class="regexp"/> + <text class="regexp" x="54" y="9197">[#x1E64]</text> + <polygon points="43 9222 46 9213 104 9213 107 9222 104 9231 46 9231" class="regexp"/> + <text class="regexp" x="54" y="9225">[#x1E66]</text> + <polygon points="43 9250 46 9241 104 9241 107 9250 104 9259 46 9259" class="regexp"/> + <text class="regexp" x="54" y="9253">[#x1E68]</text> + <polygon points="43 9278 46 9269 104 9269 107 9278 104 9287 46 9287" class="regexp"/> + <text class="regexp" x="54" y="9281">[#x1E6A]</text> + <polygon points="43 9306 46 9297 104 9297 107 9306 104 9315 46 9315" class="regexp"/> + <text class="regexp" x="54" y="9309">[#x1E6C]</text> + <polygon points="43 9334 46 9325 104 9325 107 9334 104 9343 46 9343" class="regexp"/> + <text class="regexp" x="54" y="9337">[#x1E6E]</text> + <polygon points="43 9362 46 9353 104 9353 107 9362 104 9371 46 9371" class="regexp"/> + <text class="regexp" x="54" y="9365">[#x1E70]</text> + <polygon points="43 9390 46 9381 104 9381 107 9390 104 9399 46 9399" class="regexp"/> + <text class="regexp" x="54" y="9393">[#x1E72]</text> + <polygon points="43 9418 46 9409 104 9409 107 9418 104 9427 46 9427" class="regexp"/> + <text class="regexp" x="54" y="9421">[#x1E74]</text> + <polygon points="43 9446 46 9437 104 9437 107 9446 104 9455 46 9455" class="regexp"/> + <text class="regexp" x="54" y="9449">[#x1E76]</text> + <polygon points="43 9474 46 9465 104 9465 107 9474 104 9483 46 9483" class="regexp"/> + <text class="regexp" x="54" y="9477">[#x1E78]</text> + <polygon points="43 9502 46 9493 104 9493 107 9502 104 9511 46 9511" class="regexp"/> + <text class="regexp" x="54" y="9505">[#x1E7A]</text> + <polygon points="43 9530 46 9521 104 9521 107 9530 104 9539 46 9539" class="regexp"/> + <text class="regexp" x="54" y="9533">[#x1E7C]</text> + <polygon points="43 9558 46 9549 104 9549 107 9558 104 9567 46 9567" class="regexp"/> + <text class="regexp" x="54" y="9561">[#x1E7E]</text> + <polygon points="43 9586 46 9577 104 9577 107 9586 104 9595 46 9595" class="regexp"/> + <text class="regexp" x="54" y="9589">[#x1E80]</text> + <polygon points="43 9614 46 9605 104 9605 107 9614 104 9623 46 9623" class="regexp"/> + <text class="regexp" x="54" y="9617">[#x1E82]</text> + <polygon points="43 9642 46 9633 104 9633 107 9642 104 9651 46 9651" class="regexp"/> + <text class="regexp" x="54" y="9645">[#x1E84]</text> + <polygon points="43 9670 46 9661 104 9661 107 9670 104 9679 46 9679" class="regexp"/> + <text class="regexp" x="54" y="9673">[#x1E86]</text> + <polygon points="43 9698 46 9689 104 9689 107 9698 104 9707 46 9707" class="regexp"/> + <text class="regexp" x="54" y="9701">[#x1E88]</text> + <polygon points="43 9726 46 9717 104 9717 107 9726 104 9735 46 9735" class="regexp"/> + <text class="regexp" x="54" y="9729">[#x1E8A]</text> + <polygon points="43 9754 46 9745 104 9745 107 9754 104 9763 46 9763" class="regexp"/> + <text class="regexp" x="54" y="9757">[#x1E8C]</text> + <polygon points="43 9782 46 9773 104 9773 107 9782 104 9791 46 9791" class="regexp"/> + <text class="regexp" x="54" y="9785">[#x1E8E]</text> + <polygon points="43 9810 46 9801 104 9801 107 9810 104 9819 46 9819" class="regexp"/> + <text class="regexp" x="54" y="9813">[#x1E90]</text> + <polygon points="43 9838 46 9829 104 9829 107 9838 104 9847 46 9847" class="regexp"/> + <text class="regexp" x="54" y="9841">[#x1E92]</text> + <polygon points="43 9866 46 9857 104 9857 107 9866 104 9875 46 9875" class="regexp"/> + <text class="regexp" x="54" y="9869">[#x1E94]</text> + <polygon points="43 9894 46 9885 104 9885 107 9894 104 9903 46 9903" class="regexp"/> + <text class="regexp" x="54" y="9897">[#x1E9E]</text> + <polygon points="43 9922 46 9913 104 9913 107 9922 104 9931 46 9931" class="regexp"/> + <text class="regexp" x="54" y="9925">[#x1EA0]</text> + <polygon points="43 9950 46 9941 104 9941 107 9950 104 9959 46 9959" class="regexp"/> + <text class="regexp" x="54" y="9953">[#x1EA2]</text> + <polygon points="43 9978 46 9969 104 9969 107 9978 104 9987 46 9987" class="regexp"/> + <text class="regexp" x="54" y="9981">[#x1EA4]</text> + <polygon points="43 10006 46 9997 104 9997 107 10006 104 10015 46 10015" class="regexp"/> + <text class="regexp" x="54" y="10009">[#x1EA6]</text> + <polygon points="43 10034 46 10025 104 10025 107 10034 104 10043 46 10043" class="regexp"/> + <text class="regexp" x="54" y="10037">[#x1EA8]</text> + <polygon points="43 10062 46 10053 104 10053 107 10062 104 10071 46 10071" class="regexp"/> + <text class="regexp" x="54" y="10065">[#x1EAA]</text> + <polygon points="43 10090 46 10081 104 10081 107 10090 104 10099 46 10099" class="regexp"/> + <text class="regexp" x="54" y="10093">[#x1EAC]</text> + <polygon points="43 10118 46 10109 104 10109 107 10118 104 10127 46 10127" class="regexp"/> + <text class="regexp" x="54" y="10121">[#x1EAE]</text> + <polygon points="43 10146 46 10137 104 10137 107 10146 104 10155 46 10155" class="regexp"/> + <text class="regexp" x="54" y="10149">[#x1EB0]</text> + <polygon points="43 10174 46 10165 104 10165 107 10174 104 10183 46 10183" class="regexp"/> + <text class="regexp" x="54" y="10177">[#x1EB2]</text> + <polygon points="43 10202 46 10193 104 10193 107 10202 104 10211 46 10211" class="regexp"/> + <text class="regexp" x="54" y="10205">[#x1EB4]</text> + <polygon points="43 10230 46 10221 104 10221 107 10230 104 10239 46 10239" class="regexp"/> + <text class="regexp" x="54" y="10233">[#x1EB6]</text> + <polygon points="43 10258 46 10249 104 10249 107 10258 104 10267 46 10267" class="regexp"/> + <text class="regexp" x="54" y="10261">[#x1EB8]</text> + <polygon points="43 10286 46 10277 104 10277 107 10286 104 10295 46 10295" class="regexp"/> + <text class="regexp" x="54" y="10289">[#x1EBA]</text> + <polygon points="43 10314 46 10305 104 10305 107 10314 104 10323 46 10323" class="regexp"/> + <text class="regexp" x="54" y="10317">[#x1EBC]</text> + <polygon points="43 10342 46 10333 104 10333 107 10342 104 10351 46 10351" class="regexp"/> + <text class="regexp" x="54" y="10345">[#x1EBE]</text> + <polygon points="43 10370 46 10361 104 10361 107 10370 104 10379 46 10379" class="regexp"/> + <text class="regexp" x="54" y="10373">[#x1EC0]</text> + <polygon points="43 10398 46 10389 104 10389 107 10398 104 10407 46 10407" class="regexp"/> + <text class="regexp" x="54" y="10401">[#x1EC2]</text> + <polygon points="43 10426 46 10417 104 10417 107 10426 104 10435 46 10435" class="regexp"/> + <text class="regexp" x="54" y="10429">[#x1EC4]</text> + <polygon points="43 10454 46 10445 104 10445 107 10454 104 10463 46 10463" class="regexp"/> + <text class="regexp" x="54" y="10457">[#x1EC6]</text> + <polygon points="43 10482 46 10473 104 10473 107 10482 104 10491 46 10491" class="regexp"/> + <text class="regexp" x="54" y="10485">[#x1EC8]</text> + <polygon points="43 10510 46 10501 104 10501 107 10510 104 10519 46 10519" class="regexp"/> + <text class="regexp" x="54" y="10513">[#x1ECA]</text> + <polygon points="43 10538 46 10529 106 10529 109 10538 106 10547 46 10547" class="regexp"/> + <text class="regexp" x="54" y="10541">[#x1ECC]</text> + <polygon points="43 10566 46 10557 104 10557 107 10566 104 10575 46 10575" class="regexp"/> + <text class="regexp" x="54" y="10569">[#x1ECE]</text> + <polygon points="43 10594 46 10585 104 10585 107 10594 104 10603 46 10603" class="regexp"/> + <text class="regexp" x="54" y="10597">[#x1ED0]</text> + <polygon points="43 10622 46 10613 104 10613 107 10622 104 10631 46 10631" class="regexp"/> + <text class="regexp" x="54" y="10625">[#x1ED2]</text> + <polygon points="43 10650 46 10641 104 10641 107 10650 104 10659 46 10659" class="regexp"/> + <text class="regexp" x="54" y="10653">[#x1ED4]</text> + <polygon points="43 10678 46 10669 104 10669 107 10678 104 10687 46 10687" class="regexp"/> + <text class="regexp" x="54" y="10681">[#x1ED6]</text> + <polygon points="43 10706 46 10697 104 10697 107 10706 104 10715 46 10715" class="regexp"/> + <text class="regexp" x="54" y="10709">[#x1ED8]</text> + <polygon points="43 10734 46 10725 104 10725 107 10734 104 10743 46 10743" class="regexp"/> + <text class="regexp" x="54" y="10737">[#x1EDA]</text> + <polygon points="43 10762 46 10753 106 10753 109 10762 106 10771 46 10771" class="regexp"/> + <text class="regexp" x="54" y="10765">[#x1EDC]</text> + <polygon points="43 10790 46 10781 104 10781 107 10790 104 10799 46 10799" class="regexp"/> + <text class="regexp" x="54" y="10793">[#x1EDE]</text> + <polygon points="43 10818 46 10809 104 10809 107 10818 104 10827 46 10827" class="regexp"/> + <text class="regexp" x="54" y="10821">[#x1EE0]</text> + <polygon points="43 10846 46 10837 104 10837 107 10846 104 10855 46 10855" class="regexp"/> + <text class="regexp" x="54" y="10849">[#x1EE2]</text> + <polygon points="43 10874 46 10865 104 10865 107 10874 104 10883 46 10883" class="regexp"/> + <text class="regexp" x="54" y="10877">[#x1EE4]</text> + <polygon points="43 10902 46 10893 104 10893 107 10902 104 10911 46 10911" class="regexp"/> + <text class="regexp" x="54" y="10905">[#x1EE6]</text> + <polygon points="43 10930 46 10921 104 10921 107 10930 104 10939 46 10939" class="regexp"/> + <text class="regexp" x="54" y="10933">[#x1EE8]</text> + <polygon points="43 10958 46 10949 104 10949 107 10958 104 10967 46 10967" class="regexp"/> + <text class="regexp" x="54" y="10961">[#x1EEA]</text> + <polygon points="43 10986 46 10977 104 10977 107 10986 104 10995 46 10995" class="regexp"/> + <text class="regexp" x="54" y="10989">[#x1EEC]</text> + <polygon points="43 11014 46 11005 104 11005 107 11014 104 11023 46 11023" class="regexp"/> + <text class="regexp" x="54" y="11017">[#x1EEE]</text> + <polygon points="43 11042 46 11033 102 11033 105 11042 102 11051 46 11051" class="regexp"/> + <text class="regexp" x="54" y="11045">[#x1EF0]</text> + <polygon points="43 11070 46 11061 102 11061 105 11070 102 11079 46 11079" class="regexp"/> + <text class="regexp" x="54" y="11073">[#x1EF2]</text> + <polygon points="43 11098 46 11089 102 11089 105 11098 102 11107 46 11107" class="regexp"/> + <text class="regexp" x="54" y="11101">[#x1EF4]</text> + <polygon points="43 11126 46 11117 102 11117 105 11126 102 11135 46 11135" class="regexp"/> + <text class="regexp" x="54" y="11129">[#x1EF6]</text> + <polygon points="43 11154 46 11145 102 11145 105 11154 102 11163 46 11163" class="regexp"/> + <text class="regexp" x="54" y="11157">[#x1EF8]</text> + <polygon points="43 11182 46 11173 102 11173 105 11182 102 11191 46 11191" class="regexp"/> + <text class="regexp" x="54" y="11185">[#x1EFA]</text> + <polygon points="43 11210 46 11201 104 11201 107 11210 104 11219 46 11219" class="regexp"/> + <text class="regexp" x="54" y="11213">[#x1EFC]</text> + <polygon points="43 11238 46 11229 102 11229 105 11238 102 11247 46 11247" class="regexp"/> + <text class="regexp" x="54" y="11241">[#x1EFE]</text> + <polygon points="43 11266 46 11257 140 11257 143 11266 140 11275 46 11275" class="regexp"/> + <text class="regexp" x="54" y="11269">[#x1F08-#x1F0F]</text> + <polygon points="43 11294 46 11285 142 11285 145 11294 142 11303 46 11303" class="regexp"/> + <text class="regexp" x="54" y="11297">[#x1F18-#x1F1D]</text> + <polygon points="43 11322 46 11313 140 11313 143 11322 140 11331 46 11331" class="regexp"/> + <text class="regexp" x="54" y="11325">[#x1F28-#x1F2F]</text> + <polygon points="43 11350 46 11341 140 11341 143 11350 140 11359 46 11359" class="regexp"/> + <text class="regexp" x="54" y="11353">[#x1F38-#x1F3F]</text> + <polygon points="43 11378 46 11369 142 11369 145 11378 142 11387 46 11387" class="regexp"/> + <text class="regexp" x="54" y="11381">[#x1F48-#x1F4D]</text> + <polygon points="43 11406 46 11397 102 11397 105 11406 102 11415 46 11415" class="regexp"/> + <text class="regexp" x="54" y="11409">[#x1F59]</text> + <polygon points="43 11434 46 11425 102 11425 105 11434 102 11443 46 11443" class="regexp"/> + <text class="regexp" x="54" y="11437">[#x1F5B]</text> + <polygon points="43 11462 46 11453 104 11453 107 11462 104 11471 46 11471" class="regexp"/> + <text class="regexp" x="54" y="11465">[#x1F5D]</text> + <polygon points="43 11490 46 11481 102 11481 105 11490 102 11499 46 11499" class="regexp"/> + <text class="regexp" x="54" y="11493">[#x1F5F]</text> + <polygon points="43 11518 46 11509 140 11509 143 11518 140 11527 46 11527" class="regexp"/> + <text class="regexp" x="54" y="11521">[#x1F68-#x1F6F]</text> + <polygon points="43 11546 46 11537 142 11537 145 11546 142 11555 46 11555" class="regexp"/> + <text class="regexp" x="54" y="11549">[#x1FB8-#x1FBB]</text> + <polygon points="43 11574 46 11565 144 11565 147 11574 144 11583 46 11583" class="regexp"/> + <text class="regexp" x="54" y="11577">[#x1FC8-#x1FCB]</text> + <polygon points="43 11602 46 11593 144 11593 147 11602 144 11611 46 11611" class="regexp"/> + <text class="regexp" x="54" y="11605">[#x1FD8-#x1FDB]</text> + <polygon points="43 11630 46 11621 142 11621 145 11630 142 11639 46 11639" class="regexp"/> + <text class="regexp" x="54" y="11633">[#x1FE8-#x1FEC]</text> + <polygon points="43 11658 46 11649 140 11649 143 11658 140 11667 46 11667" class="regexp"/> + <text class="regexp" x="54" y="11661">[#x1FF8-#x1FFB]</text> + <polygon points="43 11686 46 11677 104 11677 107 11686 104 11695 46 11695" class="regexp"/> + <text class="regexp" x="54" y="11689">[#x2102]</text> + <polygon points="43 11714 46 11705 104 11705 107 11714 104 11723 46 11723" class="regexp"/> + <text class="regexp" x="54" y="11717">[#x2107]</text> + <polygon points="43 11742 46 11733 144 11733 147 11742 144 11751 46 11751" class="regexp"/> + <text class="regexp" x="54" y="11745">[#x210B-#x210D]</text> + <polygon points="43 11770 46 11761 144 11761 147 11770 144 11779 46 11779" class="regexp"/> + <text class="regexp" x="54" y="11773">[#x2110-#x2112]</text> + <polygon points="43 11798 46 11789 104 11789 107 11798 104 11807 46 11807" class="regexp"/> + <text class="regexp" x="54" y="11801">[#x2115]</text> + <polygon points="43 11826 46 11817 144 11817 147 11826 144 11835 46 11835" class="regexp"/> + <text class="regexp" x="54" y="11829">[#x2119-#x211D]</text> + <polygon points="43 11854 46 11845 104 11845 107 11854 104 11863 46 11863" class="regexp"/> + <text class="regexp" x="54" y="11857">[#x2124]</text> + <polygon points="43 11882 46 11873 104 11873 107 11882 104 11891 46 11891" class="regexp"/> + <text class="regexp" x="54" y="11885">[#x2126]</text> + <polygon points="43 11910 46 11901 104 11901 107 11910 104 11919 46 11919" class="regexp"/> + <text class="regexp" x="54" y="11913">[#x2128]</text> + <polygon points="43 11938 46 11929 144 11929 147 11938 144 11947 46 11947" class="regexp"/> + <text class="regexp" x="54" y="11941">[#x212A-#x212D]</text> + <polygon points="43 11966 46 11957 144 11957 147 11966 144 11975 46 11975" class="regexp"/> + <text class="regexp" x="54" y="11969">[#x2130-#x2133]</text> + <polygon points="43 11994 46 11985 142 11985 145 11994 142 12003 46 12003" class="regexp"/> + <text class="regexp" x="54" y="11997">[#x213E-#x213F]</text> + <polygon points="43 12022 46 12013 104 12013 107 12022 104 12031 46 12031" class="regexp"/> + <text class="regexp" x="54" y="12025">[#x2145]</text> + <polygon points="43 12050 46 12041 104 12041 107 12050 104 12059 46 12059" class="regexp"/> + <text class="regexp" x="54" y="12053">[#x2183]</text> + <polygon points="43 12078 46 12069 144 12069 147 12078 144 12087 46 12087" class="regexp"/> + <text class="regexp" x="54" y="12081">[#x2C00-#x2C2F]</text> + <polygon points="43 12106 46 12097 104 12097 107 12106 104 12115 46 12115" class="regexp"/> + <text class="regexp" x="54" y="12109">[#x2C60]</text> + <polygon points="43 12134 46 12125 146 12125 149 12134 146 12143 46 12143" class="regexp"/> + <text class="regexp" x="54" y="12137">[#x2C62-#x2C64]</text> + <polygon points="43 12162 46 12153 104 12153 107 12162 104 12171 46 12171" class="regexp"/> + <text class="regexp" x="54" y="12165">[#x2C67]</text> + <polygon points="43 12190 46 12181 104 12181 107 12190 104 12199 46 12199" class="regexp"/> + <text class="regexp" x="54" y="12193">[#x2C69]</text> + <polygon points="43 12218 46 12209 104 12209 107 12218 104 12227 46 12227" class="regexp"/> + <text class="regexp" x="54" y="12221">[#x2C6B]</text> + <polygon points="43 12246 46 12237 146 12237 149 12246 146 12255 46 12255" class="regexp"/> + <text class="regexp" x="54" y="12249">[#x2C6D-#x2C70]</text> + <polygon points="43 12274 46 12265 104 12265 107 12274 104 12283 46 12283" class="regexp"/> + <text class="regexp" x="54" y="12277">[#x2C72]</text> + <polygon points="43 12302 46 12293 104 12293 107 12302 104 12311 46 12311" class="regexp"/> + <text class="regexp" x="54" y="12305">[#x2C75]</text> + <polygon points="43 12330 46 12321 146 12321 149 12330 146 12339 46 12339" class="regexp"/> + <text class="regexp" x="54" y="12333">[#x2C7E-#x2C80]</text> + <polygon points="43 12358 46 12349 104 12349 107 12358 104 12367 46 12367" class="regexp"/> + <text class="regexp" x="54" y="12361">[#x2C82]</text> + <polygon points="43 12386 46 12377 104 12377 107 12386 104 12395 46 12395" class="regexp"/> + <text class="regexp" x="54" y="12389">[#x2C84]</text> + <polygon points="43 12414 46 12405 104 12405 107 12414 104 12423 46 12423" class="regexp"/> + <text class="regexp" x="54" y="12417">[#x2C86]</text> + <polygon points="43 12442 46 12433 104 12433 107 12442 104 12451 46 12451" class="regexp"/> + <text class="regexp" x="54" y="12445">[#x2C88]</text> + <polygon points="43 12470 46 12461 104 12461 107 12470 104 12479 46 12479" class="regexp"/> + <text class="regexp" x="54" y="12473">[#x2C8A]</text> + <polygon points="43 12498 46 12489 106 12489 109 12498 106 12507 46 12507" class="regexp"/> + <text class="regexp" x="54" y="12501">[#x2C8C]</text> + <polygon points="43 12526 46 12517 104 12517 107 12526 104 12535 46 12535" class="regexp"/> + <text class="regexp" x="54" y="12529">[#x2C8E]</text> + <polygon points="43 12554 46 12545 104 12545 107 12554 104 12563 46 12563" class="regexp"/> + <text class="regexp" x="54" y="12557">[#x2C90]</text> + <polygon points="43 12582 46 12573 104 12573 107 12582 104 12591 46 12591" class="regexp"/> + <text class="regexp" x="54" y="12585">[#x2C92]</text> + <polygon points="43 12610 46 12601 104 12601 107 12610 104 12619 46 12619" class="regexp"/> + <text class="regexp" x="54" y="12613">[#x2C94]</text> + <polygon points="43 12638 46 12629 104 12629 107 12638 104 12647 46 12647" class="regexp"/> + <text class="regexp" x="54" y="12641">[#x2C96]</text> + <polygon points="43 12666 46 12657 104 12657 107 12666 104 12675 46 12675" class="regexp"/> + <text class="regexp" x="54" y="12669">[#x2C98]</text> + <polygon points="43 12694 46 12685 104 12685 107 12694 104 12703 46 12703" class="regexp"/> + <text class="regexp" x="54" y="12697">[#x2C9A]</text> + <polygon points="43 12722 46 12713 106 12713 109 12722 106 12731 46 12731" class="regexp"/> + <text class="regexp" x="54" y="12725">[#x2C9C]</text> + <polygon points="43 12750 46 12741 104 12741 107 12750 104 12759 46 12759" class="regexp"/> + <text class="regexp" x="54" y="12753">[#x2C9E]</text> + <polygon points="43 12778 46 12769 104 12769 107 12778 104 12787 46 12787" class="regexp"/> + <text class="regexp" x="54" y="12781">[#x2CA0]</text> + <polygon points="43 12806 46 12797 104 12797 107 12806 104 12815 46 12815" class="regexp"/> + <text class="regexp" x="54" y="12809">[#x2CA2]</text> + <polygon points="43 12834 46 12825 104 12825 107 12834 104 12843 46 12843" class="regexp"/> + <text class="regexp" x="54" y="12837">[#x2CA4]</text> + <polygon points="43 12862 46 12853 104 12853 107 12862 104 12871 46 12871" class="regexp"/> + <text class="regexp" x="54" y="12865">[#x2CA6]</text> + <polygon points="43 12890 46 12881 104 12881 107 12890 104 12899 46 12899" class="regexp"/> + <text class="regexp" x="54" y="12893">[#x2CA8]</text> + <polygon points="43 12918 46 12909 104 12909 107 12918 104 12927 46 12927" class="regexp"/> + <text class="regexp" x="54" y="12921">[#x2CAA]</text> + <polygon points="43 12946 46 12937 106 12937 109 12946 106 12955 46 12955" class="regexp"/> + <text class="regexp" x="54" y="12949">[#x2CAC]</text> + <polygon points="43 12974 46 12965 104 12965 107 12974 104 12983 46 12983" class="regexp"/> + <text class="regexp" x="54" y="12977">[#x2CAE]</text> + <polygon points="43 13002 46 12993 104 12993 107 13002 104 13011 46 13011" class="regexp"/> + <text class="regexp" x="54" y="13005">[#x2CB0]</text> + <polygon points="43 13030 46 13021 104 13021 107 13030 104 13039 46 13039" class="regexp"/> + <text class="regexp" x="54" y="13033">[#x2CB2]</text> + <polygon points="43 13058 46 13049 104 13049 107 13058 104 13067 46 13067" class="regexp"/> + <text class="regexp" x="54" y="13061">[#x2CB4]</text> + <polygon points="43 13086 46 13077 104 13077 107 13086 104 13095 46 13095" class="regexp"/> + <text class="regexp" x="54" y="13089">[#x2CB6]</text> + <polygon points="43 13114 46 13105 104 13105 107 13114 104 13123 46 13123" class="regexp"/> + <text class="regexp" x="54" y="13117">[#x2CB8]</text> + <polygon points="43 13142 46 13133 104 13133 107 13142 104 13151 46 13151" class="regexp"/> + <text class="regexp" x="54" y="13145">[#x2CBA]</text> + <polygon points="43 13170 46 13161 106 13161 109 13170 106 13179 46 13179" class="regexp"/> + <text class="regexp" x="54" y="13173">[#x2CBC]</text> + <polygon points="43 13198 46 13189 104 13189 107 13198 104 13207 46 13207" class="regexp"/> + <text class="regexp" x="54" y="13201">[#x2CBE]</text> + <polygon points="43 13226 46 13217 106 13217 109 13226 106 13235 46 13235" class="regexp"/> + <text class="regexp" x="54" y="13229">[#x2CC0]</text> + <polygon points="43 13254 46 13245 106 13245 109 13254 106 13263 46 13263" class="regexp"/> + <text class="regexp" x="54" y="13257">[#x2CC2]</text> + <polygon points="43 13282 46 13273 106 13273 109 13282 106 13291 46 13291" class="regexp"/> + <text class="regexp" x="54" y="13285">[#x2CC4]</text> + <polygon points="43 13310 46 13301 106 13301 109 13310 106 13319 46 13319" class="regexp"/> + <text class="regexp" x="54" y="13313">[#x2CC6]</text> + <polygon points="43 13338 46 13329 106 13329 109 13338 106 13347 46 13347" class="regexp"/> + <text class="regexp" x="54" y="13341">[#x2CC8]</text> + <polygon points="43 13366 46 13357 106 13357 109 13366 106 13375 46 13375" class="regexp"/> + <text class="regexp" x="54" y="13369">[#x2CCA]</text> + <polygon points="43 13394 46 13385 106 13385 109 13394 106 13403 46 13403" class="regexp"/> + <text class="regexp" x="54" y="13397">[#x2CCC]</text> + <polygon points="43 13422 46 13413 106 13413 109 13422 106 13431 46 13431" class="regexp"/> + <text class="regexp" x="54" y="13425">[#x2CCE]</text> + <polygon points="43 13450 46 13441 106 13441 109 13450 106 13459 46 13459" class="regexp"/> + <text class="regexp" x="54" y="13453">[#x2CD0]</text> + <polygon points="43 13478 46 13469 106 13469 109 13478 106 13487 46 13487" class="regexp"/> + <text class="regexp" x="54" y="13481">[#x2CD2]</text> + <polygon points="43 13506 46 13497 106 13497 109 13506 106 13515 46 13515" class="regexp"/> + <text class="regexp" x="54" y="13509">[#x2CD4]</text> + <polygon points="43 13534 46 13525 106 13525 109 13534 106 13543 46 13543" class="regexp"/> + <text class="regexp" x="54" y="13537">[#x2CD6]</text> + <polygon points="43 13562 46 13553 106 13553 109 13562 106 13571 46 13571" class="regexp"/> + <text class="regexp" x="54" y="13565">[#x2CD8]</text> + <polygon points="43 13590 46 13581 106 13581 109 13590 106 13599 46 13599" class="regexp"/> + <text class="regexp" x="54" y="13593">[#x2CDA]</text> + <polygon points="43 13618 46 13609 106 13609 109 13618 106 13627 46 13627" class="regexp"/> + <text class="regexp" x="54" y="13621">[#x2CDC]</text> + <polygon points="43 13646 46 13637 106 13637 109 13646 106 13655 46 13655" class="regexp"/> + <text class="regexp" x="54" y="13649">[#x2CDE]</text> + <polygon points="43 13674 46 13665 104 13665 107 13674 104 13683 46 13683" class="regexp"/> + <text class="regexp" x="54" y="13677">[#x2CE0]</text> + <polygon points="43 13702 46 13693 104 13693 107 13702 104 13711 46 13711" class="regexp"/> + <text class="regexp" x="54" y="13705">[#x2CE2]</text> + <polygon points="43 13730 46 13721 104 13721 107 13730 104 13739 46 13739" class="regexp"/> + <text class="regexp" x="54" y="13733">[#x2CEB]</text> + <polygon points="43 13758 46 13749 106 13749 109 13758 106 13767 46 13767" class="regexp"/> + <text class="regexp" x="54" y="13761">[#x2CED]</text> + <polygon points="43 13786 46 13777 104 13777 107 13786 104 13795 46 13795" class="regexp"/> + <text class="regexp" x="54" y="13789">[#x2CF2]</text> + <polygon points="43 13814 46 13805 104 13805 107 13814 104 13823 46 13823" class="regexp"/> + <text class="regexp" x="54" y="13817">[#xA640]</text> + <polygon points="43 13842 46 13833 104 13833 107 13842 104 13851 46 13851" class="regexp"/> + <text class="regexp" x="54" y="13845">[#xA642]</text> + <polygon points="43 13870 46 13861 104 13861 107 13870 104 13879 46 13879" class="regexp"/> + <text class="regexp" x="54" y="13873">[#xA644]</text> + <polygon points="43 13898 46 13889 104 13889 107 13898 104 13907 46 13907" class="regexp"/> + <text class="regexp" x="54" y="13901">[#xA646]</text> + <polygon points="43 13926 46 13917 104 13917 107 13926 104 13935 46 13935" class="regexp"/> + <text class="regexp" x="54" y="13929">[#xA648]</text> + <polygon points="43 13954 46 13945 104 13945 107 13954 104 13963 46 13963" class="regexp"/> + <text class="regexp" x="54" y="13957">[#xA64A]</text> + <polygon points="43 13982 46 13973 104 13973 107 13982 104 13991 46 13991" class="regexp"/> + <text class="regexp" x="54" y="13985">[#xA64C]</text> + <polygon points="43 14010 46 14001 104 14001 107 14010 104 14019 46 14019" class="regexp"/> + <text class="regexp" x="54" y="14013">[#xA64E]</text> + <polygon points="43 14038 46 14029 104 14029 107 14038 104 14047 46 14047" class="regexp"/> + <text class="regexp" x="54" y="14041">[#xA650]</text> + <polygon points="43 14066 46 14057 104 14057 107 14066 104 14075 46 14075" class="regexp"/> + <text class="regexp" x="54" y="14069">[#xA652]</text> + <polygon points="43 14094 46 14085 104 14085 107 14094 104 14103 46 14103" class="regexp"/> + <text class="regexp" x="54" y="14097">[#xA654]</text> + <polygon points="43 14122 46 14113 104 14113 107 14122 104 14131 46 14131" class="regexp"/> + <text class="regexp" x="54" y="14125">[#xA656]</text> + <polygon points="43 14150 46 14141 104 14141 107 14150 104 14159 46 14159" class="regexp"/> + <text class="regexp" x="54" y="14153">[#xA658]</text> + <polygon points="43 14178 46 14169 104 14169 107 14178 104 14187 46 14187" class="regexp"/> + <text class="regexp" x="54" y="14181">[#xA65A]</text> + <polygon points="43 14206 46 14197 104 14197 107 14206 104 14215 46 14215" class="regexp"/> + <text class="regexp" x="54" y="14209">[#xA65C]</text> + <polygon points="43 14234 46 14225 104 14225 107 14234 104 14243 46 14243" class="regexp"/> + <text class="regexp" x="54" y="14237">[#xA65E]</text> + <polygon points="43 14262 46 14253 104 14253 107 14262 104 14271 46 14271" class="regexp"/> + <text class="regexp" x="54" y="14265">[#xA660]</text> + <polygon points="43 14290 46 14281 104 14281 107 14290 104 14299 46 14299" class="regexp"/> + <text class="regexp" x="54" y="14293">[#xA662]</text> + <polygon points="43 14318 46 14309 104 14309 107 14318 104 14327 46 14327" class="regexp"/> + <text class="regexp" x="54" y="14321">[#xA664]</text> + <polygon points="43 14346 46 14337 104 14337 107 14346 104 14355 46 14355" class="regexp"/> + <text class="regexp" x="54" y="14349">[#xA666]</text> + <polygon points="43 14374 46 14365 104 14365 107 14374 104 14383 46 14383" class="regexp"/> + <text class="regexp" x="54" y="14377">[#xA668]</text> + <polygon points="43 14402 46 14393 104 14393 107 14402 104 14411 46 14411" class="regexp"/> + <text class="regexp" x="54" y="14405">[#xA66A]</text> + <polygon points="43 14430 46 14421 104 14421 107 14430 104 14439 46 14439" class="regexp"/> + <text class="regexp" x="54" y="14433">[#xA66C]</text> + <polygon points="43 14458 46 14449 104 14449 107 14458 104 14467 46 14467" class="regexp"/> + <text class="regexp" x="54" y="14461">[#xA680]</text> + <polygon points="43 14486 46 14477 104 14477 107 14486 104 14495 46 14495" class="regexp"/> + <text class="regexp" x="54" y="14489">[#xA682]</text> + <polygon points="43 14514 46 14505 104 14505 107 14514 104 14523 46 14523" class="regexp"/> + <text class="regexp" x="54" y="14517">[#xA684]</text> + <polygon points="43 14542 46 14533 104 14533 107 14542 104 14551 46 14551" class="regexp"/> + <text class="regexp" x="54" y="14545">[#xA686]</text> + <polygon points="43 14570 46 14561 104 14561 107 14570 104 14579 46 14579" class="regexp"/> + <text class="regexp" x="54" y="14573">[#xA688]</text> + <polygon points="43 14598 46 14589 104 14589 107 14598 104 14607 46 14607" class="regexp"/> + <text class="regexp" x="54" y="14601">[#xA68A]</text> + <polygon points="43 14626 46 14617 104 14617 107 14626 104 14635 46 14635" class="regexp"/> + <text class="regexp" x="54" y="14629">[#xA68C]</text> + <polygon points="43 14654 46 14645 104 14645 107 14654 104 14663 46 14663" class="regexp"/> + <text class="regexp" x="54" y="14657">[#xA68E]</text> + <polygon points="43 14682 46 14673 104 14673 107 14682 104 14691 46 14691" class="regexp"/> + <text class="regexp" x="54" y="14685">[#xA690]</text> + <polygon points="43 14710 46 14701 104 14701 107 14710 104 14719 46 14719" class="regexp"/> + <text class="regexp" x="54" y="14713">[#xA692]</text> + <polygon points="43 14738 46 14729 104 14729 107 14738 104 14747 46 14747" class="regexp"/> + <text class="regexp" x="54" y="14741">[#xA694]</text> + <polygon points="43 14766 46 14757 104 14757 107 14766 104 14775 46 14775" class="regexp"/> + <text class="regexp" x="54" y="14769">[#xA696]</text> + <polygon points="43 14794 46 14785 104 14785 107 14794 104 14803 46 14803" class="regexp"/> + <text class="regexp" x="54" y="14797">[#xA698]</text> + <polygon points="43 14822 46 14813 104 14813 107 14822 104 14831 46 14831" class="regexp"/> + <text class="regexp" x="54" y="14825">[#xA69A]</text> + <polygon points="43 14850 46 14841 104 14841 107 14850 104 14859 46 14859" class="regexp"/> + <text class="regexp" x="54" y="14853">[#xA722]</text> + <polygon points="43 14878 46 14869 104 14869 107 14878 104 14887 46 14887" class="regexp"/> + <text class="regexp" x="54" y="14881">[#xA724]</text> + <polygon points="43 14906 46 14897 104 14897 107 14906 104 14915 46 14915" class="regexp"/> + <text class="regexp" x="54" y="14909">[#xA726]</text> + <polygon points="43 14934 46 14925 104 14925 107 14934 104 14943 46 14943" class="regexp"/> + <text class="regexp" x="54" y="14937">[#xA728]</text> + <polygon points="43 14962 46 14953 104 14953 107 14962 104 14971 46 14971" class="regexp"/> + <text class="regexp" x="54" y="14965">[#xA72A]</text> + <polygon points="43 14990 46 14981 104 14981 107 14990 104 14999 46 14999" class="regexp"/> + <text class="regexp" x="54" y="14993">[#xA72C]</text> + <polygon points="43 15018 46 15009 104 15009 107 15018 104 15027 46 15027" class="regexp"/> + <text class="regexp" x="54" y="15021">[#xA72E]</text> + <polygon points="43 15046 46 15037 104 15037 107 15046 104 15055 46 15055" class="regexp"/> + <text class="regexp" x="54" y="15049">[#xA732]</text> + <polygon points="43 15074 46 15065 104 15065 107 15074 104 15083 46 15083" class="regexp"/> + <text class="regexp" x="54" y="15077">[#xA734]</text> + <polygon points="43 15102 46 15093 104 15093 107 15102 104 15111 46 15111" class="regexp"/> + <text class="regexp" x="54" y="15105">[#xA736]</text> + <polygon points="43 15130 46 15121 104 15121 107 15130 104 15139 46 15139" class="regexp"/> + <text class="regexp" x="54" y="15133">[#xA738]</text> + <polygon points="43 15158 46 15149 104 15149 107 15158 104 15167 46 15167" class="regexp"/> + <text class="regexp" x="54" y="15161">[#xA73A]</text> + <polygon points="43 15186 46 15177 104 15177 107 15186 104 15195 46 15195" class="regexp"/> + <text class="regexp" x="54" y="15189">[#xA73C]</text> + <polygon points="43 15214 46 15205 104 15205 107 15214 104 15223 46 15223" class="regexp"/> + <text class="regexp" x="54" y="15217">[#xA73E]</text> + <polygon points="43 15242 46 15233 104 15233 107 15242 104 15251 46 15251" class="regexp"/> + <text class="regexp" x="54" y="15245">[#xA740]</text> + <polygon points="43 15270 46 15261 104 15261 107 15270 104 15279 46 15279" class="regexp"/> + <text class="regexp" x="54" y="15273">[#xA742]</text> + <polygon points="43 15298 46 15289 104 15289 107 15298 104 15307 46 15307" class="regexp"/> + <text class="regexp" x="54" y="15301">[#xA744]</text> + <polygon points="43 15326 46 15317 104 15317 107 15326 104 15335 46 15335" class="regexp"/> + <text class="regexp" x="54" y="15329">[#xA746]</text> + <polygon points="43 15354 46 15345 104 15345 107 15354 104 15363 46 15363" class="regexp"/> + <text class="regexp" x="54" y="15357">[#xA748]</text> + <polygon points="43 15382 46 15373 104 15373 107 15382 104 15391 46 15391" class="regexp"/> + <text class="regexp" x="54" y="15385">[#xA74A]</text> + <polygon points="43 15410 46 15401 104 15401 107 15410 104 15419 46 15419" class="regexp"/> + <text class="regexp" x="54" y="15413">[#xA74C]</text> + <polygon points="43 15438 46 15429 104 15429 107 15438 104 15447 46 15447" class="regexp"/> + <text class="regexp" x="54" y="15441">[#xA74E]</text> + <polygon points="43 15466 46 15457 104 15457 107 15466 104 15475 46 15475" class="regexp"/> + <text class="regexp" x="54" y="15469">[#xA750]</text> + <polygon points="43 15494 46 15485 104 15485 107 15494 104 15503 46 15503" class="regexp"/> + <text class="regexp" x="54" y="15497">[#xA752]</text> + <polygon points="43 15522 46 15513 104 15513 107 15522 104 15531 46 15531" class="regexp"/> + <text class="regexp" x="54" y="15525">[#xA754]</text> + <polygon points="43 15550 46 15541 104 15541 107 15550 104 15559 46 15559" class="regexp"/> + <text class="regexp" x="54" y="15553">[#xA756]</text> + <polygon points="43 15578 46 15569 104 15569 107 15578 104 15587 46 15587" class="regexp"/> + <text class="regexp" x="54" y="15581">[#xA758]</text> + <polygon points="43 15606 46 15597 104 15597 107 15606 104 15615 46 15615" class="regexp"/> + <text class="regexp" x="54" y="15609">[#xA75A]</text> + <polygon points="43 15634 46 15625 104 15625 107 15634 104 15643 46 15643" class="regexp"/> + <text class="regexp" x="54" y="15637">[#xA75C]</text> + <polygon points="43 15662 46 15653 104 15653 107 15662 104 15671 46 15671" class="regexp"/> + <text class="regexp" x="54" y="15665">[#xA75E]</text> + <polygon points="43 15690 46 15681 104 15681 107 15690 104 15699 46 15699" class="regexp"/> + <text class="regexp" x="54" y="15693">[#xA760]</text> + <polygon points="43 15718 46 15709 104 15709 107 15718 104 15727 46 15727" class="regexp"/> + <text class="regexp" x="54" y="15721">[#xA762]</text> + <polygon points="43 15746 46 15737 104 15737 107 15746 104 15755 46 15755" class="regexp"/> + <text class="regexp" x="54" y="15749">[#xA764]</text> + <polygon points="43 15774 46 15765 104 15765 107 15774 104 15783 46 15783" class="regexp"/> + <text class="regexp" x="54" y="15777">[#xA766]</text> + <polygon points="43 15802 46 15793 104 15793 107 15802 104 15811 46 15811" class="regexp"/> + <text class="regexp" x="54" y="15805">[#xA768]</text> + <polygon points="43 15830 46 15821 104 15821 107 15830 104 15839 46 15839" class="regexp"/> + <text class="regexp" x="54" y="15833">[#xA76A]</text> + <polygon points="43 15858 46 15849 104 15849 107 15858 104 15867 46 15867" class="regexp"/> + <text class="regexp" x="54" y="15861">[#xA76C]</text> + <polygon points="43 15886 46 15877 104 15877 107 15886 104 15895 46 15895" class="regexp"/> + <text class="regexp" x="54" y="15889">[#xA76E]</text> + <polygon points="43 15914 46 15905 104 15905 107 15914 104 15923 46 15923" class="regexp"/> + <text class="regexp" x="54" y="15917">[#xA779]</text> + <polygon points="43 15942 46 15933 104 15933 107 15942 104 15951 46 15951" class="regexp"/> + <text class="regexp" x="54" y="15945">[#xA77B]</text> + <polygon points="43 15970 46 15961 146 15961 149 15970 146 15979 46 15979" class="regexp"/> + <text class="regexp" x="54" y="15973">[#xA77D-#xA77E]</text> + <polygon points="43 15998 46 15989 104 15989 107 15998 104 16007 46 16007" class="regexp"/> + <text class="regexp" x="54" y="16001">[#xA780]</text> + <polygon points="43 16026 46 16017 104 16017 107 16026 104 16035 46 16035" class="regexp"/> + <text class="regexp" x="54" y="16029">[#xA782]</text> + <polygon points="43 16054 46 16045 104 16045 107 16054 104 16063 46 16063" class="regexp"/> + <text class="regexp" x="54" y="16057">[#xA784]</text> + <polygon points="43 16082 46 16073 104 16073 107 16082 104 16091 46 16091" class="regexp"/> + <text class="regexp" x="54" y="16085">[#xA786]</text> + <polygon points="43 16110 46 16101 104 16101 107 16110 104 16119 46 16119" class="regexp"/> + <text class="regexp" x="54" y="16113">[#xA78B]</text> + <polygon points="43 16138 46 16129 104 16129 107 16138 104 16147 46 16147" class="regexp"/> + <text class="regexp" x="54" y="16141">[#xA78D]</text> + <polygon points="43 16166 46 16157 104 16157 107 16166 104 16175 46 16175" class="regexp"/> + <text class="regexp" x="54" y="16169">[#xA790]</text> + <polygon points="43 16194 46 16185 104 16185 107 16194 104 16203 46 16203" class="regexp"/> + <text class="regexp" x="54" y="16197">[#xA792]</text> + <polygon points="43 16222 46 16213 104 16213 107 16222 104 16231 46 16231" class="regexp"/> + <text class="regexp" x="54" y="16225">[#xA796]</text> + <polygon points="43 16250 46 16241 104 16241 107 16250 104 16259 46 16259" class="regexp"/> + <text class="regexp" x="54" y="16253">[#xA798]</text> + <polygon points="43 16278 46 16269 104 16269 107 16278 104 16287 46 16287" class="regexp"/> + <text class="regexp" x="54" y="16281">[#xA79A]</text> + <polygon points="43 16306 46 16297 104 16297 107 16306 104 16315 46 16315" class="regexp"/> + <text class="regexp" x="54" y="16309">[#xA79C]</text> + <polygon points="43 16334 46 16325 104 16325 107 16334 104 16343 46 16343" class="regexp"/> + <text class="regexp" x="54" y="16337">[#xA79E]</text> + <polygon points="43 16362 46 16353 104 16353 107 16362 104 16371 46 16371" class="regexp"/> + <text class="regexp" x="54" y="16365">[#xA7A0]</text> + <polygon points="43 16390 46 16381 104 16381 107 16390 104 16399 46 16399" class="regexp"/> + <text class="regexp" x="54" y="16393">[#xA7A2]</text> + <polygon points="43 16418 46 16409 104 16409 107 16418 104 16427 46 16427" class="regexp"/> + <text class="regexp" x="54" y="16421">[#xA7A4]</text> + <polygon points="43 16446 46 16437 104 16437 107 16446 104 16455 46 16455" class="regexp"/> + <text class="regexp" x="54" y="16449">[#xA7A6]</text> + <polygon points="43 16474 46 16465 104 16465 107 16474 104 16483 46 16483" class="regexp"/> + <text class="regexp" x="54" y="16477">[#xA7A8]</text> + <polygon points="43 16502 46 16493 144 16493 147 16502 144 16511 46 16511" class="regexp"/> + <text class="regexp" x="54" y="16505">[#xA7AA-#xA7AE]</text> + <polygon points="43 16530 46 16521 144 16521 147 16530 144 16539 46 16539" class="regexp"/> + <text class="regexp" x="54" y="16533">[#xA7B0-#xA7B4]</text> + <polygon points="43 16558 46 16549 104 16549 107 16558 104 16567 46 16567" class="regexp"/> + <text class="regexp" x="54" y="16561">[#xA7B6]</text> + <polygon points="43 16586 46 16577 104 16577 107 16586 104 16595 46 16595" class="regexp"/> + <text class="regexp" x="54" y="16589">[#xA7B8]</text> + <polygon points="43 16614 46 16605 104 16605 107 16614 104 16623 46 16623" class="regexp"/> + <text class="regexp" x="54" y="16617">[#xA7BA]</text> + <polygon points="43 16642 46 16633 104 16633 107 16642 104 16651 46 16651" class="regexp"/> + <text class="regexp" x="54" y="16645">[#xA7BC]</text> + <polygon points="43 16670 46 16661 104 16661 107 16670 104 16679 46 16679" class="regexp"/> + <text class="regexp" x="54" y="16673">[#xA7BE]</text> + <polygon points="43 16698 46 16689 104 16689 107 16698 104 16707 46 16707" class="regexp"/> + <text class="regexp" x="54" y="16701">[#xA7C0]</text> + <polygon points="43 16726 46 16717 104 16717 107 16726 104 16735 46 16735" class="regexp"/> + <text class="regexp" x="54" y="16729">[#xA7C2]</text> + <polygon points="43 16754 46 16745 146 16745 149 16754 146 16763 46 16763" class="regexp"/> + <text class="regexp" x="54" y="16757">[#xA7C4-#xA7C7]</text> + <polygon points="43 16782 46 16773 104 16773 107 16782 104 16791 46 16791" class="regexp"/> + <text class="regexp" x="54" y="16785">[#xA7C9]</text> + <polygon points="43 16810 46 16801 104 16801 107 16810 104 16819 46 16819" class="regexp"/> + <text class="regexp" x="54" y="16813">[#xA7D0]</text> + <polygon points="43 16838 46 16829 104 16829 107 16838 104 16847 46 16847" class="regexp"/> + <text class="regexp" x="54" y="16841">[#xA7D6]</text> + <polygon points="43 16866 46 16857 104 16857 107 16866 104 16875 46 16875" class="regexp"/> + <text class="regexp" x="54" y="16869">[#xA7D8]</text> + <polygon points="43 16894 46 16885 102 16885 105 16894 102 16903 46 16903" class="regexp"/> + <text class="regexp" x="54" y="16897">[#xA7F5]</text> + <polygon points="43 16922 46 16913 140 16913 143 16922 140 16931 46 16931" class="regexp"/> + <text class="regexp" x="54" y="16925">[#xFF21-#xFF3A]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m42 0 h4 m0 0 h64 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 m82 0 h4 m0 0 h24 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m82 0 h4 m0 0 h24 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m60 0 h4 m0 0 h46 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m60 0 h4 m0 0 h46 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m60 0 h4 m0 0 h46 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m60 0 h4 m0 0 h46 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m66 0 h4 m0 0 h40 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m23 -16912 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="#lu" title="Lu" shape="rect">Lu</a>       ::= [A-Z#xC0-#xD6#xD8-#xDE#x100#x102#x104#x106#x108#x10A#x10C#x10E#x110#x112#x114#x116#x118#x11A#x11C#x11E#x120#x122#x124#x126#x128#x12A#x12C#x12E#x130#x132#x134#x136#x139#x13B#x13D#x13F#x141#x143#x145#x147#x14A#x14C#x14E#x150#x152#x154#x156#x158#x15A#x15C#x15E#x160#x162#x164#x166#x168#x16A#x16C#x16E#x170#x172#x174#x176#x178-#x179#x17B#x17D#x181-#x182#x184#x186-#x187#x189-#x18B#x18E-#x191#x193-#x194#x196-#x198#x19C-#x19D#x19F-#x1A0#x1A2#x1A4#x1A6-#x1A7#x1A9#x1AC#x1AE-#x1AF#x1B1-#x1B3#x1B5#x1B7-#x1B8#x1BC#x1C4#x1C7#x1CA#x1CD#x1CF#x1D1#x1D3#x1D5#x1D7#x1D9#x1DB#x1DE#x1E0#x1E2#x1E4#x1E6#x1E8#x1EA#x1EC#x1EE#x1F1#x1F4#x1F6-#x1F8#x1FA#x1FC#x1FE#x200#x202#x204#x206#x208#x20A#x20C#x20E#x210#x212#x214#x216#x218#x21A#x21C#x21E#x220#x222#x224#x226#x228#x22A#x22C#x22E#x230#x232#x23A-#x23B#x23D-#x23E#x241#x243-#x246#x248#x24A#x24C#x24E#x370#x372#x376#x37F#x386#x388-#x38A#x38C#x38E-#x38F#x391-#x3A1#x3A3-#x3AB#x3CF#x3D2-#x3D4#x3D8#x3DA#x3DC#x3DE#x3E0#x3E2#x3E4#x3E6#x3E8#x3EA#x3EC#x3EE#x3F4#x3F7#x3F9-#x3FA#x3FD-#x42F#x460#x462#x464#x466#x468#x46A#x46C#x46E#x470#x472#x474#x476#x478#x47A#x47C#x47E#x480#x48A#x48C#x48E#x490#x492#x494#x496#x498#x49A#x49C#x49E#x4A0#x4A2#x4A4#x4A6#x4A8#x4AA#x4AC#x4AE#x4B0#x4B2#x4B4#x4B6#x4B8#x4BA#x4BC#x4BE#x4C0-#x4C1#x4C3#x4C5#x4C7#x4C9#x4CB#x4CD#x4D0#x4D2#x4D4#x4D6#x4D8#x4DA#x4DC#x4DE#x4E0#x4E2#x4E4#x4E6#x4E8#x4EA#x4EC#x4EE#x4F0#x4F2#x4F4#x4F6#x4F8#x4FA#x4FC#x4FE#x500#x502#x504#x506#x508#x50A#x50C#x50E#x510#x512#x514#x516#x518#x51A#x51C#x51E#x520#x522#x524#x526#x528#x52A#x52C#x52E#x531-#x556#x10A0-#x10C5#x10C7#x10CD#x13A0-#x13F5#x1C90-#x1CBA#x1CBD-#x1CBF#x1E00#x1E02#x1E04#x1E06#x1E08#x1E0A#x1E0C#x1E0E#x1E10#x1E12#x1E14#x1E16#x1E18#x1E1A#x1E1C#x1E1E#x1E20#x1E22#x1E24#x1E26#x1E28#x1E2A#x1E2C#x1E2E#x1E30#x1E32#x1E34#x1E36#x1E38#x1E3A#x1E3C#x1E3E#x1E40#x1E42#x1E44#x1E46#x1E48#x1E4A#x1E4C#x1E4E#x1E50#x1E52#x1E54#x1E56#x1E58#x1E5A#x1E5C#x1E5E#x1E60#x1E62#x1E64#x1E66#x1E68#x1E6A#x1E6C#x1E6E#x1E70#x1E72#x1E74#x1E76#x1E78#x1E7A#x1E7C#x1E7E#x1E80#x1E82#x1E84#x1E86#x1E88#x1E8A#x1E8C#x1E8E#x1E90#x1E92#x1E94#x1E9E#x1EA0#x1EA2#x1EA4#x1EA6#x1EA8#x1EAA#x1EAC#x1EAE#x1EB0#x1EB2#x1EB4#x1EB6#x1EB8#x1EBA#x1EBC#x1EBE#x1EC0#x1EC2#x1EC4#x1EC6#x1EC8#x1ECA#x1ECC#x1ECE#x1ED0#x1ED2#x1ED4#x1ED6#x1ED8#x1EDA#x1EDC#x1EDE#x1EE0#x1EE2#x1EE4#x1EE6#x1EE8#x1EEA#x1EEC#x1EEE#x1EF0#x1EF2#x1EF4#x1EF6#x1EF8#x1EFA#x1EFC#x1EFE#x1F08-#x1F0F#x1F18-#x1F1D#x1F28-#x1F2F#x1F38-#x1F3F#x1F48-#x1F4D#x1F59#x1F5B#x1F5D#x1F5F#x1F68-#x1F6F#x1FB8-#x1FBB#x1FC8-#x1FCB#x1FD8-#x1FDB#x1FE8-#x1FEC#x1FF8-#x1FFB#x2102#x2107#x210B-#x210D#x2110-#x2112#x2115#x2119-#x211D#x2124#x2126#x2128#x212A-#x212D#x2130-#x2133#x213E-#x213F#x2145#x2183#x2C00-#x2C2F#x2C60#x2C62-#x2C64#x2C67#x2C69#x2C6B#x2C6D-#x2C70#x2C72#x2C75#x2C7E-#x2C80#x2C82#x2C84#x2C86#x2C88#x2C8A#x2C8C#x2C8E#x2C90#x2C92#x2C94#x2C96#x2C98#x2C9A#x2C9C#x2C9E#x2CA0#x2CA2#x2CA4#x2CA6#x2CA8#x2CAA#x2CAC#x2CAE#x2CB0#x2CB2#x2CB4#x2CB6#x2CB8#x2CBA#x2CBC#x2CBE#x2CC0#x2CC2#x2CC4#x2CC6#x2CC8#x2CCA#x2CCC#x2CCE#x2CD0#x2CD2#x2CD4#x2CD6#x2CD8#x2CDA#x2CDC#x2CDE#x2CE0#x2CE2#x2CEB#x2CED#x2CF2#xA640#xA642#xA644#xA646#xA648#xA64A#xA64C#xA64E#xA650#xA652#xA654#xA656#xA658#xA65A#xA65C#xA65E#xA660#xA662#xA664#xA666#xA668#xA66A#xA66C#xA680#xA682#xA684#xA686#xA688#xA68A#xA68C#xA68E#xA690#xA692#xA694#xA696#xA698#xA69A#xA722#xA724#xA726#xA728#xA72A#xA72C#xA72E#xA732#xA734#xA736#xA738#xA73A#xA73C#xA73E#xA740#xA742#xA744#xA746#xA748#xA74A#xA74C#xA74E#xA750#xA752#xA754#xA756#xA758#xA75A#xA75C#xA75E#xA760#xA762#xA764#xA766#xA768#xA76A#xA76C#xA76E#xA779#xA77B#xA77D-#xA77E#xA780#xA782#xA784#xA786#xA78B#xA78D#xA790#xA792#xA796#xA798#xA79A#xA79C#xA79E#xA7A0#xA7A2#xA7A4#xA7A6#xA7A8#xA7AA-#xA7AE#xA7B0-#xA7B4#xA7B6#xA7B8#xA7BA#xA7BC#xA7BE#xA7C0#xA7C2#xA7C4-#xA7C7#xA7C9#xA7D0#xA7D6#xA7D8#xA7F5#xFF21-#xFF3A]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierstart" title="unicodeidentifierstart">unicodeidentifierstart</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Nl +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="189"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 142 1 145 10 142 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#x16EE-#x16F0]</text> + <polygon points="43 38 46 29 144 29 147 38 144 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x2160-#x2182]</text> + <polygon points="43 66 46 57 144 57 147 66 144 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x2185-#x2188]</text> + <polygon points="43 94 46 85 104 85 107 94 104 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x3007]</text> + <polygon points="43 122 46 113 144 113 147 122 144 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x3021-#x3029]</text> + <polygon points="43 150 46 141 144 141 147 150 144 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x3038-#x303A]</text> + <polygon points="43 178 46 169 142 169 145 178 142 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#xA6E6-#xA6EF]</text> + <path class="line" d="m17 10 h2 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 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 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 m64 0 h4 m0 0 h40 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 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 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 m102 0 h4 m0 0 h2 m23 -168 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="#nl" title="Nl" shape="rect">Nl</a>       ::= [#x16EE-#x16F0#x2160-#x2182#x2185-#x2188#x3007#x3021-#x3029#x3038-#x303A#xA6E6-#xA6EF]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierstart" title="unicodeidentifierstart">unicodeidentifierstart</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + UnicodeIdentifierExtend +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="111" 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="#mn" xlink:title="Mn" shape="rect"> + <rect x="43" y="1" width="24" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="13">Mn</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mc" xlink:title="Mc" shape="rect"> + <rect x="43" y="29" width="22" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="41">Mc</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#nd" xlink:title="Nd" shape="rect"> + <rect x="43" y="57" width="22" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="69">Nd</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#pc" xlink:title="Pc" shape="rect"> + <rect x="43" y="85" width="20" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="97">Pc</text></a><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#cf" xlink:title="Cf" shape="rect"> + <rect x="43" y="113" width="18" height="18" class="nonterminal"/> + <text class="nonterminal" x="47" y="125">Cf</text></a><path class="line" d="m17 10 h2 m20 0 h4 m24 0 h4 m-52 0 h20 m32 0 h20 m-72 0 q10 0 10 10 m52 0 q0 -10 10 -10 m-62 10 v8 m52 0 v-8 m-52 8 q0 10 10 10 m32 0 q10 0 10 -10 m-42 10 h4 m22 0 h4 m0 0 h2 m-42 -10 v20 m52 0 v-20 m-52 20 v8 m52 0 v-8 m-52 8 q0 10 10 10 m32 0 q10 0 10 -10 m-42 10 h4 m22 0 h4 m0 0 h2 m-42 -10 v20 m52 0 v-20 m-52 20 v8 m52 0 v-8 m-52 8 q0 10 10 10 m32 0 q10 0 10 -10 m-42 10 h4 m20 0 h4 m0 0 h4 m-42 -10 v20 m52 0 v-20 m-52 20 v8 m52 0 v-8 m-52 8 q0 10 10 10 m32 0 q10 0 10 -10 m-42 10 h4 m18 0 h4 m0 0 h6 m23 -112 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="#unicodeidentifierextend" title="UnicodeIdentifierExtend" shape="rect">UnicodeIdentifierExtend</a></div> + <div>         ::= <a href="#mn" title="Mn" shape="rect">Mn</a></div> + <div>           | <a href="#mc" title="Mc" shape="rect">Mc</a></div> + <div>           | <a href="#nd" title="Nd" shape="rect">Nd</a></div> + <div>           | <a href="#pc" title="Pc" shape="rect">Pc</a></div> + <div>           | <a href="#cf" title="Cf" shape="rect">Cf</a></div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#part-letter" title="part-letter">part-letter</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Cf +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="191" height="385"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 92 1 95 10 92 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#xAD]</text> + <polygon points="43 38 46 29 132 29 135 38 132 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x600-#x605]</text> + <polygon points="43 66 46 57 98 57 101 66 98 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x61C]</text> + <polygon points="43 94 46 85 100 85 103 94 100 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x6DD]</text> + <polygon points="43 122 46 113 96 113 99 122 96 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x70F]</text> + <polygon points="43 150 46 141 132 141 135 150 132 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x890-#x891]</text> + <polygon points="43 178 46 169 98 169 101 178 98 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#x8E2]</text> + <polygon points="43 206 46 197 104 197 107 206 104 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#x180E]</text> + <polygon points="43 234 46 225 142 225 145 234 142 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#x200B-#x200F]</text> + <polygon points="43 262 46 253 144 253 147 262 144 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#x202A-#x202E]</text> + <polygon points="43 290 46 281 144 281 147 290 144 299 46 299" class="regexp"/> + <text class="regexp" x="54" y="293">[#x2060-#x2064]</text> + <polygon points="43 318 46 309 142 309 145 318 142 327 46 327" class="regexp"/> + <text class="regexp" x="54" y="321">[#x2066-#x206F]</text> + <polygon points="43 346 46 337 100 337 103 346 100 355 46 355" class="regexp"/> + <text class="regexp" x="54" y="349">[#xFEFF]</text> + <polygon points="43 374 46 365 138 365 141 374 138 383 46 383" class="regexp"/> + <text class="regexp" x="54" y="377">[#xFFF9-#xFFFB]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m52 0 h4 m0 0 h52 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 m92 0 h4 m0 0 h12 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 m58 0 h4 m0 0 h46 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 m60 0 h4 m0 0 h44 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 m56 0 h4 m0 0 h48 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 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 m58 0 h4 m0 0 h46 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 m64 0 h4 m0 0 h40 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 m102 0 h4 m0 0 h2 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 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 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 m102 0 h4 m0 0 h2 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 m60 0 h4 m0 0 h44 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 m98 0 h4 m0 0 h6 m23 -364 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="#cf" title="Cf" shape="rect">Cf</a>       ::= [#xAD#x600-#x605#x61C#x6DD#x70F#x890-#x891#x8E2#x180E#x200B-#x200F#x202A-#x202E#x2060-#x2064#x2066-#x206F#xFEFF#xFFF9-#xFFFB]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierextend" title="unicodeidentifierextend">unicodeidentifierextend</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Mc +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="3129"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 98 1 101 10 98 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#x903]</text> + <polygon points="43 38 46 29 98 29 101 38 98 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x93B]</text> + <polygon points="43 66 46 57 132 57 135 66 132 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x93E-#x940]</text> + <polygon points="43 94 46 85 132 85 135 94 132 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x949-#x94C]</text> + <polygon points="43 122 46 113 130 113 133 122 130 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x94E-#x94F]</text> + <polygon points="43 150 46 141 132 141 135 150 132 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x982-#x983]</text> + <polygon points="43 178 46 169 132 169 135 178 132 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#x9BE-#x9C0]</text> + <polygon points="43 206 46 197 134 197 137 206 134 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#x9C7-#x9C8]</text> + <polygon points="43 234 46 225 134 225 137 234 134 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#x9CB-#x9CC]</text> + <polygon points="43 262 46 253 98 253 101 262 98 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#x9D7]</text> + <polygon points="43 290 46 281 98 281 101 290 98 299 46 299" class="regexp"/> + <text class="regexp" x="54" y="293">[#xA03]</text> + <polygon points="43 318 46 309 132 309 135 318 132 327 46 327" class="regexp"/> + <text class="regexp" x="54" y="321">[#xA3E-#xA40]</text> + <polygon points="43 346 46 337 98 337 101 346 98 355 46 355" class="regexp"/> + <text class="regexp" x="54" y="349">[#xA83]</text> + <polygon points="43 374 46 365 134 365 137 374 134 383 46 383" class="regexp"/> + <text class="regexp" x="54" y="377">[#xABE-#xAC0]</text> + <polygon points="43 402 46 393 98 393 101 402 98 411 46 411" class="regexp"/> + <text class="regexp" x="54" y="405">[#xAC9]</text> + <polygon points="43 430 46 421 136 421 139 430 136 439 46 439" class="regexp"/> + <text class="regexp" x="54" y="433">[#xACB-#xACC]</text> + <polygon points="43 458 46 449 132 449 135 458 132 467 46 467" class="regexp"/> + <text class="regexp" x="54" y="461">[#xB02-#xB03]</text> + <polygon points="43 486 46 477 98 477 101 486 98 495 46 495" class="regexp"/> + <text class="regexp" x="54" y="489">[#xB3E]</text> + <polygon points="43 514 46 505 98 505 101 514 98 523 46 523" class="regexp"/> + <text class="regexp" x="54" y="517">[#xB40]</text> + <polygon points="43 542 46 533 132 533 135 542 132 551 46 551" class="regexp"/> + <text class="regexp" x="54" y="545">[#xB47-#xB48]</text> + <polygon points="43 570 46 561 134 561 137 570 134 579 46 579" class="regexp"/> + <text class="regexp" x="54" y="573">[#xB4B-#xB4C]</text> + <polygon points="43 598 46 589 98 589 101 598 98 607 46 607" class="regexp"/> + <text class="regexp" x="54" y="601">[#xB57]</text> + <polygon points="43 626 46 617 132 617 135 626 132 635 46 635" class="regexp"/> + <text class="regexp" x="54" y="629">[#xBBE-#xBBF]</text> + <polygon points="43 654 46 645 134 645 137 654 134 663 46 663" class="regexp"/> + <text class="regexp" x="54" y="657">[#xBC1-#xBC2]</text> + <polygon points="43 682 46 673 134 673 137 682 134 691 46 691" class="regexp"/> + <text class="regexp" x="54" y="685">[#xBC6-#xBC8]</text> + <polygon points="43 710 46 701 136 701 139 710 136 719 46 719" class="regexp"/> + <text class="regexp" x="54" y="713">[#xBCA-#xBCC]</text> + <polygon points="43 738 46 729 98 729 101 738 98 747 46 747" class="regexp"/> + <text class="regexp" x="54" y="741">[#xBD7]</text> + <polygon points="43 766 46 757 134 757 137 766 134 775 46 775" class="regexp"/> + <text class="regexp" x="54" y="769">[#xC01-#xC03]</text> + <polygon points="43 794 46 785 134 785 137 794 134 803 46 803" class="regexp"/> + <text class="regexp" x="54" y="797">[#xC41-#xC44]</text> + <polygon points="43 822 46 813 134 813 137 822 134 831 46 831" class="regexp"/> + <text class="regexp" x="54" y="825">[#xC82-#xC83]</text> + <polygon points="43 850 46 841 98 841 101 850 98 859 46 859" class="regexp"/> + <text class="regexp" x="54" y="853">[#xCBE]</text> + <polygon points="43 878 46 869 136 869 139 878 136 887 46 887" class="regexp"/> + <text class="regexp" x="54" y="881">[#xCC0-#xCC4]</text> + <polygon points="43 906 46 897 136 897 139 906 136 915 46 915" class="regexp"/> + <text class="regexp" x="54" y="909">[#xCC7-#xCC8]</text> + <polygon points="43 934 46 925 136 925 139 934 136 943 46 943" class="regexp"/> + <text class="regexp" x="54" y="937">[#xCCA-#xCCB]</text> + <polygon points="43 962 46 953 136 953 139 962 136 971 46 971" class="regexp"/> + <text class="regexp" x="54" y="965">[#xCD5-#xCD6]</text> + <polygon points="43 990 46 981 98 981 101 990 98 999 46 999" class="regexp"/> + <text class="regexp" x="54" y="993">[#xCF3]</text> + <polygon points="43 1018 46 1009 134 1009 137 1018 134 1027 46 1027" class="regexp"/> + <text class="regexp" x="54" y="1021">[#xD02-#xD03]</text> + <polygon points="43 1046 46 1037 134 1037 137 1046 134 1055 46 1055" class="regexp"/> + <text class="regexp" x="54" y="1049">[#xD3E-#xD40]</text> + <polygon points="43 1074 46 1065 134 1065 137 1074 134 1083 46 1083" class="regexp"/> + <text class="regexp" x="54" y="1077">[#xD46-#xD48]</text> + <polygon points="43 1102 46 1093 136 1093 139 1102 136 1111 46 1111" class="regexp"/> + <text class="regexp" x="54" y="1105">[#xD4A-#xD4C]</text> + <polygon points="43 1130 46 1121 98 1121 101 1130 98 1139 46 1139" class="regexp"/> + <text class="regexp" x="54" y="1133">[#xD57]</text> + <polygon points="43 1158 46 1149 134 1149 137 1158 134 1167 46 1167" class="regexp"/> + <text class="regexp" x="54" y="1161">[#xD82-#xD83]</text> + <polygon points="43 1186 46 1177 136 1177 139 1186 136 1195 46 1195" class="regexp"/> + <text class="regexp" x="54" y="1189">[#xDCF-#xDD1]</text> + <polygon points="43 1214 46 1205 136 1205 139 1214 136 1223 46 1223" class="regexp"/> + <text class="regexp" x="54" y="1217">[#xDD8-#xDDF]</text> + <polygon points="43 1242 46 1233 132 1233 135 1242 132 1251 46 1251" class="regexp"/> + <text class="regexp" x="54" y="1245">[#xDF2-#xDF3]</text> + <polygon points="43 1270 46 1261 128 1261 131 1270 128 1279 46 1279" class="regexp"/> + <text class="regexp" x="54" y="1273">[#xF3E-#xF3F]</text> + <polygon points="43 1298 46 1289 96 1289 99 1298 96 1307 46 1307" class="regexp"/> + <text class="regexp" x="54" y="1301">[#xF7F]</text> + <polygon points="43 1326 46 1317 144 1317 147 1326 144 1335 46 1335" class="regexp"/> + <text class="regexp" x="54" y="1329">[#x102B-#x102C]</text> + <polygon points="43 1354 46 1345 104 1345 107 1354 104 1363 46 1363" class="regexp"/> + <text class="regexp" x="54" y="1357">[#x1031]</text> + <polygon points="43 1382 46 1373 104 1373 107 1382 104 1391 46 1391" class="regexp"/> + <text class="regexp" x="54" y="1385">[#x1038]</text> + <polygon points="43 1410 46 1401 144 1401 147 1410 144 1419 46 1419" class="regexp"/> + <text class="regexp" x="54" y="1413">[#x103B-#x103C]</text> + <polygon points="43 1438 46 1429 144 1429 147 1438 144 1447 46 1447" class="regexp"/> + <text class="regexp" x="54" y="1441">[#x1056-#x1057]</text> + <polygon points="43 1466 46 1457 144 1457 147 1466 144 1475 46 1475" class="regexp"/> + <text class="regexp" x="54" y="1469">[#x1062-#x1064]</text> + <polygon points="43 1494 46 1485 144 1485 147 1494 144 1503 46 1503" class="regexp"/> + <text class="regexp" x="54" y="1497">[#x1067-#x106D]</text> + <polygon points="43 1522 46 1513 144 1513 147 1522 144 1531 46 1531" class="regexp"/> + <text class="regexp" x="54" y="1525">[#x1083-#x1084]</text> + <polygon points="43 1550 46 1541 144 1541 147 1550 144 1559 46 1559" class="regexp"/> + <text class="regexp" x="54" y="1553">[#x1087-#x108C]</text> + <polygon points="43 1578 46 1569 102 1569 105 1578 102 1587 46 1587" class="regexp"/> + <text class="regexp" x="54" y="1581">[#x108F]</text> + <polygon points="43 1606 46 1597 144 1597 147 1606 144 1615 46 1615" class="regexp"/> + <text class="regexp" x="54" y="1609">[#x109A-#x109C]</text> + <polygon points="43 1634 46 1625 104 1625 107 1634 104 1643 46 1643" class="regexp"/> + <text class="regexp" x="54" y="1637">[#x1715]</text> + <polygon points="43 1662 46 1653 104 1653 107 1662 104 1671 46 1671" class="regexp"/> + <text class="regexp" x="54" y="1665">[#x1734]</text> + <polygon points="43 1690 46 1681 104 1681 107 1690 104 1699 46 1699" class="regexp"/> + <text class="regexp" x="54" y="1693">[#x17B6]</text> + <polygon points="43 1718 46 1709 144 1709 147 1718 144 1727 46 1727" class="regexp"/> + <text class="regexp" x="54" y="1721">[#x17BE-#x17C5]</text> + <polygon points="43 1746 46 1737 146 1737 149 1746 146 1755 46 1755" class="regexp"/> + <text class="regexp" x="54" y="1749">[#x17C7-#x17C8]</text> + <polygon points="43 1774 46 1765 144 1765 147 1774 144 1783 46 1783" class="regexp"/> + <text class="regexp" x="54" y="1777">[#x1923-#x1926]</text> + <polygon points="43 1802 46 1793 144 1793 147 1802 144 1811 46 1811" class="regexp"/> + <text class="regexp" x="54" y="1805">[#x1929-#x192B]</text> + <polygon points="43 1830 46 1821 144 1821 147 1830 144 1839 46 1839" class="regexp"/> + <text class="regexp" x="54" y="1833">[#x1930-#x1931]</text> + <polygon points="43 1858 46 1849 144 1849 147 1858 144 1867 46 1867" class="regexp"/> + <text class="regexp" x="54" y="1861">[#x1933-#x1938]</text> + <polygon points="43 1886 46 1877 144 1877 147 1886 144 1895 46 1895" class="regexp"/> + <text class="regexp" x="54" y="1889">[#x1A19-#x1A1A]</text> + <polygon points="43 1914 46 1905 104 1905 107 1914 104 1923 46 1923" class="regexp"/> + <text class="regexp" x="54" y="1917">[#x1A55]</text> + <polygon points="43 1942 46 1933 104 1933 107 1942 104 1951 46 1951" class="regexp"/> + <text class="regexp" x="54" y="1945">[#x1A57]</text> + <polygon points="43 1970 46 1961 104 1961 107 1970 104 1979 46 1979" class="regexp"/> + <text class="regexp" x="54" y="1973">[#x1A61]</text> + <polygon points="43 1998 46 1989 144 1989 147 1998 144 2007 46 2007" class="regexp"/> + <text class="regexp" x="54" y="2001">[#x1A63-#x1A64]</text> + <polygon points="43 2026 46 2017 146 2017 149 2026 146 2035 46 2035" class="regexp"/> + <text class="regexp" x="54" y="2029">[#x1A6D-#x1A72]</text> + <polygon points="43 2054 46 2045 104 2045 107 2054 104 2063 46 2063" class="regexp"/> + <text class="regexp" x="54" y="2057">[#x1B04]</text> + <polygon points="43 2082 46 2073 104 2073 107 2082 104 2091 46 2091" class="regexp"/> + <text class="regexp" x="54" y="2085">[#x1B35]</text> + <polygon points="43 2110 46 2101 104 2101 107 2110 104 2119 46 2119" class="regexp"/> + <text class="regexp" x="54" y="2113">[#x1B3B]</text> + <polygon points="43 2138 46 2129 146 2129 149 2138 146 2147 46 2147" class="regexp"/> + <text class="regexp" x="54" y="2141">[#x1B3D-#x1B41]</text> + <polygon points="43 2166 46 2157 144 2157 147 2166 144 2175 46 2175" class="regexp"/> + <text class="regexp" x="54" y="2169">[#x1B43-#x1B44]</text> + <polygon points="43 2194 46 2185 104 2185 107 2194 104 2203 46 2203" class="regexp"/> + <text class="regexp" x="54" y="2197">[#x1B82]</text> + <polygon points="43 2222 46 2213 104 2213 107 2222 104 2231 46 2231" class="regexp"/> + <text class="regexp" x="54" y="2225">[#x1BA1]</text> + <polygon points="43 2250 46 2241 144 2241 147 2250 144 2259 46 2259" class="regexp"/> + <text class="regexp" x="54" y="2253">[#x1BA6-#x1BA7]</text> + <polygon points="43 2278 46 2269 104 2269 107 2278 104 2287 46 2287" class="regexp"/> + <text class="regexp" x="54" y="2281">[#x1BAA]</text> + <polygon points="43 2306 46 2297 104 2297 107 2306 104 2315 46 2315" class="regexp"/> + <text class="regexp" x="54" y="2309">[#x1BE7]</text> + <polygon points="43 2334 46 2325 146 2325 149 2334 146 2343 46 2343" class="regexp"/> + <text class="regexp" x="54" y="2337">[#x1BEA-#x1BEC]</text> + <polygon points="43 2362 46 2353 104 2353 107 2362 104 2371 46 2371" class="regexp"/> + <text class="regexp" x="54" y="2365">[#x1BEE]</text> + <polygon points="43 2390 46 2381 142 2381 145 2390 142 2399 46 2399" class="regexp"/> + <text class="regexp" x="54" y="2393">[#x1BF2-#x1BF3]</text> + <polygon points="43 2418 46 2409 146 2409 149 2418 146 2427 46 2427" class="regexp"/> + <text class="regexp" x="54" y="2421">[#x1C24-#x1C2B]</text> + <polygon points="43 2446 46 2437 146 2437 149 2446 146 2455 46 2455" class="regexp"/> + <text class="regexp" x="54" y="2449">[#x1C34-#x1C35]</text> + <polygon points="43 2474 46 2465 104 2465 107 2474 104 2483 46 2483" class="regexp"/> + <text class="regexp" x="54" y="2477">[#x1CE1]</text> + <polygon points="43 2502 46 2493 104 2493 107 2502 104 2511 46 2511" class="regexp"/> + <text class="regexp" x="54" y="2505">[#x1CF7]</text> + <polygon points="43 2530 46 2521 142 2521 145 2530 142 2539 46 2539" class="regexp"/> + <text class="regexp" x="54" y="2533">[#x302E-#x302F]</text> + <polygon points="43 2558 46 2549 144 2549 147 2558 144 2567 46 2567" class="regexp"/> + <text class="regexp" x="54" y="2561">[#xA823-#xA824]</text> + <polygon points="43 2586 46 2577 104 2577 107 2586 104 2595 46 2595" class="regexp"/> + <text class="regexp" x="54" y="2589">[#xA827]</text> + <polygon points="43 2614 46 2605 144 2605 147 2614 144 2623 46 2623" class="regexp"/> + <text class="regexp" x="54" y="2617">[#xA880-#xA881]</text> + <polygon points="43 2642 46 2633 146 2633 149 2642 146 2651 46 2651" class="regexp"/> + <text class="regexp" x="54" y="2645">[#xA8B4-#xA8C3]</text> + <polygon points="43 2670 46 2661 144 2661 147 2670 144 2679 46 2679" class="regexp"/> + <text class="regexp" x="54" y="2673">[#xA952-#xA953]</text> + <polygon points="43 2698 46 2689 104 2689 107 2698 104 2707 46 2707" class="regexp"/> + <text class="regexp" x="54" y="2701">[#xA983]</text> + <polygon points="43 2726 46 2717 144 2717 147 2726 144 2735 46 2735" class="regexp"/> + <text class="regexp" x="54" y="2729">[#xA9B4-#xA9B5]</text> + <polygon points="43 2754 46 2745 144 2745 147 2754 144 2763 46 2763" class="regexp"/> + <text class="regexp" x="54" y="2757">[#xA9BA-#xA9BB]</text> + <polygon points="43 2782 46 2773 146 2773 149 2782 146 2791 46 2791" class="regexp"/> + <text class="regexp" x="54" y="2785">[#xA9BE-#xA9C0]</text> + <polygon points="43 2810 46 2801 144 2801 147 2810 144 2819 46 2819" class="regexp"/> + <text class="regexp" x="54" y="2813">[#xAA2F-#xAA30]</text> + <polygon points="43 2838 46 2829 144 2829 147 2838 144 2847 46 2847" class="regexp"/> + <text class="regexp" x="54" y="2841">[#xAA33-#xAA34]</text> + <polygon points="43 2866 46 2857 104 2857 107 2866 104 2875 46 2875" class="regexp"/> + <text class="regexp" x="54" y="2869">[#xAA4D]</text> + <polygon points="43 2894 46 2885 104 2885 107 2894 104 2903 46 2903" class="regexp"/> + <text class="regexp" x="54" y="2897">[#xAA7B]</text> + <polygon points="43 2922 46 2913 104 2913 107 2922 104 2931 46 2931" class="regexp"/> + <text class="regexp" x="54" y="2925">[#xAA7D]</text> + <polygon points="43 2950 46 2941 104 2941 107 2950 104 2959 46 2959" class="regexp"/> + <text class="regexp" x="54" y="2953">[#xAAEB]</text> + <polygon points="43 2978 46 2969 144 2969 147 2978 144 2987 46 2987" class="regexp"/> + <text class="regexp" x="54" y="2981">[#xAAEE-#xAAEF]</text> + <polygon points="43 3006 46 2997 102 2997 105 3006 102 3015 46 3015" class="regexp"/> + <text class="regexp" x="54" y="3009">[#xAAF5]</text> + <polygon points="43 3034 46 3025 144 3025 147 3034 144 3043 46 3043" class="regexp"/> + <text class="regexp" x="54" y="3037">[#xABE3-#xABE4]</text> + <polygon points="43 3062 46 3053 144 3053 147 3062 144 3071 46 3071" class="regexp"/> + <text class="regexp" x="54" y="3065">[#xABE6-#xABE7]</text> + <polygon points="43 3090 46 3081 144 3081 147 3090 144 3099 46 3099" class="regexp"/> + <text class="regexp" x="54" y="3093">[#xABE9-#xABEA]</text> + <polygon points="43 3118 46 3109 104 3109 107 3118 104 3127 46 3127" class="regexp"/> + <text class="regexp" x="54" y="3121">[#xABEC]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m58 0 h4 m0 0 h48 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 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m58 0 h4 m0 0 h48 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m96 0 h4 m0 0 h10 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m88 0 h4 m0 0 h18 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m56 0 h4 m0 0 h50 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m62 0 h4 m0 0 h44 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m64 0 h4 m0 0 h42 m23 -3108 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="#mc" title="Mc" shape="rect">Mc</a>       ::= [#x903#x93B#x93E-#x940#x949-#x94C#x94E-#x94F#x982-#x983#x9BE-#x9C0#x9C7-#x9C8#x9CB-#x9CC#x9D7#xA03#xA3E-#xA40#xA83#xABE-#xAC0#xAC9#xACB-#xACC#xB02-#xB03#xB3E#xB40#xB47-#xB48#xB4B-#xB4C#xB57#xBBE-#xBBF#xBC1-#xBC2#xBC6-#xBC8#xBCA-#xBCC#xBD7#xC01-#xC03#xC41-#xC44#xC82-#xC83#xCBE#xCC0-#xCC4#xCC7-#xCC8#xCCA-#xCCB#xCD5-#xCD6#xCF3#xD02-#xD03#xD3E-#xD40#xD46-#xD48#xD4A-#xD4C#xD57#xD82-#xD83#xDCF-#xDD1#xDD8-#xDDF#xDF2-#xDF3#xF3E-#xF3F#xF7F#x102B-#x102C#x1031#x1038#x103B-#x103C#x1056-#x1057#x1062-#x1064#x1067-#x106D#x1083-#x1084#x1087-#x108C#x108F#x109A-#x109C#x1715#x1734#x17B6#x17BE-#x17C5#x17C7-#x17C8#x1923-#x1926#x1929-#x192B#x1930-#x1931#x1933-#x1938#x1A19-#x1A1A#x1A55#x1A57#x1A61#x1A63-#x1A64#x1A6D-#x1A72#x1B04#x1B35#x1B3B#x1B3D-#x1B41#x1B43-#x1B44#x1B82#x1BA1#x1BA6-#x1BA7#x1BAA#x1BE7#x1BEA-#x1BEC#x1BEE#x1BF2-#x1BF3#x1C24-#x1C2B#x1C34-#x1C35#x1CE1#x1CF7#x302E-#x302F#xA823-#xA824#xA827#xA880-#xA881#xA8B4-#xA8C3#xA952-#xA953#xA983#xA9B4-#xA9B5#xA9BA-#xA9BB#xA9BE-#xA9C0#xAA2F-#xAA30#xAA33-#xAA34#xAA4D#xAA7B#xAA7D#xAAEB#xAAEE-#xAAEF#xAAF5#xABE3-#xABE4#xABE6-#xABE7#xABE9-#xABEA#xABEC]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierextend" title="unicodeidentifierextend">unicodeidentifierextend</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Mn +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="195" height="5929"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 130 1 133 10 130 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#x300-#x36F]</text> + <polygon points="43 38 46 29 132 29 135 38 132 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x483-#x487]</text> + <polygon points="43 66 46 57 132 57 135 66 132 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x591-#x5BD]</text> + <polygon points="43 94 46 85 96 85 99 94 96 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x5BF]</text> + <polygon points="43 122 46 113 134 113 137 122 134 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x5C1-#x5C2]</text> + <polygon points="43 150 46 141 134 141 137 150 134 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x5C4-#x5C5]</text> + <polygon points="43 178 46 169 98 169 101 178 98 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#x5C7]</text> + <polygon points="43 206 46 197 132 197 135 206 132 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#x610-#x61A]</text> + <polygon points="43 234 46 225 130 225 133 234 130 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#x64B-#x65F]</text> + <polygon points="43 262 46 253 98 253 101 262 98 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#x670]</text> + <polygon points="43 290 46 281 134 281 137 290 134 299 46 299" class="regexp"/> + <text class="regexp" x="54" y="293">[#x6D6-#x6DC]</text> + <polygon points="43 318 46 309 132 309 135 318 132 327 46 327" class="regexp"/> + <text class="regexp" x="54" y="321">[#x6DF-#x6E4]</text> + <polygon points="43 346 46 337 132 337 135 346 132 355 46 355" class="regexp"/> + <text class="regexp" x="54" y="349">[#x6E7-#x6E8]</text> + <polygon points="43 374 46 365 132 365 135 374 132 383 46 383" class="regexp"/> + <text class="regexp" x="54" y="377">[#x6EA-#x6ED]</text> + <polygon points="43 402 46 393 98 393 101 402 98 411 46 411" class="regexp"/> + <text class="regexp" x="54" y="405">[#x711]</text> + <polygon points="43 430 46 421 132 421 135 430 132 439 46 439" class="regexp"/> + <text class="regexp" x="54" y="433">[#x730-#x74A]</text> + <polygon points="43 458 46 449 132 449 135 458 132 467 46 467" class="regexp"/> + <text class="regexp" x="54" y="461">[#x7A6-#x7B0]</text> + <polygon points="43 486 46 477 130 477 133 486 130 495 46 495" class="regexp"/> + <text class="regexp" x="54" y="489">[#x7EB-#x7F3]</text> + <polygon points="43 514 46 505 98 505 101 514 98 523 46 523" class="regexp"/> + <text class="regexp" x="54" y="517">[#x7FD]</text> + <polygon points="43 542 46 533 132 533 135 542 132 551 46 551" class="regexp"/> + <text class="regexp" x="54" y="545">[#x816-#x819]</text> + <polygon points="43 570 46 561 132 561 135 570 132 579 46 579" class="regexp"/> + <text class="regexp" x="54" y="573">[#x81B-#x823]</text> + <polygon points="43 598 46 589 132 589 135 598 132 607 46 607" class="regexp"/> + <text class="regexp" x="54" y="601">[#x825-#x827]</text> + <polygon points="43 626 46 617 132 617 135 626 132 635 46 635" class="regexp"/> + <text class="regexp" x="54" y="629">[#x829-#x82D]</text> + <polygon points="43 654 46 645 132 645 135 654 132 663 46 663" class="regexp"/> + <text class="regexp" x="54" y="657">[#x859-#x85B]</text> + <polygon points="43 682 46 673 130 673 133 682 130 691 46 691" class="regexp"/> + <text class="regexp" x="54" y="685">[#x898-#x89F]</text> + <polygon points="43 710 46 701 132 701 135 710 132 719 46 719" class="regexp"/> + <text class="regexp" x="54" y="713">[#x8CA-#x8E1]</text> + <polygon points="43 738 46 729 132 729 135 738 132 747 46 747" class="regexp"/> + <text class="regexp" x="54" y="741">[#x8E3-#x902]</text> + <polygon points="43 766 46 757 98 757 101 766 98 775 46 775" class="regexp"/> + <text class="regexp" x="54" y="769">[#x93A]</text> + <polygon points="43 794 46 785 98 785 101 794 98 803 46 803" class="regexp"/> + <text class="regexp" x="54" y="797">[#x93C]</text> + <polygon points="43 822 46 813 132 813 135 822 132 831 46 831" class="regexp"/> + <text class="regexp" x="54" y="825">[#x941-#x948]</text> + <polygon points="43 850 46 841 98 841 101 850 98 859 46 859" class="regexp"/> + <text class="regexp" x="54" y="853">[#x94D]</text> + <polygon points="43 878 46 869 132 869 135 878 132 887 46 887" class="regexp"/> + <text class="regexp" x="54" y="881">[#x951-#x957]</text> + <polygon points="43 906 46 897 132 897 135 906 132 915 46 915" class="regexp"/> + <text class="regexp" x="54" y="909">[#x962-#x963]</text> + <polygon points="43 934 46 925 98 925 101 934 98 943 46 943" class="regexp"/> + <text class="regexp" x="54" y="937">[#x981]</text> + <polygon points="43 962 46 953 98 953 101 962 98 971 46 971" class="regexp"/> + <text class="regexp" x="54" y="965">[#x9BC]</text> + <polygon points="43 990 46 981 134 981 137 990 134 999 46 999" class="regexp"/> + <text class="regexp" x="54" y="993">[#x9C1-#x9C4]</text> + <polygon points="43 1018 46 1009 100 1009 103 1018 100 1027 46 1027" class="regexp"/> + <text class="regexp" x="54" y="1021">[#x9CD]</text> + <polygon points="43 1046 46 1037 132 1037 135 1046 132 1055 46 1055" class="regexp"/> + <text class="regexp" x="54" y="1049">[#x9E2-#x9E3]</text> + <polygon points="43 1074 46 1065 96 1065 99 1074 96 1083 46 1083" class="regexp"/> + <text class="regexp" x="54" y="1077">[#x9FE]</text> + <polygon points="43 1102 46 1093 132 1093 135 1102 132 1111 46 1111" class="regexp"/> + <text class="regexp" x="54" y="1105">[#xA01-#xA02]</text> + <polygon points="43 1130 46 1121 98 1121 101 1130 98 1139 46 1139" class="regexp"/> + <text class="regexp" x="54" y="1133">[#xA3C]</text> + <polygon points="43 1158 46 1149 132 1149 135 1158 132 1167 46 1167" class="regexp"/> + <text class="regexp" x="54" y="1161">[#xA41-#xA42]</text> + <polygon points="43 1186 46 1177 132 1177 135 1186 132 1195 46 1195" class="regexp"/> + <text class="regexp" x="54" y="1189">[#xA47-#xA48]</text> + <polygon points="43 1214 46 1205 134 1205 137 1214 134 1223 46 1223" class="regexp"/> + <text class="regexp" x="54" y="1217">[#xA4B-#xA4D]</text> + <polygon points="43 1242 46 1233 98 1233 101 1242 98 1251 46 1251" class="regexp"/> + <text class="regexp" x="54" y="1245">[#xA51]</text> + <polygon points="43 1270 46 1261 132 1261 135 1270 132 1279 46 1279" class="regexp"/> + <text class="regexp" x="54" y="1273">[#xA70-#xA71]</text> + <polygon points="43 1298 46 1289 98 1289 101 1298 98 1307 46 1307" class="regexp"/> + <text class="regexp" x="54" y="1301">[#xA75]</text> + <polygon points="43 1326 46 1317 132 1317 135 1326 132 1335 46 1335" class="regexp"/> + <text class="regexp" x="54" y="1329">[#xA81-#xA82]</text> + <polygon points="43 1354 46 1345 98 1345 101 1354 98 1363 46 1363" class="regexp"/> + <text class="regexp" x="54" y="1357">[#xABC]</text> + <polygon points="43 1382 46 1373 134 1373 137 1382 134 1391 46 1391" class="regexp"/> + <text class="regexp" x="54" y="1385">[#xAC1-#xAC5]</text> + <polygon points="43 1410 46 1401 134 1401 137 1410 134 1419 46 1419" class="regexp"/> + <text class="regexp" x="54" y="1413">[#xAC7-#xAC8]</text> + <polygon points="43 1438 46 1429 100 1429 103 1438 100 1447 46 1447" class="regexp"/> + <text class="regexp" x="54" y="1441">[#xACD]</text> + <polygon points="43 1466 46 1457 132 1457 135 1466 132 1475 46 1475" class="regexp"/> + <text class="regexp" x="54" y="1469">[#xAE2-#xAE3]</text> + <polygon points="43 1494 46 1485 130 1485 133 1494 130 1503 46 1503" class="regexp"/> + <text class="regexp" x="54" y="1497">[#xAFA-#xAFF]</text> + <polygon points="43 1522 46 1513 98 1513 101 1522 98 1531 46 1531" class="regexp"/> + <text class="regexp" x="54" y="1525">[#xB01]</text> + <polygon points="43 1550 46 1541 98 1541 101 1550 98 1559 46 1559" class="regexp"/> + <text class="regexp" x="54" y="1553">[#xB3C]</text> + <polygon points="43 1578 46 1569 96 1569 99 1578 96 1587 46 1587" class="regexp"/> + <text class="regexp" x="54" y="1581">[#xB3F]</text> + <polygon points="43 1606 46 1597 132 1597 135 1606 132 1615 46 1615" class="regexp"/> + <text class="regexp" x="54" y="1609">[#xB41-#xB44]</text> + <polygon points="43 1634 46 1625 98 1625 101 1634 98 1643 46 1643" class="regexp"/> + <text class="regexp" x="54" y="1637">[#xB4D]</text> + <polygon points="43 1662 46 1653 132 1653 135 1662 132 1671 46 1671" class="regexp"/> + <text class="regexp" x="54" y="1665">[#xB55-#xB56]</text> + <polygon points="43 1690 46 1681 132 1681 135 1690 132 1699 46 1699" class="regexp"/> + <text class="regexp" x="54" y="1693">[#xB62-#xB63]</text> + <polygon points="43 1718 46 1709 98 1709 101 1718 98 1727 46 1727" class="regexp"/> + <text class="regexp" x="54" y="1721">[#xB82]</text> + <polygon points="43 1746 46 1737 98 1737 101 1746 98 1755 46 1755" class="regexp"/> + <text class="regexp" x="54" y="1749">[#xBC0]</text> + <polygon points="43 1774 46 1765 100 1765 103 1774 100 1783 46 1783" class="regexp"/> + <text class="regexp" x="54" y="1777">[#xBCD]</text> + <polygon points="43 1802 46 1793 98 1793 101 1802 98 1811 46 1811" class="regexp"/> + <text class="regexp" x="54" y="1805">[#xC00]</text> + <polygon points="43 1830 46 1821 98 1821 101 1830 98 1839 46 1839" class="regexp"/> + <text class="regexp" x="54" y="1833">[#xC04]</text> + <polygon points="43 1858 46 1849 100 1849 103 1858 100 1867 46 1867" class="regexp"/> + <text class="regexp" x="54" y="1861">[#xC3C]</text> + <polygon points="43 1886 46 1877 134 1877 137 1886 134 1895 46 1895" class="regexp"/> + <text class="regexp" x="54" y="1889">[#xC3E-#xC40]</text> + <polygon points="43 1914 46 1905 134 1905 137 1914 134 1923 46 1923" class="regexp"/> + <text class="regexp" x="54" y="1917">[#xC46-#xC48]</text> + <polygon points="43 1942 46 1933 134 1933 137 1942 134 1951 46 1951" class="regexp"/> + <text class="regexp" x="54" y="1945">[#xC4A-#xC4D]</text> + <polygon points="43 1970 46 1961 134 1961 137 1970 134 1979 46 1979" class="regexp"/> + <text class="regexp" x="54" y="1973">[#xC55-#xC56]</text> + <polygon points="43 1998 46 1989 134 1989 137 1998 134 2007 46 2007" class="regexp"/> + <text class="regexp" x="54" y="2001">[#xC62-#xC63]</text> + <polygon points="43 2026 46 2017 98 2017 101 2026 98 2035 46 2035" class="regexp"/> + <text class="regexp" x="54" y="2029">[#xC81]</text> + <polygon points="43 2054 46 2045 100 2045 103 2054 100 2063 46 2063" class="regexp"/> + <text class="regexp" x="54" y="2057">[#xCBC]</text> + <polygon points="43 2082 46 2073 98 2073 101 2082 98 2091 46 2091" class="regexp"/> + <text class="regexp" x="54" y="2085">[#xCBF]</text> + <polygon points="43 2110 46 2101 100 2101 103 2110 100 2119 46 2119" class="regexp"/> + <text class="regexp" x="54" y="2113">[#xCC6]</text> + <polygon points="43 2138 46 2129 138 2129 141 2138 138 2147 46 2147" class="regexp"/> + <text class="regexp" x="54" y="2141">[#xCCC-#xCCD]</text> + <polygon points="43 2166 46 2157 134 2157 137 2166 134 2175 46 2175" class="regexp"/> + <text class="regexp" x="54" y="2169">[#xCE2-#xCE3]</text> + <polygon points="43 2194 46 2185 134 2185 137 2194 134 2203 46 2203" class="regexp"/> + <text class="regexp" x="54" y="2197">[#xD00-#xD01]</text> + <polygon points="43 2222 46 2213 136 2213 139 2222 136 2231 46 2231" class="regexp"/> + <text class="regexp" x="54" y="2225">[#xD3B-#xD3C]</text> + <polygon points="43 2250 46 2241 134 2241 137 2250 134 2259 46 2259" class="regexp"/> + <text class="regexp" x="54" y="2253">[#xD41-#xD44]</text> + <polygon points="43 2278 46 2269 100 2269 103 2278 100 2287 46 2287" class="regexp"/> + <text class="regexp" x="54" y="2281">[#xD4D]</text> + <polygon points="43 2306 46 2297 134 2297 137 2306 134 2315 46 2315" class="regexp"/> + <text class="regexp" x="54" y="2309">[#xD62-#xD63]</text> + <polygon points="43 2334 46 2325 98 2325 101 2334 98 2343 46 2343" class="regexp"/> + <text class="regexp" x="54" y="2337">[#xD81]</text> + <polygon points="43 2362 46 2353 100 2353 103 2362 100 2371 46 2371" class="regexp"/> + <text class="regexp" x="54" y="2365">[#xDCA]</text> + <polygon points="43 2390 46 2381 136 2381 139 2390 136 2399 46 2399" class="regexp"/> + <text class="regexp" x="54" y="2393">[#xDD2-#xDD4]</text> + <polygon points="43 2418 46 2409 100 2409 103 2418 100 2427 46 2427" class="regexp"/> + <text class="regexp" x="54" y="2421">[#xDD6]</text> + <polygon points="43 2446 46 2437 98 2437 101 2446 98 2455 46 2455" class="regexp"/> + <text class="regexp" x="54" y="2449">[#xE31]</text> + <polygon points="43 2474 46 2465 132 2465 135 2474 132 2483 46 2483" class="regexp"/> + <text class="regexp" x="54" y="2477">[#xE34-#xE3A]</text> + <polygon points="43 2502 46 2493 132 2493 135 2502 132 2511 46 2511" class="regexp"/> + <text class="regexp" x="54" y="2505">[#xE47-#xE4E]</text> + <polygon points="43 2530 46 2521 98 2521 101 2530 98 2539 46 2539" class="regexp"/> + <text class="regexp" x="54" y="2533">[#xEB1]</text> + <polygon points="43 2558 46 2549 132 2549 135 2558 132 2567 46 2567" class="regexp"/> + <text class="regexp" x="54" y="2561">[#xEB4-#xEBC]</text> + <polygon points="43 2586 46 2577 134 2577 137 2586 134 2595 46 2595" class="regexp"/> + <text class="regexp" x="54" y="2589">[#xEC8-#xECE]</text> + <polygon points="43 2614 46 2605 130 2605 133 2614 130 2623 46 2623" class="regexp"/> + <text class="regexp" x="54" y="2617">[#xF18-#xF19]</text> + <polygon points="43 2642 46 2633 96 2633 99 2642 96 2651 46 2651" class="regexp"/> + <text class="regexp" x="54" y="2645">[#xF35]</text> + <polygon points="43 2670 46 2661 96 2661 99 2670 96 2679 46 2679" class="regexp"/> + <text class="regexp" x="54" y="2673">[#xF37]</text> + <polygon points="43 2698 46 2689 96 2689 99 2698 96 2707 46 2707" class="regexp"/> + <text class="regexp" x="54" y="2701">[#xF39]</text> + <polygon points="43 2726 46 2717 130 2717 133 2726 130 2735 46 2735" class="regexp"/> + <text class="regexp" x="54" y="2729">[#xF71-#xF7E]</text> + <polygon points="43 2754 46 2745 130 2745 133 2754 130 2763 46 2763" class="regexp"/> + <text class="regexp" x="54" y="2757">[#xF80-#xF84]</text> + <polygon points="43 2782 46 2773 130 2773 133 2782 130 2791 46 2791" class="regexp"/> + <text class="regexp" x="54" y="2785">[#xF86-#xF87]</text> + <polygon points="43 2810 46 2801 130 2801 133 2810 130 2819 46 2819" class="regexp"/> + <text class="regexp" x="54" y="2813">[#xF8D-#xF97]</text> + <polygon points="43 2838 46 2829 130 2829 133 2838 130 2847 46 2847" class="regexp"/> + <text class="regexp" x="54" y="2841">[#xF99-#xFBC]</text> + <polygon points="43 2866 46 2857 98 2857 101 2866 98 2875 46 2875" class="regexp"/> + <text class="regexp" x="54" y="2869">[#xFC6]</text> + <polygon points="43 2894 46 2885 144 2885 147 2894 144 2903 46 2903" class="regexp"/> + <text class="regexp" x="54" y="2897">[#x102D-#x1030]</text> + <polygon points="43 2922 46 2913 144 2913 147 2922 144 2931 46 2931" class="regexp"/> + <text class="regexp" x="54" y="2925">[#x1032-#x1037]</text> + <polygon points="43 2950 46 2941 144 2941 147 2950 144 2959 46 2959" class="regexp"/> + <text class="regexp" x="54" y="2953">[#x1039-#x103A]</text> + <polygon points="43 2978 46 2969 144 2969 147 2978 144 2987 46 2987" class="regexp"/> + <text class="regexp" x="54" y="2981">[#x103D-#x103E]</text> + <polygon points="43 3006 46 2997 144 2997 147 3006 144 3015 46 3015" class="regexp"/> + <text class="regexp" x="54" y="3009">[#x1058-#x1059]</text> + <polygon points="43 3034 46 3025 144 3025 147 3034 144 3043 46 3043" class="regexp"/> + <text class="regexp" x="54" y="3037">[#x105E-#x1060]</text> + <polygon points="43 3062 46 3053 144 3053 147 3062 144 3071 46 3071" class="regexp"/> + <text class="regexp" x="54" y="3065">[#x1071-#x1074]</text> + <polygon points="43 3090 46 3081 104 3081 107 3090 104 3099 46 3099" class="regexp"/> + <text class="regexp" x="54" y="3093">[#x1082]</text> + <polygon points="43 3118 46 3109 144 3109 147 3118 144 3127 46 3127" class="regexp"/> + <text class="regexp" x="54" y="3121">[#x1085-#x1086]</text> + <polygon points="43 3146 46 3137 104 3137 107 3146 104 3155 46 3155" class="regexp"/> + <text class="regexp" x="54" y="3149">[#x108D]</text> + <polygon points="43 3174 46 3165 104 3165 107 3174 104 3183 46 3183" class="regexp"/> + <text class="regexp" x="54" y="3177">[#x109D]</text> + <polygon points="43 3202 46 3193 144 3193 147 3202 144 3211 46 3211" class="regexp"/> + <text class="regexp" x="54" y="3205">[#x135D-#x135F]</text> + <polygon points="43 3230 46 3221 144 3221 147 3230 144 3239 46 3239" class="regexp"/> + <text class="regexp" x="54" y="3233">[#x1712-#x1714]</text> + <polygon points="43 3258 46 3249 144 3249 147 3258 144 3267 46 3267" class="regexp"/> + <text class="regexp" x="54" y="3261">[#x1732-#x1733]</text> + <polygon points="43 3286 46 3277 144 3277 147 3286 144 3295 46 3295" class="regexp"/> + <text class="regexp" x="54" y="3289">[#x1752-#x1753]</text> + <polygon points="43 3314 46 3305 144 3305 147 3314 144 3323 46 3323" class="regexp"/> + <text class="regexp" x="54" y="3317">[#x1772-#x1773]</text> + <polygon points="43 3342 46 3333 144 3333 147 3342 144 3351 46 3351" class="regexp"/> + <text class="regexp" x="54" y="3345">[#x17B4-#x17B5]</text> + <polygon points="43 3370 46 3361 146 3361 149 3370 146 3379 46 3379" class="regexp"/> + <text class="regexp" x="54" y="3373">[#x17B7-#x17BD]</text> + <polygon points="43 3398 46 3389 104 3389 107 3398 104 3407 46 3407" class="regexp"/> + <text class="regexp" x="54" y="3401">[#x17C6]</text> + <polygon points="43 3426 46 3417 146 3417 149 3426 146 3435 46 3435" class="regexp"/> + <text class="regexp" x="54" y="3429">[#x17C9-#x17D3]</text> + <polygon points="43 3454 46 3445 106 3445 109 3454 106 3463 46 3463" class="regexp"/> + <text class="regexp" x="54" y="3457">[#x17DD]</text> + <polygon points="43 3482 46 3473 144 3473 147 3482 144 3491 46 3491" class="regexp"/> + <text class="regexp" x="54" y="3485">[#x180B-#x180D]</text> + <polygon points="43 3510 46 3501 102 3501 105 3510 102 3519 46 3519" class="regexp"/> + <text class="regexp" x="54" y="3513">[#x180F]</text> + <polygon points="43 3538 46 3529 144 3529 147 3538 144 3547 46 3547" class="regexp"/> + <text class="regexp" x="54" y="3541">[#x1885-#x1886]</text> + <polygon points="43 3566 46 3557 104 3557 107 3566 104 3575 46 3575" class="regexp"/> + <text class="regexp" x="54" y="3569">[#x18A9]</text> + <polygon points="43 3594 46 3585 144 3585 147 3594 144 3603 46 3603" class="regexp"/> + <text class="regexp" x="54" y="3597">[#x1920-#x1922]</text> + <polygon points="43 3622 46 3613 144 3613 147 3622 144 3631 46 3631" class="regexp"/> + <text class="regexp" x="54" y="3625">[#x1927-#x1928]</text> + <polygon points="43 3650 46 3641 104 3641 107 3650 104 3659 46 3659" class="regexp"/> + <text class="regexp" x="54" y="3653">[#x1932]</text> + <polygon points="43 3678 46 3669 144 3669 147 3678 144 3687 46 3687" class="regexp"/> + <text class="regexp" x="54" y="3681">[#x1939-#x193B]</text> + <polygon points="43 3706 46 3697 144 3697 147 3706 144 3715 46 3715" class="regexp"/> + <text class="regexp" x="54" y="3709">[#x1A17-#x1A18]</text> + <polygon points="43 3734 46 3725 104 3725 107 3734 104 3743 46 3743" class="regexp"/> + <text class="regexp" x="54" y="3737">[#x1A1B]</text> + <polygon points="43 3762 46 3753 104 3753 107 3762 104 3771 46 3771" class="regexp"/> + <text class="regexp" x="54" y="3765">[#x1A56]</text> + <polygon points="43 3790 46 3781 144 3781 147 3790 144 3799 46 3799" class="regexp"/> + <text class="regexp" x="54" y="3793">[#x1A58-#x1A5E]</text> + <polygon points="43 3818 46 3809 104 3809 107 3818 104 3827 46 3827" class="regexp"/> + <text class="regexp" x="54" y="3821">[#x1A60]</text> + <polygon points="43 3846 46 3837 104 3837 107 3846 104 3855 46 3855" class="regexp"/> + <text class="regexp" x="54" y="3849">[#x1A62]</text> + <polygon points="43 3874 46 3865 144 3865 147 3874 144 3883 46 3883" class="regexp"/> + <text class="regexp" x="54" y="3877">[#x1A65-#x1A6C]</text> + <polygon points="43 3902 46 3893 144 3893 147 3902 144 3911 46 3911" class="regexp"/> + <text class="regexp" x="54" y="3905">[#x1A73-#x1A7C]</text> + <polygon points="43 3930 46 3921 102 3921 105 3930 102 3939 46 3939" class="regexp"/> + <text class="regexp" x="54" y="3933">[#x1A7F]</text> + <polygon points="43 3958 46 3949 146 3949 149 3958 146 3967 46 3967" class="regexp"/> + <text class="regexp" x="54" y="3961">[#x1AB0-#x1ABD]</text> + <polygon points="43 3986 46 3977 144 3977 147 3986 144 3995 46 3995" class="regexp"/> + <text class="regexp" x="54" y="3989">[#x1ABF-#x1ACE]</text> + <polygon points="43 4014 46 4005 144 4005 147 4014 144 4023 46 4023" class="regexp"/> + <text class="regexp" x="54" y="4017">[#x1B00-#x1B03]</text> + <polygon points="43 4042 46 4033 104 4033 107 4042 104 4051 46 4051" class="regexp"/> + <text class="regexp" x="54" y="4045">[#x1B34]</text> + <polygon points="43 4070 46 4061 144 4061 147 4070 144 4079 46 4079" class="regexp"/> + <text class="regexp" x="54" y="4073">[#x1B36-#x1B3A]</text> + <polygon points="43 4098 46 4089 104 4089 107 4098 104 4107 46 4107" class="regexp"/> + <text class="regexp" x="54" y="4101">[#x1B3C]</text> + <polygon points="43 4126 46 4117 104 4117 107 4126 104 4135 46 4135" class="regexp"/> + <text class="regexp" x="54" y="4129">[#x1B42]</text> + <polygon points="43 4154 46 4145 144 4145 147 4154 144 4163 46 4163" class="regexp"/> + <text class="regexp" x="54" y="4157">[#x1B6B-#x1B73]</text> + <polygon points="43 4182 46 4173 144 4173 147 4182 144 4191 46 4191" class="regexp"/> + <text class="regexp" x="54" y="4185">[#x1B80-#x1B81]</text> + <polygon points="43 4210 46 4201 144 4201 147 4210 144 4219 46 4219" class="regexp"/> + <text class="regexp" x="54" y="4213">[#x1BA2-#x1BA5]</text> + <polygon points="43 4238 46 4229 144 4229 147 4238 144 4247 46 4247" class="regexp"/> + <text class="regexp" x="54" y="4241">[#x1BA8-#x1BA9]</text> + <polygon points="43 4266 46 4257 146 4257 149 4266 146 4275 46 4275" class="regexp"/> + <text class="regexp" x="54" y="4269">[#x1BAB-#x1BAD]</text> + <polygon points="43 4294 46 4285 104 4285 107 4294 104 4303 46 4303" class="regexp"/> + <text class="regexp" x="54" y="4297">[#x1BE6]</text> + <polygon points="43 4322 46 4313 144 4313 147 4322 144 4331 46 4331" class="regexp"/> + <text class="regexp" x="54" y="4325">[#x1BE8-#x1BE9]</text> + <polygon points="43 4350 46 4341 104 4341 107 4350 104 4359 46 4359" class="regexp"/> + <text class="regexp" x="54" y="4353">[#x1BED]</text> + <polygon points="43 4378 46 4369 142 4369 145 4378 142 4387 46 4387" class="regexp"/> + <text class="regexp" x="54" y="4381">[#x1BEF-#x1BF1]</text> + <polygon points="43 4406 46 4397 146 4397 149 4406 146 4415 46 4415" class="regexp"/> + <text class="regexp" x="54" y="4409">[#x1C2C-#x1C33]</text> + <polygon points="43 4434 46 4425 146 4425 149 4434 146 4443 46 4443" class="regexp"/> + <text class="regexp" x="54" y="4437">[#x1C36-#x1C37]</text> + <polygon points="43 4462 46 4453 148 4453 151 4462 148 4471 46 4471" class="regexp"/> + <text class="regexp" x="54" y="4465">[#x1CD0-#x1CD2]</text> + <polygon points="43 4490 46 4481 146 4481 149 4490 146 4499 46 4499" class="regexp"/> + <text class="regexp" x="54" y="4493">[#x1CD4-#x1CE0]</text> + <polygon points="43 4518 46 4509 146 4509 149 4518 146 4527 46 4527" class="regexp"/> + <text class="regexp" x="54" y="4521">[#x1CE2-#x1CE8]</text> + <polygon points="43 4546 46 4537 106 4537 109 4546 106 4555 46 4555" class="regexp"/> + <text class="regexp" x="54" y="4549">[#x1CED]</text> + <polygon points="43 4574 46 4565 104 4565 107 4574 104 4583 46 4583" class="regexp"/> + <text class="regexp" x="54" y="4577">[#x1CF4]</text> + <polygon points="43 4602 46 4593 144 4593 147 4602 144 4611 46 4611" class="regexp"/> + <text class="regexp" x="54" y="4605">[#x1CF8-#x1CF9]</text> + <polygon points="43 4630 46 4621 144 4621 147 4630 144 4639 46 4639" class="regexp"/> + <text class="regexp" x="54" y="4633">[#x1DC0-#x1DFF]</text> + <polygon points="43 4658 46 4649 146 4649 149 4658 146 4667 46 4667" class="regexp"/> + <text class="regexp" x="54" y="4661">[#x20D0-#x20DC]</text> + <polygon points="43 4686 46 4677 104 4677 107 4686 104 4695 46 4695" class="regexp"/> + <text class="regexp" x="54" y="4689">[#x20E1]</text> + <polygon points="43 4714 46 4705 142 4705 145 4714 142 4723 46 4723" class="regexp"/> + <text class="regexp" x="54" y="4717">[#x20E5-#x20F0]</text> + <polygon points="43 4742 46 4733 144 4733 147 4742 144 4751 46 4751" class="regexp"/> + <text class="regexp" x="54" y="4745">[#x2CEF-#x2CF1]</text> + <polygon points="43 4770 46 4761 104 4761 107 4770 104 4779 46 4779" class="regexp"/> + <text class="regexp" x="54" y="4773">[#x2D7F]</text> + <polygon points="43 4798 46 4789 144 4789 147 4798 144 4807 46 4807" class="regexp"/> + <text class="regexp" x="54" y="4801">[#x2DE0-#x2DFF]</text> + <polygon points="43 4826 46 4817 144 4817 147 4826 144 4835 46 4835" class="regexp"/> + <text class="regexp" x="54" y="4829">[#x302A-#x302D]</text> + <polygon points="43 4854 46 4845 144 4845 147 4854 144 4863 46 4863" class="regexp"/> + <text class="regexp" x="54" y="4857">[#x3099-#x309A]</text> + <polygon points="43 4882 46 4873 102 4873 105 4882 102 4891 46 4891" class="regexp"/> + <text class="regexp" x="54" y="4885">[#xA66F]</text> + <polygon points="43 4910 46 4901 146 4901 149 4910 146 4919 46 4919" class="regexp"/> + <text class="regexp" x="54" y="4913">[#xA674-#xA67D]</text> + <polygon points="43 4938 46 4929 142 4929 145 4938 142 4947 46 4947" class="regexp"/> + <text class="regexp" x="54" y="4941">[#xA69E-#xA69F]</text> + <polygon points="43 4966 46 4957 142 4957 145 4966 142 4975 46 4975" class="regexp"/> + <text class="regexp" x="54" y="4969">[#xA6F0-#xA6F1]</text> + <polygon points="43 4994 46 4985 104 4985 107 4994 104 5003 46 5003" class="regexp"/> + <text class="regexp" x="54" y="4997">[#xA802]</text> + <polygon points="43 5022 46 5013 104 5013 107 5022 104 5031 46 5031" class="regexp"/> + <text class="regexp" x="54" y="5025">[#xA806]</text> + <polygon points="43 5050 46 5041 104 5041 107 5050 104 5059 46 5059" class="regexp"/> + <text class="regexp" x="54" y="5053">[#xA80B]</text> + <polygon points="43 5078 46 5069 144 5069 147 5078 144 5087 46 5087" class="regexp"/> + <text class="regexp" x="54" y="5081">[#xA825-#xA826]</text> + <polygon points="43 5106 46 5097 104 5097 107 5106 104 5115 46 5115" class="regexp"/> + <text class="regexp" x="54" y="5109">[#xA82C]</text> + <polygon points="43 5134 46 5125 146 5125 149 5134 146 5143 46 5143" class="regexp"/> + <text class="regexp" x="54" y="5137">[#xA8C4-#xA8C5]</text> + <polygon points="43 5162 46 5153 142 5153 145 5162 142 5171 46 5171" class="regexp"/> + <text class="regexp" x="54" y="5165">[#xA8E0-#xA8F1]</text> + <polygon points="43 5190 46 5181 102 5181 105 5190 102 5199 46 5199" class="regexp"/> + <text class="regexp" x="54" y="5193">[#xA8FF]</text> + <polygon points="43 5218 46 5209 146 5209 149 5218 146 5227 46 5227" class="regexp"/> + <text class="regexp" x="54" y="5221">[#xA926-#xA92D]</text> + <polygon points="43 5246 46 5237 144 5237 147 5246 144 5255 46 5255" class="regexp"/> + <text class="regexp" x="54" y="5249">[#xA947-#xA951]</text> + <polygon points="43 5274 46 5265 144 5265 147 5274 144 5283 46 5283" class="regexp"/> + <text class="regexp" x="54" y="5277">[#xA980-#xA982]</text> + <polygon points="43 5302 46 5293 104 5293 107 5302 104 5311 46 5311" class="regexp"/> + <text class="regexp" x="54" y="5305">[#xA9B3]</text> + <polygon points="43 5330 46 5321 144 5321 147 5330 144 5339 46 5339" class="regexp"/> + <text class="regexp" x="54" y="5333">[#xA9B6-#xA9B9]</text> + <polygon points="43 5358 46 5349 146 5349 149 5358 146 5367 46 5367" class="regexp"/> + <text class="regexp" x="54" y="5361">[#xA9BC-#xA9BD]</text> + <polygon points="43 5386 46 5377 104 5377 107 5386 104 5395 46 5395" class="regexp"/> + <text class="regexp" x="54" y="5389">[#xA9E5]</text> + <polygon points="43 5414 46 5405 144 5405 147 5414 144 5423 46 5423" class="regexp"/> + <text class="regexp" x="54" y="5417">[#xAA29-#xAA2E]</text> + <polygon points="43 5442 46 5433 144 5433 147 5442 144 5451 46 5451" class="regexp"/> + <text class="regexp" x="54" y="5445">[#xAA31-#xAA32]</text> + <polygon points="43 5470 46 5461 144 5461 147 5470 144 5479 46 5479" class="regexp"/> + <text class="regexp" x="54" y="5473">[#xAA35-#xAA36]</text> + <polygon points="43 5498 46 5489 104 5489 107 5498 104 5507 46 5507" class="regexp"/> + <text class="regexp" x="54" y="5501">[#xAA43]</text> + <polygon points="43 5526 46 5517 104 5517 107 5526 104 5535 46 5535" class="regexp"/> + <text class="regexp" x="54" y="5529">[#xAA4C]</text> + <polygon points="43 5554 46 5545 104 5545 107 5554 104 5563 46 5563" class="regexp"/> + <text class="regexp" x="54" y="5557">[#xAA7C]</text> + <polygon points="43 5582 46 5573 104 5573 107 5582 104 5591 46 5591" class="regexp"/> + <text class="regexp" x="54" y="5585">[#xAAB0]</text> + <polygon points="43 5610 46 5601 144 5601 147 5610 144 5619 46 5619" class="regexp"/> + <text class="regexp" x="54" y="5613">[#xAAB2-#xAAB4]</text> + <polygon points="43 5638 46 5629 144 5629 147 5638 144 5647 46 5647" class="regexp"/> + <text class="regexp" x="54" y="5641">[#xAAB7-#xAAB8]</text> + <polygon points="43 5666 46 5657 144 5657 147 5666 144 5675 46 5675" class="regexp"/> + <text class="regexp" x="54" y="5669">[#xAABE-#xAABF]</text> + <polygon points="43 5694 46 5685 104 5685 107 5694 104 5703 46 5703" class="regexp"/> + <text class="regexp" x="54" y="5697">[#xAAC1]</text> + <polygon points="43 5722 46 5713 146 5713 149 5722 146 5731 46 5731" class="regexp"/> + <text class="regexp" x="54" y="5725">[#xAAEC-#xAAED]</text> + <polygon points="43 5750 46 5741 102 5741 105 5750 102 5759 46 5759" class="regexp"/> + <text class="regexp" x="54" y="5753">[#xAAF6]</text> + <polygon points="43 5778 46 5769 104 5769 107 5778 104 5787 46 5787" class="regexp"/> + <text class="regexp" x="54" y="5781">[#xABE5]</text> + <polygon points="43 5806 46 5797 104 5797 107 5806 104 5815 46 5815" class="regexp"/> + <text class="regexp" x="54" y="5809">[#xABE8]</text> + <polygon points="43 5834 46 5825 104 5825 107 5834 104 5843 46 5843" class="regexp"/> + <text class="regexp" x="54" y="5837">[#xABED]</text> + <polygon points="43 5862 46 5853 102 5853 105 5862 102 5871 46 5871" class="regexp"/> + <text class="regexp" x="54" y="5865">[#xFB1E]</text> + <polygon points="43 5890 46 5881 140 5881 143 5890 140 5899 46 5899" class="regexp"/> + <text class="regexp" x="54" y="5893">[#xFE00-#xFE0F]</text> + <polygon points="43 5918 46 5909 140 5909 143 5918 140 5927 46 5927" class="regexp"/> + <text class="regexp" x="54" y="5921">[#xFE20-#xFE2F]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m90 0 h4 m0 0 h18 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 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m98 0 h4 m0 0 h10 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m96 0 h4 m0 0 h12 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m96 0 h4 m0 0 h12 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m60 0 h4 m0 0 h48 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m92 0 h4 m0 0 h16 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m94 0 h4 m0 0 h14 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m56 0 h4 m0 0 h52 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m90 0 h4 m0 0 h18 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m58 0 h4 m0 0 h50 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m66 0 h4 m0 0 h42 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 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 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m66 0 h4 m0 0 h42 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m102 0 h4 m0 0 h6 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m104 0 h4 m0 0 h4 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m106 0 h4 m0 0 h2 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m64 0 h4 m0 0 h44 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m62 0 h4 m0 0 h46 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m100 0 h4 m0 0 h8 m-126 -10 v20 m136 0 v-20 m-136 20 v8 m136 0 v-8 m-136 8 q0 10 10 10 m116 0 q10 0 10 -10 m-126 10 h4 m100 0 h4 m0 0 h8 m23 -5908 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="#mn" title="Mn" shape="rect">Mn</a>       ::= [#x300-#x36F#x483-#x487#x591-#x5BD#x5BF#x5C1-#x5C2#x5C4-#x5C5#x5C7#x610-#x61A#x64B-#x65F#x670#x6D6-#x6DC#x6DF-#x6E4#x6E7-#x6E8#x6EA-#x6ED#x711#x730-#x74A#x7A6-#x7B0#x7EB-#x7F3#x7FD#x816-#x819#x81B-#x823#x825-#x827#x829-#x82D#x859-#x85B#x898-#x89F#x8CA-#x8E1#x8E3-#x902#x93A#x93C#x941-#x948#x94D#x951-#x957#x962-#x963#x981#x9BC#x9C1-#x9C4#x9CD#x9E2-#x9E3#x9FE#xA01-#xA02#xA3C#xA41-#xA42#xA47-#xA48#xA4B-#xA4D#xA51#xA70-#xA71#xA75#xA81-#xA82#xABC#xAC1-#xAC5#xAC7-#xAC8#xACD#xAE2-#xAE3#xAFA-#xAFF#xB01#xB3C#xB3F#xB41-#xB44#xB4D#xB55-#xB56#xB62-#xB63#xB82#xBC0#xBCD#xC00#xC04#xC3C#xC3E-#xC40#xC46-#xC48#xC4A-#xC4D#xC55-#xC56#xC62-#xC63#xC81#xCBC#xCBF#xCC6#xCCC-#xCCD#xCE2-#xCE3#xD00-#xD01#xD3B-#xD3C#xD41-#xD44#xD4D#xD62-#xD63#xD81#xDCA#xDD2-#xDD4#xDD6#xE31#xE34-#xE3A#xE47-#xE4E#xEB1#xEB4-#xEBC#xEC8-#xECE#xF18-#xF19#xF35#xF37#xF39#xF71-#xF7E#xF80-#xF84#xF86-#xF87#xF8D-#xF97#xF99-#xFBC#xFC6#x102D-#x1030#x1032-#x1037#x1039-#x103A#x103D-#x103E#x1058-#x1059#x105E-#x1060#x1071-#x1074#x1082#x1085-#x1086#x108D#x109D#x135D-#x135F#x1712-#x1714#x1732-#x1733#x1752-#x1753#x1772-#x1773#x17B4-#x17B5#x17B7-#x17BD#x17C6#x17C9-#x17D3#x17DD#x180B-#x180D#x180F#x1885-#x1886#x18A9#x1920-#x1922#x1927-#x1928#x1932#x1939-#x193B#x1A17-#x1A18#x1A1B#x1A56#x1A58-#x1A5E#x1A60#x1A62#x1A65-#x1A6C#x1A73-#x1A7C#x1A7F#x1AB0-#x1ABD#x1ABF-#x1ACE#x1B00-#x1B03#x1B34#x1B36-#x1B3A#x1B3C#x1B42#x1B6B-#x1B73#x1B80-#x1B81#x1BA2-#x1BA5#x1BA8-#x1BA9#x1BAB-#x1BAD#x1BE6#x1BE8-#x1BE9#x1BED#x1BEF-#x1BF1#x1C2C-#x1C33#x1C36-#x1C37#x1CD0-#x1CD2#x1CD4-#x1CE0#x1CE2-#x1CE8#x1CED#x1CF4#x1CF8-#x1CF9#x1DC0-#x1DFF#x20D0-#x20DC#x20E1#x20E5-#x20F0#x2CEF-#x2CF1#x2D7F#x2DE0-#x2DFF#x302A-#x302D#x3099-#x309A#xA66F#xA674-#xA67D#xA69E-#xA69F#xA6F0-#xA6F1#xA802#xA806#xA80B#xA825-#xA826#xA82C#xA8C4-#xA8C5#xA8E0-#xA8F1#xA8FF#xA926-#xA92D#xA947-#xA951#xA980-#xA982#xA9B3#xA9B6-#xA9B9#xA9BC-#xA9BD#xA9E5#xAA29-#xAA2E#xAA31-#xAA32#xAA35-#xAA36#xAA43#xAA4C#xAA7C#xAAB0#xAAB2-#xAAB4#xAAB7-#xAAB8#xAABE-#xAABF#xAAC1#xAAEC-#xAAED#xAAF6#xABE5#xABE8#xABED#xFB1E#xFE00-#xFE0F#xFE20-#xFE2F]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierextend" title="unicodeidentifierextend">unicodeidentifierextend</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Nd +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="193" height="1029"> + <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> + <polygon points="43 38 46 29 132 29 135 38 132 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x660-#x669]</text> + <polygon points="43 66 46 57 130 57 133 66 130 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#x6F0-#x6F9]</text> + <polygon points="43 94 46 85 134 85 137 94 134 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#x7C0-#x7C9]</text> + <polygon points="43 122 46 113 130 113 133 122 130 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#x966-#x96F]</text> + <polygon points="43 150 46 141 130 141 133 150 130 159 46 159" class="regexp"/> + <text class="regexp" x="54" y="153">[#x9E6-#x9EF]</text> + <polygon points="43 178 46 169 130 169 133 178 130 187 46 187" class="regexp"/> + <text class="regexp" x="54" y="181">[#xA66-#xA6F]</text> + <polygon points="43 206 46 197 130 197 133 206 130 215 46 215" class="regexp"/> + <text class="regexp" x="54" y="209">[#xAE6-#xAEF]</text> + <polygon points="43 234 46 225 130 225 133 234 130 243 46 243" class="regexp"/> + <text class="regexp" x="54" y="237">[#xB66-#xB6F]</text> + <polygon points="43 262 46 253 130 253 133 262 130 271 46 271" class="regexp"/> + <text class="regexp" x="54" y="265">[#xBE6-#xBEF]</text> + <polygon points="43 290 46 281 132 281 135 290 132 299 46 299" class="regexp"/> + <text class="regexp" x="54" y="293">[#xC66-#xC6F]</text> + <polygon points="43 318 46 309 132 309 135 318 132 327 46 327" class="regexp"/> + <text class="regexp" x="54" y="321">[#xCE6-#xCEF]</text> + <polygon points="43 346 46 337 132 337 135 346 132 355 46 355" class="regexp"/> + <text class="regexp" x="54" y="349">[#xD66-#xD6F]</text> + <polygon points="43 374 46 365 132 365 135 374 132 383 46 383" class="regexp"/> + <text class="regexp" x="54" y="377">[#xDE6-#xDEF]</text> + <polygon points="43 402 46 393 132 393 135 402 132 411 46 411" class="regexp"/> + <text class="regexp" x="54" y="405">[#xE50-#xE59]</text> + <polygon points="43 430 46 421 134 421 137 430 134 439 46 439" class="regexp"/> + <text class="regexp" x="54" y="433">[#xED0-#xED9]</text> + <polygon points="43 458 46 449 130 449 133 458 130 467 46 467" class="regexp"/> + <text class="regexp" x="54" y="461">[#xF20-#xF29]</text> + <polygon points="43 486 46 477 144 477 147 486 144 495 46 495" class="regexp"/> + <text class="regexp" x="54" y="489">[#x1040-#x1049]</text> + <polygon points="43 514 46 505 144 505 147 514 144 523 46 523" class="regexp"/> + <text class="regexp" x="54" y="517">[#x1090-#x1099]</text> + <polygon points="43 542 46 533 144 533 147 542 144 551 46 551" class="regexp"/> + <text class="regexp" x="54" y="545">[#x17E0-#x17E9]</text> + <polygon points="43 570 46 561 144 561 147 570 144 579 46 579" class="regexp"/> + <text class="regexp" x="54" y="573">[#x1810-#x1819]</text> + <polygon points="43 598 46 589 142 589 145 598 142 607 46 607" class="regexp"/> + <text class="regexp" x="54" y="601">[#x1946-#x194F]</text> + <polygon points="43 626 46 617 146 617 149 626 146 635 46 635" class="regexp"/> + <text class="regexp" x="54" y="629">[#x19D0-#x19D9]</text> + <polygon points="43 654 46 645 144 645 147 654 144 663 46 663" class="regexp"/> + <text class="regexp" x="54" y="657">[#x1A80-#x1A89]</text> + <polygon points="43 682 46 673 144 673 147 682 144 691 46 691" class="regexp"/> + <text class="regexp" x="54" y="685">[#x1A90-#x1A99]</text> + <polygon points="43 710 46 701 144 701 147 710 144 719 46 719" class="regexp"/> + <text class="regexp" x="54" y="713">[#x1B50-#x1B59]</text> + <polygon points="43 738 46 729 144 729 147 738 144 747 46 747" class="regexp"/> + <text class="regexp" x="54" y="741">[#x1BB0-#x1BB9]</text> + <polygon points="43 766 46 757 146 757 149 766 146 775 46 775" class="regexp"/> + <text class="regexp" x="54" y="769">[#x1C40-#x1C49]</text> + <polygon points="43 794 46 785 146 785 149 794 146 803 46 803" class="regexp"/> + <text class="regexp" x="54" y="797">[#x1C50-#x1C59]</text> + <polygon points="43 822 46 813 144 813 147 822 144 831 46 831" class="regexp"/> + <text class="regexp" x="54" y="825">[#xA620-#xA629]</text> + <polygon points="43 850 46 841 146 841 149 850 146 859 46 859" class="regexp"/> + <text class="regexp" x="54" y="853">[#xA8D0-#xA8D9]</text> + <polygon points="43 878 46 869 144 869 147 878 144 887 46 887" class="regexp"/> + <text class="regexp" x="54" y="881">[#xA900-#xA909]</text> + <polygon points="43 906 46 897 146 897 149 906 146 915 46 915" class="regexp"/> + <text class="regexp" x="54" y="909">[#xA9D0-#xA9D9]</text> + <polygon points="43 934 46 925 142 925 145 934 142 943 46 943" class="regexp"/> + <text class="regexp" x="54" y="937">[#xA9F0-#xA9F9]</text> + <polygon points="43 962 46 953 144 953 147 962 144 971 46 971" class="regexp"/> + <text class="regexp" x="54" y="965">[#xAA50-#xAA59]</text> + <polygon points="43 990 46 981 142 981 145 990 142 999 46 999" class="regexp"/> + <text class="regexp" x="54" y="993">[#xABF0-#xABF9]</text> + <polygon points="43 1018 46 1009 140 1009 143 1018 140 1027 46 1027" class="regexp"/> + <text class="regexp" x="54" y="1021">[#xFF10-#xFF19]</text> + <path class="line" d="m17 10 h2 m20 0 h4 m42 0 h4 m0 0 h64 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m94 0 h4 m0 0 h12 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m90 0 h4 m0 0 h16 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 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 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m104 0 h4 m0 0 h2 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m102 0 h4 m0 0 h4 m-124 -10 v20 m134 0 v-20 m-134 20 v8 m134 0 v-8 m-134 8 q0 10 10 10 m114 0 q10 0 10 -10 m-124 10 h4 m100 0 h4 m0 0 h6 m23 -1008 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="#nd" title="Nd" shape="rect">Nd</a>       ::= [0-9#x660-#x669#x6F0-#x6F9#x7C0-#x7C9#x966-#x96F#x9E6-#x9EF#xA66-#xA6F#xAE6-#xAEF#xB66-#xB6F#xBE6-#xBEF#xC66-#xC6F#xCE6-#xCEF#xD66-#xD6F#xDE6-#xDEF#xE50-#xE59#xED0-#xED9#xF20-#xF29#x1040-#x1049#x1090-#x1099#x17E0-#x17E9#x1810-#x1819#x1946-#x194F#x19D0-#x19D9#x1A80-#x1A89#x1A90-#x1A99#x1B50-#x1B59#x1BB0-#x1BB9#x1C40-#x1C49#x1C50-#x1C59#xA620-#xA629#xA8D0-#xA8D9#xA900-#xA909#xA9D0-#xA9D9#xA9F0-#xA9F9#xAA50-#xAA59#xABF0-#xABF9#xFF10-#xFF19]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#letter" title="letter">letter</a></li><li><a href="#unicodeidentifierextend" title="unicodeidentifierextend">unicodeidentifierextend</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + Pc +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="189" height="133"> + <polygon points="9 10 1 6 1 14"/> + <polygon points="17 10 9 6 9 14"/> + <polygon points="43 10 46 1 142 1 145 10 142 19 46 19" class="regexp"/> + <text class="regexp" x="54" y="13">[#x203F-#x2040]</text> + <polygon points="43 38 46 29 104 29 107 38 104 47 46 47" class="regexp"/> + <text class="regexp" x="54" y="41">[#x2054]</text> + <polygon points="43 66 46 57 142 57 145 66 142 75 46 75" class="regexp"/> + <text class="regexp" x="54" y="69">[#xFE33-#xFE34]</text> + <polygon points="43 94 46 85 142 85 145 94 142 103 46 103" class="regexp"/> + <text class="regexp" x="54" y="97">[#xFE4D-#xFE4F]</text> + <polygon points="43 122 46 113 100 113 103 122 100 131 46 131" class="regexp"/> + <text class="regexp" x="54" y="125">[#xFF3F]</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 m64 0 h4 m0 0 h38 m-120 -10 v20 m130 0 v-20 m-130 20 v8 m130 0 v-8 m-130 8 q0 10 10 10 m110 0 q10 0 10 -10 m-120 10 h4 m102 0 h4 m-120 -10 v20 m130 0 v-20 m-130 20 v8 m130 0 v-8 m-130 8 q0 10 10 10 m110 0 q10 0 10 -10 m-120 10 h4 m102 0 h4 m-120 -10 v20 m130 0 v-20 m-130 20 v8 m130 0 v-8 m-130 8 q0 10 10 10 m110 0 q10 0 10 -10 m-120 10 h4 m60 0 h4 m0 0 h42 m23 -112 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="#pc" title="Pc" shape="rect">Pc</a>       ::= [#x203F-#x2040#x2054#xFE33-#xFE34#xFE4D-#xFE4F#xFF3F]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#unicodeidentifierextend" title="unicodeidentifierextend">unicodeidentifierextend</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + ESC +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="121" height="189"> + <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="63" y="1" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="13">n</text> + <rect x="63" y="29" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="41">t</text> + <rect x="63" y="57" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="69">b</text> + <rect x="63" y="85" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="97">r</text> + <rect x="63" y="113" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="125">f</text> + <rect x="63" y="141" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="153">\</text> + <rect x="63" y="169" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="67" y="181">"</text> + <path class="line" d="m17 10 h2 m0 0 h4 m12 0 h4 m20 0 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 m10 0 h4 m0 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 m12 0 h4 m0 0 h2 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 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 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 m12 0 h4 m0 0 h2 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 m12 0 h4 m0 0 h2 m23 -168 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="#esc" title="ESC" shape="rect">ESC</a>      ::= '\' [ntbrf\"]</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#s-char-literal" title="s-char-literal">s-char-literal</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + S_CHAR_LITERAL +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="315" height="222"> + <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">U</text> + <rect x="43" y="62" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="74">E</text> + <rect x="43" y="90" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="102">N</text> + <rect x="43" y="118" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="130">R</text> + <rect x="43" y="146" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="158">B</text> + <rect x="43" y="174" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="186">RB</text> + <rect x="43" y="202" width="30" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="214">_utf8</text> + <rect x="101" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="105" y="25">'</text><a xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#esc" xlink:title="ESC" shape="rect"> + <rect x="177" y="13" width="28" height="18" class="nonterminal"/> + <text class="nonterminal" x="181" y="25">ESC</text></a><rect x="177" y="41" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="53">\'</text> + <polygon points="177 78 180 69 212 69 215 78 212 87 180 87" class="regexp"/> + <text class="regexp" x="188" y="81">[^'\]</text> + <rect x="177" y="111" width="10" height="18" class="terminal" rx="4"/> + <text class="terminal" x="181" y="123">''</text> + <polygon points="177 148 180 139 210 139 213 148 210 157 180 157" class="regexp"/> + <text class="regexp" x="188" y="151">[^']</text> + <rect x="283" y="13" width="8" height="18" class="terminal" rx="4"/> + <text class="terminal" x="287" y="25">'</text> + <path class="line" d="m17 22 h2 m20 0 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 m14 0 h4 m0 0 h16 m-48 -10 v20 m58 0 v-20 m-58 20 v8 m58 0 v-8 m-58 8 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m12 0 h4 m0 0 h18 m-48 -10 v20 m58 0 v-20 m-58 20 v8 m58 0 v-8 m-58 8 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m14 0 h4 m0 0 h16 m-48 -10 v20 m58 0 v-20 m-58 20 v8 m58 0 v-8 m-58 8 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m14 0 h4 m0 0 h16 m-48 -10 v20 m58 0 v-20 m-58 20 v8 m58 0 v-8 m-58 8 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m14 0 h4 m0 0 h16 m-48 -10 v20 m58 0 v-20 m-58 20 v8 m58 0 v-8 m-58 8 q0 10 10 10 m38 0 q10 0 10 -10 m-48 10 h4 m20 0 h4 m0 0 h10 m-48 -10 v20 m58 0 v-20 m-58 20 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 m20 -189 h4 m8 0 h4 m60 0 h4 m28 0 h4 m0 0 h10 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 m14 0 h4 m0 0 h24 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 m-86 -56 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m86 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-86 0 h10 m0 0 h76 m-126 21 h20 m126 0 h20 m-166 0 q10 0 10 10 m146 0 q0 -10 10 -10 m-156 10 v78 m146 0 v-78 m-146 78 q0 10 10 10 m126 0 q10 0 10 -10 m-96 10 h4 m10 0 h4 m0 0 h26 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-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 m20 21 h2 m-136 -10 v20 m146 0 v-20 m-146 20 v29 m146 0 v-29 m-146 29 q0 10 10 10 m126 0 q10 0 10 -10 m-136 10 h10 m0 0 h116 m20 -147 h4 m8 0 h4 m3 0 h-3"/> + <polygon points="305 22 313 18 313 26"/> + <polygon points="305 22 297 18 297 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="#s-char-literal" title="S_CHAR_LITERAL" shape="rect">S_CHAR_LITERAL</a></div> + <div>         ::= ( [UENRB] | 'RB' | '_utf8' )? "'" ( ( <a href="#esc" title="ESC" shape="rect">ESC</a> | "\'" | [^'\] )* | ( "''" | [^'] )+ ) "'"</div></xhtml:code></xhtml:div> + </xhtml:p></td><td style="width:33%" valign="top"><div class="ebnf"> + Referenced by: + <ul><li><a href="#alist" title="alist">alist</a></li><li><a href="#alias" title="alias">alias</a></li><li><a href="#alterexpression" title="alterexpression">alterexpression</a></li><li><a href="#altersession" title="altersession">altersession</a></li><li><a href="#coldatatype" title="coldatatype">coldatatype</a></li><li><a href="#comment" title="comment">comment</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#datetimeliteralexpression" title="datetimeliteralexpression">datetimeliteralexpression</a></li><li><a href="#extractexpression" title="extractexpression">extractexpression</a></li><li><a href="#fulltextsearch" title="fulltextsearch">fulltextsearch</a></li><li><a href="#inexpression" title="inexpression">inexpression</a></li><li><a href="#intervalexpression" title="intervalexpression">intervalexpression</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#jsonexpression" title="jsonexpression">jsonexpression</a></li><li><a href="#jsonfunction" title="jsonfunction">jsonfunction</a></li><li><a href="#likeexpression" title="likeexpression">likeexpression</a></li><li><a href="#mysqlgroupconcat" title="mysqlgroupconcat">mysqlgroupconcat</a></li><li><a href="#plainselect" title="plainselect">plainselect</a></li><li><a href="#primaryexpression" title="primaryexpression">primaryexpression</a></li><li><a href="#rollbackstatement" title="rollbackstatement">rollbackstatement</a></li><li><a href="#similartoexpression" title="similartoexpression">similartoexpression</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + S_QUOTED_IDENTIFIER +====================================================================================================================== + + +.. raw:: html + + <svg xmlns="http://www.w3.org/2000/svg" width="307" height="195"> + <polygon points="9 22 1 18 1 26"/> + <polygon points="17 22 9 18 9 26"/> + <rect x="43" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="25">"</text> + <polygon points="103 22 106 13 178 13 181 22 178 31 106 31" class="regexp"/> + <text class="regexp" x="114" y="25">[^"#xA#xD]</text> + <rect x="229" y="13" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="233" y="25">"</text> + <rect x="43" y="67" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="79">$$</text> + <polygon points="111 76 114 67 186 67 189 76 186 85 114 85" class="regexp"/> + <text class="regexp" x="122" y="79">[^"#xA#xD]</text> + <rect x="237" y="67" width="20" height="18" class="terminal" rx="4"/> + <text class="terminal" x="241" y="79">$$</text> + <rect x="43" y="121" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="133">`</text> + <polygon points="85 130 88 121 162 121 165 130 162 139 88 139" class="regexp"/> + <text class="regexp" x="96" y="133">[^`#xA#xD]</text> + <rect x="193" y="121" width="14" height="18" class="terminal" rx="4"/> + <text class="terminal" x="197" y="133">`</text> + <rect x="43" y="163" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="47" y="175">[</text> + <polygon points="103 172 106 163 200 163 203 172 200 181 106 181" class="regexp"/> + <text class="regexp" x="114" y="175">[^#x5D#xA#xD]</text> + <rect x="251" y="163" width="12" height="18" class="terminal" rx="4"/> + <text class="terminal" x="255" y="175">]</text> + <path class="line" d="m17 22 h2 m20 0 h4 m12 0 h4 m40 0 h4 m78 0 h4 m-106 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m86 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-86 0 h10 m0 0 h76 m-126 21 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 m0 0 h22 m-248 0 h20 m228 0 h20 m-268 0 q10 0 10 10 m248 0 q0 -10 10 -10 m-258 10 v34 m248 0 v-34 m-248 34 q0 10 10 10 m228 0 q10 0 10 -10 m-238 10 h4 m20 0 h4 m40 0 h4 m78 0 h4 m-106 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m86 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-86 0 h10 m0 0 h76 m-126 21 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 m20 0 h4 m0 0 h6 m-238 -10 v20 m248 0 v-20 m-248 20 v34 m248 0 v-34 m-248 34 q0 10 10 10 m228 0 q10 0 10 -10 m-238 10 h4 m14 0 h4 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 m20 21 h4 m14 0 h4 m0 0 h56 m-238 -10 v20 m248 0 v-20 m-248 20 v22 m248 0 v-22 m-248 22 q0 10 10 10 m228 0 q10 0 10 -10 m-238 10 h4 m12 0 h4 m40 0 h4 m100 0 h4 m-128 0 l20 0 m-1 0 q-9 0 -9 -10 l0 -1 q0 -10 10 -10 m108 21 l20 0 m-20 0 q10 0 10 -10 l0 -1 q0 -10 -10 -10 m-108 0 h10 m0 0 h98 m-148 21 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 h10 m0 0 h138 m20 -21 h4 m12 0 h4 m23 -150 h-3"/> + <polygon points="297 22 305 18 305 26"/> + <polygon points="297 22 289 18 289 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="#s-quoted-identifier" title="S_QUOTED_IDENTIFIER" shape="rect">S_QUOTED_IDENTIFIER</a></div> + <div>         ::= '"' [^"#xA#xD]* '"'</div> + <div>           | '$$' [^"#xA#xD]* '$$'</div> + <div>           | '`' [^`#xA#xD]+ '`'</div> + <div>           | '[' [^#x5D#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="#alterexpression" title="alterexpression">alterexpression</a></li><li><a href="#coldatatype" title="coldatatype">coldatatype</a></li><li><a href="#createparameter" title="createparameter">createparameter</a></li><li><a href="#createschema" title="createschema">createschema</a></li><li><a href="#jsonaggregatefunction" title="jsonaggregatefunction">jsonaggregatefunction</a></li><li><a href="#pathspecification" title="pathspecification">pathspecification</a></li><li><a href="#relobjectnamewithoutvalue" title="relobjectnamewithoutvalue">relobjectnamewithoutvalue</a></li></ul></div></td></tr></tbody></table> + + +====================================================================================================================== + EOF +====================================================================================================================== + + +.. raw:: html + + <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="#statement" title="statement">statement</a></li><li><a href="#statements" title="statements">statements</a></li></ul></div></td></tr></tbody></table> + + \ No newline at end of file diff --git a/src/site/sphinx/usage.rst b/src/site/sphinx/usage.rst new file mode 100644 index 000000000..6a54b4e62 --- /dev/null +++ b/src/site/sphinx/usage.rst @@ -0,0 +1,276 @@ +****************************** +How to use it +****************************** + +.. hint:: + + 1) **Quoting:** Double Quotes ``".."`` are used for quoting identifiers. Parsing T-SQL on **MS SQL Server** or **Sybase** with Squared Brackets ``[..]`` depends on ``Squared Bracket Quotation`` as shown in section :ref:`Define the Parser Features` below. + + 2) JSQLParser uses a more restrictive list of ``Reserved Keywords`` and such keywords will **need to be quoted**. + + 3) **Escaping:** JSQLParser pre-defines standard compliant **Single Quote** ``'..`` **Escape Character**. Additional Back-slash ``\..`` Escaping needs to be activated by setting the ``BackSlashEscapeCharacter`` parser feature. See section :ref:`Define the Parser Features` below for details. + + 4) Oracle Alternative Quoting is partially supported for common brackets such as ``q'{...}'``, ``q'[...]'``, ``q'(...)'`` and ``q''...''``. + + 5) Supported Statement Separators are Semicolon ``\;``, ``GO``, Slash ``\/`` or 2 empty lines. + + +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/JSQLParser/JSqlParser.git + cd jsqlformatter + mvn install + + .. tab:: Gradle + + .. code-block:: shell + + git clone https://github.com/JSQLParser/JSqlParser.git + cd jsqlformatter + gradle build + + + +Build Dependencies +============================== + +.. tabs:: + + + .. tab:: Maven Release + + .. code-block:: xml + :substitutions: + + <dependency> + <groupId>com.github.jsqlparser</groupId> + <artifactId>jsqlparser</artifactId> + <version>|JSQLPARSER_VERSION|</version> + </dependency> + + .. tab:: Maven Snapshot + + .. code-block:: xml + :substitutions: + + <repositories> + <repository> + <id>jsqlparser-snapshots</id> + <snapshots> + <enabled>true</enabled> + </snapshots> + <url>https://oss.sonatype.org/content/groups/public/</url> + </repository> + </repositories> + <dependency> + <groupId>com.github.jsqlparser</groupId> + <artifactId>jsqlparser</artifactId> + <version>|JSQLPARSER_SNAPSHOT_VERSION|</version> + </dependency> + + .. tab:: Gradle Stable + + .. code-block:: groovy + :substitutions: + + repositories { + mavenCentral() + } + + dependencies { + implementation 'com.github.jsqlparser:jsqlparser:|JSQLPARSER_VERSION|' + } + + .. tab:: Gradle Snapshot + + .. code-block:: groovy + :substitutions: + + repositories { + maven { + url = uri('https://oss.sonatype.org/content/groups/public/') + } + } + + dependencies { + implementation 'com.github.jsqlparser:jsqlparser:|JSQLPARSER_SNAPSHOT_VERSION|' + } + + +Parse a SQL Statements +============================== + +Parse the SQL Text into Java Objects: + +.. code-block:: java + + String sqlStr="select 1 from dual where a=b"; + + Statement statement = CCJSqlParserUtil.parse(sqlStr); + if (statement instanceof Select) { + Select select = (Select) statement; + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + + SelectExpressionItem selectExpressionItem = (SelectExpressionItem) plainSelect.getSelectItems().get(0); + Assertions.assertEquals( new LongValue(1), selectExpressionItem.getExpression()); + + Table table = (Table) plainSelect.getFromItem(); + Assertions.assertEquals("dual", table.getName()); + + EqualsTo equalsTo = (EqualsTo) plainSelect.getWhere(); + Column a = (Column) equalsTo.getLeftExpression(); + Column b = (Column) equalsTo.getRightExpression(); + Assertions.assertEquals("a", a.getColumnName()); + Assertions.assertEquals("b", b.getColumnName()); + } + + +For guidance with the API, use `JSQLFormatter <http://jsqlformatter.manticore-projects.com>`_ to visualize the Traversable Tree of Java Objects: + +.. raw:: html + + <div class="highlight"> + <pre> + SQL Text + └─<font color="#739FCF"><b>Statements</b></font>: <font color="#836B00">net.sf.jsqlparser.statement.select.Select</font> + └─<font color="#739FCF"><b>selectBody</b></font>: <font color="#836B00">net.sf.jsqlparser.statement.select.PlainSelect</font> + ├─<font color="#739FCF"><b>selectItems</b></font> -> Collection<<font color="#836B00">SelectExpressionItem</font>> + │ └─<font color="#739FCF"><b>selectItems</b></font>: <font color="#836B00">net.sf.jsqlparser.statement.select.SelectExpressionItem</font> + │ └─<font color="#739FCF"><b>LongValue</b></font>: <font color="#836B00">1</font> + ├─<font color="#739FCF"><b>Table</b></font>: <font color="#836B00">dual</font> + └─<font color="#739FCF"><b>where</b></font>: <font color="#836B00">net.sf.jsqlparser.expression.operators.relational.EqualsTo</font> + ├─<font color="#739FCF"><b>Column</b></font>: <font color="#836B00">a</font> + └─<font color="#739FCF"><b>Column</b></font>: <font color="#836B00">b</font> + </pre> + </div> + + +Use the Visitor Patterns +============================== + +Traverse the Java Object Tree using the Visitor Patterns: + +.. code-block:: java + + // Define an Expression Visitor reacting on any Expression + // Overwrite the visit() methods for each Expression Class + ExpressionVisitorAdapter expressionVisitorAdapter = new ExpressionVisitorAdapter() { + public void visit(EqualsTo equalsTo) { + equalsTo.getLeftExpression().accept(this); + equalsTo.getRightExpression().accept(this); + } + public void visit(Column column) { + System.out.println("Found a Column " + column.getColumnName()); + } + }; + + // Define a Select Visitor reacting on a Plain Select invoking the Expression Visitor on the Where Clause + SelectVisitorAdapter selectVisitorAdapter = new SelectVisitorAdapter() { + @Override + public void visit(PlainSelect plainSelect) { + plainSelect.getWhere().accept(expressionVisitorAdapter); + } + }; + + // Define a Statement Visitor for dispatching the Statements + StatementVisitorAdapter statementVisitor = new StatementVisitorAdapter() { + public void visit(Select select) { + select.getSelectBody().accept(selectVisitorAdapter); + } + }; + + String sqlStr="select 1 from dual where a=b"; + Statement stmt = CCJSqlParserUtil.parse(sqlStr); + + // Invoke the Statement Visitor + stmt.accept(statementVisitor); + + +Build a SQL Statements +============================== + +Build any SQL Statement from Java Code using a fluent API: + +.. code-block:: java + + String expectedSQLStr = "SELECT 1 FROM dual t WHERE a = b"; + + // Step 1: generate the Java Object Hierarchy for + SelectExpressionItem selectExpressionItem = + new SelectExpressionItem().withExpression(new LongValue().withValue(1)); + + Table table = new Table().withName("dual").withAlias(new Alias("t", false)); + + Column columnA = new Column().withColumnName("a"); + Column columnB = new Column().withColumnName("b"); + Expression whereExpression = + new EqualsTo().withLeftExpression(columnA).withRightExpression(columnB); + + PlainSelect plainSelect = new PlainSelect().addSelectItems(selectExpressionItem) + .withFromItem(table).withWhere(whereExpression); + Select select = new Select().withSelectBody(plainSelect); + + // Step 2a: Print into a SQL Statement + Assertions.assertEquals(expectedSQLStr, select.toString()); + + // Step 2b: De-Parse into a SQL Statement + StringBuilder builder = new StringBuilder(); + StatementDeParser deParser = new StatementDeParser(builder); + deParser.visit(select); + + Assertions.assertEquals(expectedSQLStr, builder.toString()); + + +Define the Parser Features +============================== + +JSQLParser interprets Squared Brackets ``[..]`` as Arrays, which does not work with MS SQL Server and T-SQL. Please use the Parser Features to instruct JSQLParser to read Squared Brackets as Quotes instead. + +JSQLParser allows for standard compliant Single Quote ``'..`` Escaping. Additional Back-slash ``\..`` Escaping needs to be activated by setting the ``BackSlashEscapeCharacter`` parser feature. + +Additionally there are Features to control the Parser's effort at the cost of the performance. + +.. code-block:: java + + String sqlStr="select 1 from [sample_table] where [a]=[b]"; + + // T-SQL Square Bracket Quotation + Statement stmt = CCJSqlParserUtil.parse( + sqlStr + , parser -> parser + .withSquareBracketQuotation(true) + ); + + // Set Parser Timeout to 6000 ms + Statement stmt1 = CCJSqlParserUtil.parse( + sqlStr + , parser -> parser + .withSquareBracketQuotation(true) + .withTimeOut(6000) + ); + + // Allow Complex Parsing (which allows nested Expressions, but is much slower) + Statement stmt2 = CCJSqlParserUtil.parse( + sqlStr + , parser -> parser + .withSquareBracketQuotation(true) + .withAllowComplexParsing(true) + .withTimeOut(6000) + ); + + // Allow Back-slash escaping + sqlStr="SELECT ('\\'Clark\\'', 'Kent')"; + Statement stmt2 = CCJSqlParserUtil.parse( + sqlStr + , parser -> parser + .withBackslashEscapeCharacter(true) + ); diff --git a/src/test/java/net/sf/jsqlparser/expression/CaseExpressionTest.java b/src/test/java/net/sf/jsqlparser/expression/CaseExpressionTest.java index db9ec7d2a..84ab898db 100644 --- a/src/test/java/net/sf/jsqlparser/expression/CaseExpressionTest.java +++ b/src/test/java/net/sf/jsqlparser/expression/CaseExpressionTest.java @@ -81,4 +81,29 @@ public void testCaseAndSwitch() throws JSQLParserException { public void testCaseOrSwitch() throws JSQLParserException { TestUtils.assertExpressionCanBeParsedAndDeparsed("CASE true OR false WHEN true THEN 1 ELSE 2 END", true); } + + @Test + public void testCaseInsideBrackets() throws JSQLParserException { + String sqlStr = "SELECT ( CASE\n" + + " WHEN something\n" + + " THEN CASE\n" + + " WHEN something2\n" + + " THEN 1\n" + + " ELSE 0\n" + + " END + 1\n" + + " ELSE 0\n" + + " END ) + 1 \n" + + "FROM test"; + + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + sqlStr = "SELECT\n" + + "(CASE WHEN FIELD_A=0 THEN FIELD_B\n" + + "WHEN FIELD_C >FIELD_D THEN (CASE WHEN FIELD_A>0 THEN\n" + + "(FIELD_B)/(FIELD_A/(DATEDIFF(DAY,:started,:end)+1))\n" + + "ELSE 0 END)-FIELD_D ELSE 0 END)*FIELD_A/(DATEDIFF(DAY,:started,:end)+1) AS UNNECESSARY_COMPLEX_EXPRESSION\n" + + "FROM TEST"; + + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + } } diff --git a/src/test/java/net/sf/jsqlparser/expression/LikeExpressionTest.java b/src/test/java/net/sf/jsqlparser/expression/LikeExpressionTest.java index 0ff94ff8b..3840d0935 100644 --- a/src/test/java/net/sf/jsqlparser/expression/LikeExpressionTest.java +++ b/src/test/java/net/sf/jsqlparser/expression/LikeExpressionTest.java @@ -10,8 +10,11 @@ package net.sf.jsqlparser.expression; import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.test.TestUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.function.Executable; /** * @@ -25,4 +28,117 @@ public void testLikeWithEscapeExpressionIssue420() throws JSQLParserException { TestUtils.assertSqlCanBeParsedAndDeparsed("select * from dual where a LIKE ?1 ESCAPE ?2", true); } + + @Test + public void testEscapeExpressionIssue1638() throws JSQLParserException { + String sqlStr = "select case \n" + + " when id_portfolio like '%\\_1' escape '\\' then '1'\n" + + " end"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(false) + ); + + Assertions.assertThrows(JSQLParserException.class, new Executable() { + @Override + public void execute() throws Throwable { + CCJSqlParserUtil.parse( + sqlStr + , parser -> parser.withBackslashEscapeCharacter(true) + ); + } + }); + } + + @Test + public void testEscapingIssue1209() throws JSQLParserException { + String sqlStr="INSERT INTO \"a\".\"b\"(\"c\", \"d\", \"e\") VALUES ('c c\\', 'dd', 'ee\\')"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(false) + ); + } + + @Test + public void testEscapingIssue1173() throws JSQLParserException { + String sqlStr="update PARAM_TBL set PARA_DESC = null where PARA_DESC = '\\' and DEFAULT_VALUE = '\\'"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(false) + ); + } + + @Test + public void testEscapingIssue1172() throws JSQLParserException { + String sqlStr="SELECT A ALIA1, CASE WHEN B LIKE 'ABC\\_%' ESCAPE '\\' THEN 'DEF' ELSE 'CCCC' END AS OBJ_SUB_TYPE FROM TABLE2"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(false) + ); + } + + @Test + public void testEscapingIssue832() throws JSQLParserException { + String sqlStr="SELECT * FROM T1 WHERE (name LIKE ? ESCAPE '\\') AND (description LIKE ? ESCAPE '\\')"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(false) + ); + } + + @Test + public void testEscapingIssue827() throws JSQLParserException { + String sqlStr="INSERT INTO my_table (my_column_1, my_column_2) VALUES ('my_value_1\\', 'my_value_2')"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(false) + ); + } + + @Test + public void testEscapingIssue578() throws JSQLParserException { + String sqlStr="SELECT * FROM t1 WHERE UPPER(t1.TIPCOR_A8) like ? ESCAPE '' ORDER BY PERFILB2||TRANSLATE(UPPER(AP1SOL10 || ' ' || AP2SOL10 || ',' || NOMSOL10), '?', 'A') asc"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(false) + ); + } + + @Test + public void testEscapingIssue875() throws JSQLParserException { + String sqlStr="insert into standard_table(gmt_create, gmt_modified, config_name, standard_code) values (now(), now(), null, 'if \n" + + "@fac.sql_type in \n" + + "[ ''UPDATE'', ''DELETE'', ''INSERT'', ''INSERT_SELECT''] \n" + + "then \n" + + "@act.allow_submit \n" + + "end \n" + + "')" + ; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(false) + ); + + sqlStr="insert into standard_table(gmt_create, gmt_modified, config_name, standard_code) values (now(), now(), null, 'if \n" + + "@fac.sql_type in \n" + + "[ \\'UPDATE\\', \\'DELETE\\', \\'INSERT\\', \\'INSERT_SELECT\\'] \n" + + "then \n" + + "@act.allow_submit \n" + + "end \n" + + "')" + ; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(true) + ); + } } diff --git a/src/test/java/net/sf/jsqlparser/expression/OverlapsConditionTest.java b/src/test/java/net/sf/jsqlparser/expression/OverlapsConditionTest.java new file mode 100644 index 000000000..d91de5add --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/expression/OverlapsConditionTest.java @@ -0,0 +1,27 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2022 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.expression; + +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.test.TestUtils; +import org.junit.jupiter.api.Test; + +public class OverlapsConditionTest { + + @Test + public void testOverlapsCondition() throws JSQLParserException { + TestUtils.assertExpressionCanBeParsedAndDeparsed("(t1.start, t1.end) overlaps (t2.start, t2.end)", true); + + TestUtils.assertSqlCanBeParsedAndDeparsed("select * from dual where (start_one, end_one) overlaps (start_two, end_two)", true); + + TestUtils.assertSqlCanBeParsedAndDeparsed("select * from t1 left join t2 on (t1.start, t1.end) overlaps (t2.start, t2.end)", true); + + } +} diff --git a/src/test/java/net/sf/jsqlparser/expression/SafeCastExpressionTest.java b/src/test/java/net/sf/jsqlparser/expression/SafeCastExpressionTest.java new file mode 100644 index 000000000..8630c6264 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/expression/SafeCastExpressionTest.java @@ -0,0 +1,23 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2022 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.expression; + +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.test.TestUtils; +import org.junit.jupiter.api.Test; + +public class SafeCastExpressionTest { + + @Test + public void testSafeCast() throws JSQLParserException { + TestUtils.assertExpressionCanBeParsedAndDeparsed("SAFE_CAST(ROW(dataid, value, calcMark) AS ROW(datapointid CHAR, value CHAR, calcMark CHAR))", true); + TestUtils.assertExpressionCanBeParsedAndDeparsed("SAFE_CAST(ROW(dataid, value, calcMark) AS testcol)", true); + } +} diff --git a/src/test/java/net/sf/jsqlparser/expression/StringValueTest.java b/src/test/java/net/sf/jsqlparser/expression/StringValueTest.java index 7eb59fbf4..c103916bc 100644 --- a/src/test/java/net/sf/jsqlparser/expression/StringValueTest.java +++ b/src/test/java/net/sf/jsqlparser/expression/StringValueTest.java @@ -10,6 +10,9 @@ package net.sf.jsqlparser.expression; import static org.junit.jupiter.api.Assertions.assertEquals; + +import net.sf.jsqlparser.*; +import net.sf.jsqlparser.test.*; import org.junit.jupiter.api.Test; /** @@ -57,10 +60,31 @@ private void checkStringValue(String original, String expectedValue, String expe assertEquals(expectedValue, v.getValue()); assertEquals(expectedPrefix, v.getPrefix()); } - + @Test public void testIssue1566EmptyStringValue() { StringValue v = new StringValue("'"); assertEquals("'", v.getValue()); } + + @Test + public void testOracleAlternativeQuoting() throws JSQLParserException { + String sqlStr = "COMMENT ON COLUMN EMP.NAME IS q'{Na'm\\e}'"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + sqlStr = "COMMENT ON COLUMN EMP.NAME IS q'(Na'm\\e)'"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + sqlStr = "COMMENT ON COLUMN EMP.NAME IS q'[Na'm\\e]'"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + sqlStr = "COMMENT ON COLUMN EMP.NAME IS q''Na'm\\e]''"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + sqlStr = "select q'{Its good!}' from dual"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + sqlStr = "select q'{It's good!}' from dual"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + } } diff --git a/src/test/java/net/sf/jsqlparser/parser/ParserKeywordsUtilsTest.java b/src/test/java/net/sf/jsqlparser/parser/ParserKeywordsUtilsTest.java new file mode 100644 index 000000000..c48b3ef11 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/parser/ParserKeywordsUtilsTest.java @@ -0,0 +1,202 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2022 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.parser; + +import org.javacc.jjtree.JJTree; +import org.javacc.parser.JavaCCGlobals; +import org.javacc.parser.JavaCCParser; +import org.javacc.parser.RCharacterList; +import org.javacc.parser.RChoice; +import org.javacc.parser.RJustName; +import org.javacc.parser.ROneOrMore; +import org.javacc.parser.RSequence; +import org.javacc.parser.RStringLiteral; +import org.javacc.parser.RZeroOrMore; +import org.javacc.parser.RZeroOrOne; +import org.javacc.parser.RegularExpression; +import org.javacc.parser.Semanticize; +import org.javacc.parser.Token; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.io.IOException; +import java.io.InvalidClassException; +import java.nio.charset.CharsetEncoder; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.logging.Logger; +import org.junit.jupiter.api.Disabled; + + +class ParserKeywordsUtilsTest { + public final static CharsetEncoder CHARSET_ENCODER = StandardCharsets.US_ASCII.newEncoder(); + + final static File FILE = new File("src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt"); + final static Logger LOGGER = Logger.getLogger(ParserKeywordsUtilsTest.class.getName()); + + + private static void addTokenImage(TreeSet<String> allKeywords, RStringLiteral literal) { + if (CHARSET_ENCODER.canEncode(literal.image) && literal.image.matches("[A-Za-z]+")) { + allKeywords.add(literal.image); + } + } + + @SuppressWarnings({"PMD.EmptyIfStmt", "PMD.CyclomaticComplexity"}) + private static void addTokenImage(TreeSet<String> allKeywords, Object o) throws Exception { + if (o instanceof RStringLiteral) { + RStringLiteral literal = (RStringLiteral) o; + addTokenImage(allKeywords, literal); + } else if (o instanceof RChoice) { + RChoice choice = (RChoice) o; + addTokenImage(allKeywords, choice); + } else if (o instanceof RSequence) { + RSequence sequence1 = (RSequence) o; + addTokenImage(allKeywords, sequence1); + } else if (o instanceof ROneOrMore) { + ROneOrMore oneOrMore = (ROneOrMore) o ; + addTokenImage(allKeywords, oneOrMore); + } else if (o instanceof RZeroOrMore) { + RZeroOrMore zeroOrMore = (RZeroOrMore) o ; + addTokenImage(allKeywords, zeroOrMore); + } else if (o instanceof RZeroOrOne) { + RZeroOrOne zeroOrOne = (RZeroOrOne) o ; + addTokenImage(allKeywords, zeroOrOne); + } else if (o instanceof RJustName) { + RJustName zeroOrOne = (RJustName) o ; + addTokenImage(allKeywords, zeroOrOne); + } else if (o instanceof RCharacterList) { + // do nothing, we are not interested in those + } else { + throw new InvalidClassException("Unknown Type: " + o.getClass().getName() + " " + o.toString()); + } + } + + private static void addTokenImage(TreeSet<String> allKeywords, RSequence sequence) throws Exception { + for (Object o: sequence.units) { + addTokenImage(allKeywords, o); + } + } + + private static void addTokenImage(TreeSet<String> allKeywords, ROneOrMore oneOrMore) { + for (Token token: oneOrMore.lhsTokens) { + if (CHARSET_ENCODER.canEncode(token.image)) { + allKeywords.add(token.image); + } + } + } + + private static void addTokenImage(TreeSet<String> allKeywords, RZeroOrMore oneOrMore) { + for (Token token: oneOrMore.lhsTokens) { + if (CHARSET_ENCODER.canEncode(token.image)) { + allKeywords.add(token.image); + } + } + } + + private static void addTokenImage(TreeSet<String> allKeywords, RZeroOrOne oneOrMore) { + for (Token token: oneOrMore.lhsTokens) { + if (CHARSET_ENCODER.canEncode(token.image)) { + allKeywords.add(token.image); + } + } + } + + private static void addTokenImage(TreeSet<String> allKeywords, RJustName oneOrMore) { + for (Token token: oneOrMore.lhsTokens) { + if (CHARSET_ENCODER.canEncode(token.image)) { + allKeywords.add(token.image); + } + } + } + + private static void addTokenImage(TreeSet<String> allKeywords, RChoice choice) throws Exception { + for (Object o: choice.getChoices()) { + addTokenImage(allKeywords, o); + } + } + + public static TreeSet<String> getAllKeywordsUsingJavaCC(File file) throws Exception { + TreeSet<String> allKeywords = new TreeSet<>(); + + Path jjtGrammar = file.toPath(); + Path jjGrammarOutputDir = Files.createTempDirectory("jjgrammer"); + + new JJTree().main(new String[]{ + "-JDK_VERSION=1.8", + "-OUTPUT_DIRECTORY=" + jjGrammarOutputDir.toString(), + jjtGrammar.toString() + }); + Path jjGrammarFile = jjGrammarOutputDir.resolve("JSqlParserCC.jj"); + + JavaCCParser parser = new JavaCCParser(new java.io.FileInputStream(jjGrammarFile.toFile())); + parser.javacc_input(); + + // needed for filling JavaCCGlobals + Semanticize.start(); + + // read all the Token and get the String image + for (Map.Entry<Integer, RegularExpression> item : JavaCCGlobals.rexps_of_tokens.entrySet()) { + addTokenImage(allKeywords, item.getValue()); + } + + //clean up + if (jjGrammarOutputDir.toFile().exists()) { + jjGrammarOutputDir.toFile().delete(); + } + + return allKeywords; + } + + @Test + void getAllKeywords() throws IOException { + Set<String> allKeywords = ParserKeywordsUtils.getAllKeywordsUsingRegex(FILE); + Assertions.assertFalse( allKeywords.isEmpty(), "Keyword List must not be empty!" ); + } + + @Test + @Disabled + void getAllKeywordsUsingJavaCC() throws Exception { + Set<String> allKeywords = getAllKeywordsUsingJavaCC(FILE); + Assertions.assertFalse( allKeywords.isEmpty(), "Keyword List must not be empty!" ); + } + + // Test, if all Tokens found per RegEx are also found from the JavaCCParser + @Test + @Disabled + void compareKeywordLists() throws Exception { + Set<String> allRegexKeywords = ParserKeywordsUtils.getAllKeywordsUsingRegex(FILE); + Set<String> allJavaCCParserKeywords = getAllKeywordsUsingJavaCC(FILE); + + // Exceptions, which should not have been found from the RegEx + List<String> exceptions = Arrays.asList("0x"); + + // We expect all Keywords from the Regex to be found by the JavaCC Parser + for (String s:allRegexKeywords) { + Assertions.assertTrue( + exceptions.contains(s) || allJavaCCParserKeywords.contains(s) + , "The Keywords from JavaCC do not contain Keyword: " + s); + } + + // The JavaCC Parser finds some more valid Keywords (where no explicit Token has been defined + for (String s:allJavaCCParserKeywords) { + if ( ! (exceptions.contains(s) || allRegexKeywords.contains(s)) ) { + LOGGER.fine ("Found Additional Keywords from Parser: " + s); + } + } + } +} diff --git a/src/test/java/net/sf/jsqlparser/statement/BlockTest.java b/src/test/java/net/sf/jsqlparser/statement/BlockTest.java index bd0bdd3dc..e0d46acf7 100644 --- a/src/test/java/net/sf/jsqlparser/statement/BlockTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/BlockTest.java @@ -11,12 +11,13 @@ import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import net.sf.jsqlparser.test.TestUtils; +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; -import org.junit.jupiter.api.Test; /** - * * @author Tobias Warneke (t.warneke@gmx.net) */ public class BlockTest { @@ -26,24 +27,19 @@ public class BlockTest { */ @Test public void testGetStatements() throws JSQLParserException { - Statements stmts = CCJSqlParserUtil.parseStatements("begin\nselect * from feature;\nend"); - assertEquals("BEGIN\n" - + "SELECT * FROM feature;\n" - + "END;\n", stmts.toString()); + String sqlStr = "begin\n" + + "select * from feature;\n" + + "end;"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); } @Test public void testBlock2() throws JSQLParserException { - Statements stmts = CCJSqlParserUtil.parseStatements("begin\n" - + "update table1 set a = 'xx' where b = 'condition1';\n" - + "update table1 set a = 'xx' where b = 'condition2';\n" - + "end;"); - assertEquals("BEGIN\n" - + "UPDATE table1 SET a = 'xx' WHERE b = 'condition1';\n" - + "UPDATE table1 SET a = 'xx' WHERE b = 'condition2';\n" - + "END;\n" - + "", stmts.toString()); - + String sqlStr="begin\n" + + "update table1 set a = 'xx' where b = 'condition1';\n" + + "update table1 set a = 'xx' where b = 'condition2';\n" + + "end;"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); } @Test @@ -58,7 +54,31 @@ public void testBlockToStringIsNullSafe() throws JSQLParserException { Block block = new Block(); block.setStatements(null); assertEquals("BEGIN\n" - + "END", block.toString()); + + "END", block.toString()); + } + + @Test + public void testIfElseBlock() throws JSQLParserException { + String sqlStr = "if (a=b) begin\n" + + "update table1 set a = 'xx' where b = 'condition1';\n" + + "update table1 set a = 'xx' where b = 'condition2';\n" + + "end"; + + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + String sqlStr2 = "if (a=b) begin\n" + + "update table1 set a = 'xx' where b = 'condition1';\n" + + "update table1 set a = 'xx' where b = 'condition2';\n" + + "end;\n" + + "else begin\n" + + "update table1 set a = 'xx' where b = 'condition1';\n" + + "update table1 set a = 'xx' where b = 'condition2';\n" + + "end;"; + + Statements statements = CCJSqlParserUtil.parseStatements(sqlStr2); + for (Statement stm : statements.getStatements()) { + TestUtils.assertDeparse(stm, sqlStr2, true); + } } } diff --git a/src/test/java/net/sf/jsqlparser/statement/ConditionalKeywordsTest.java b/src/test/java/net/sf/jsqlparser/statement/ConditionalKeywordsTest.java new file mode 100644 index 000000000..ae7599812 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/statement/ConditionalKeywordsTest.java @@ -0,0 +1,61 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2021 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement; + +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.parser.ParserKeywordsUtils; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Stream; + +import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed; + +/** + * + * @author <a href="mailto:andreas@manticore-projects.com">Andreas Reichel</a> + */ +public class ConditionalKeywordsTest { + public final static Logger LOGGER = Logger.getLogger(ConditionalKeywordsTest.class.getName()); + + public static Stream<String> keyWords() { + File file = new File("src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt"); + List<String> keywords = new ArrayList<>(); + try { + try { + keywords.addAll( ParserKeywordsUtils.getAllKeywordsUsingRegex(file) ); + for (String reserved: ParserKeywordsUtils.getReservedKeywords( + // get all PARSER RESTRICTED without the ALIAS RESTRICTED + ParserKeywordsUtils.RESTRICTED_JSQLPARSER + & ~ParserKeywordsUtils.RESTRICTED_ALIAS + )) { + keywords.remove(reserved); + } + } catch (Exception ex) { + LOGGER.log(Level.SEVERE, "Failed to generate the Keyword List", ex); + } + } catch (Exception ex) { + LOGGER.log(Level.SEVERE, "Failed to generate the Keyword List", ex); + } + return keywords.stream(); + } + + @ParameterizedTest(name = "Keyword {0}") + @MethodSource("keyWords") + public void testRelObjectNameExt(String keyword) throws JSQLParserException { + String sqlStr = String.format("SELECT %1$s.%1$s.%1$s AS \"%1$s\" from %1$s ORDER BY %1$s ", keyword); + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + } +} diff --git a/src/test/java/net/sf/jsqlparser/statement/KeywordsTest.java b/src/test/java/net/sf/jsqlparser/statement/KeywordsTest.java new file mode 100644 index 000000000..e1d6b51e6 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/statement/KeywordsTest.java @@ -0,0 +1,61 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2021 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement; + +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.parser.ParserKeywordsUtils; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Stream; + +import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed; + +/** + * + * @author <a href="mailto:andreas@manticore-projects.com">Andreas Reichel</a> + */ +public class KeywordsTest { + public final static Logger LOGGER = Logger.getLogger(KeywordsTest.class.getName()); + + public static Stream<String> keyWords() { + File file = new File("src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt"); + List<String> keywords = new ArrayList<>(); + try { + keywords.addAll( ParserKeywordsUtils.getAllKeywordsUsingRegex(file) ); + for (String reserved: ParserKeywordsUtils.getReservedKeywords(ParserKeywordsUtils.RESTRICTED_JSQLPARSER)) { + keywords.remove(reserved); + } + } catch (Exception ex) { + LOGGER.log(Level.SEVERE, "Failed to generate the Keyword List", ex); + } + return keywords.stream(); + } + + @ParameterizedTest(name = "Keyword {0}") + @MethodSource("keyWords") + public void testRelObjectNameWithoutValue(String keyword) throws JSQLParserException { + String sqlStr = String.format("SELECT %1$s.%1$s AS %1$s from %1$s.%1$s AS %1$s", keyword); + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + } + + @Test + public void testCombinedTokenKeywords() throws JSQLParserException { + String sqlStr = "SELECT current_date(3)"; + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + } + +} diff --git a/src/test/java/net/sf/jsqlparser/statement/SetStatementTest.java b/src/test/java/net/sf/jsqlparser/statement/SetStatementTest.java index 605d0af5e..b838f2224 100644 --- a/src/test/java/net/sf/jsqlparser/statement/SetStatementTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/SetStatementTest.java @@ -70,4 +70,14 @@ public void testObject() { assertEquals(0, setStatement.getCount()); } + + @Test + public void testSettingUserVariable() throws JSQLParserException { + String sqlStr="set @Flag = 1"; + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + // issue #1237 + sqlStr="SET @@global.time_zone = '01:00'"; + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + } } diff --git a/src/test/java/net/sf/jsqlparser/statement/ShowIndexStatementTest.java b/src/test/java/net/sf/jsqlparser/statement/ShowIndexStatementTest.java new file mode 100644 index 000000000..be525fc6b --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/statement/ShowIndexStatementTest.java @@ -0,0 +1,27 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2019 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement; + +import net.sf.jsqlparser.JSQLParserException; +import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed; +import org.junit.jupiter.api.Test; + +/** +* +* @author Jayant Kumar Yadav +*/ + +public class ShowIndexStatementTest { + + @Test + public void testSimpleUse() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SHOW INDEX FROM mydatabase"); + } +} \ No newline at end of file diff --git a/src/test/java/net/sf/jsqlparser/statement/StatementSeparatorTest.java b/src/test/java/net/sf/jsqlparser/statement/StatementSeparatorTest.java new file mode 100644 index 000000000..ce92cdd26 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/statement/StatementSeparatorTest.java @@ -0,0 +1,57 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2023 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement; + +import net.sf.jsqlparser.*; +import net.sf.jsqlparser.parser.*; +import net.sf.jsqlparser.test.*; +import org.junit.jupiter.api.*; + +public class StatementSeparatorTest { + + @Test + void testDoubleNewLine() throws JSQLParserException { + String sqlStr = + "SELECT * FROM DUAL\n\n\nSELECT * FROM DUAL\n\n\n\nSELECT * FROM dual\n\n\n\n\nSELECT * FROM dual"; + Statements statements = CCJSqlParserUtil.parseStatements(sqlStr); + Assertions.assertEquals(4, statements.getStatements().size()); + } + + @Test + void testNewLineSlash() throws JSQLParserException { + String sqlStr = + "SELECT * FROM DUAL\n\n\nSELECT * FROM DUAL\n/\nSELECT * FROM dual\n/\n\nSELECT * FROM dual"; + Statements statements = CCJSqlParserUtil.parseStatements(sqlStr); + Assertions.assertEquals(4, statements.getStatements().size()); + } + + @Test + void testNewLineGo() throws JSQLParserException { + String sqlStr = + "SELECT * FROM DUAL\n\n\nSELECT * FROM DUAL\nGO\nSELECT * FROM dual\ngo\n\nSELECT * FROM dual\ngo"; + Statements statements = CCJSqlParserUtil.parseStatements(sqlStr); + Assertions.assertEquals(4, statements.getStatements().size()); + } + + @Test + void testOracleBlock() throws JSQLParserException { + String sqlStr = "BEGIN\n" + "\n" + "SELECT * FROM TABLE;\n" + "\n" + "END\n" + "/\n"; + Statement statement = TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + System.out.println(statement); + } + + @Test + void testMSSQLBlock() throws JSQLParserException { + String sqlStr = "create view MyView1 as\n" + "select Id,Name from table1\n" + "go\n" + + "create view MyView2 as\n" + "select Id,Name from table1\n" + "go"; + Statements statements = CCJSqlParserUtil.parseStatements(sqlStr); + Assertions.assertEquals(2, statements.getStatements().size()); + } +} diff --git a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java index 0b233ba4b..0bc241766 100644 --- a/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java @@ -12,6 +12,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; + import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.StringValue; import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo; @@ -31,6 +32,7 @@ import net.sf.jsqlparser.statement.create.table.NamedConstraint; import static net.sf.jsqlparser.test.TestUtils.*; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -65,6 +67,21 @@ public void testAlterTableAddColumn_ColumnKeyWordImplicit() throws JSQLParserExc assertEquals("varchar (255)", colDataTypes.get(0).getColDataType().toString()); } + + @Test + public void testAlterTableBackBrackets()throws JSQLParserException{ + String sql="ALTER TABLE tablename add column (field string comment 'aaaaa')"; + Statement statement = CCJSqlParserUtil.parse(sql); + Alter alter=(Alter) statement; + System.out.println(alter.toString()); + + String sql2="ALTER TABLE tablename add column (field string comment 'aaaaa', field2 string comment 'bbbbb');"; + Statement statement2 = CCJSqlParserUtil.parse(sql2); + Alter alter2=(Alter) statement2; + System.out.println(alter2.toString()); + } + + @Test public void testAlterTablePrimaryKey() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("ALTER TABLE animals ADD PRIMARY KEY (id)"); @@ -272,7 +289,7 @@ public void testAlterTableAddColumn5() throws JSQLParserException { assertEquals("col1", col1DataTypes.get(0).getColumnName()); assertEquals("timestamp (3)", col1DataTypes.get(0).getColDataType().toString()); - assertEquals(col1Exp.hasColumn(), false); + assertFalse(col1Exp.hasColumn()); } @Test @@ -286,7 +303,7 @@ public void testAlterTableAddColumn6() throws JSQLParserException { assertEquals("not", col1Exp.getColDataTypeList().get(0).getColumnSpecs().get(0)); assertEquals("null", col1Exp.getColDataTypeList().get(0).getColumnSpecs().get(1)); - assertEquals(col1Exp.hasColumn(), true); + assertTrue(col1Exp.hasColumn()); } @Test @@ -304,7 +321,7 @@ public void testAlterTableModifyColumn2() throws JSQLParserException { assertEquals(AlterOperation.MODIFY, alterExpression.getOperation()); - assertEquals(alterExpression.hasColumn(), false); + assertFalse(alterExpression.hasColumn()); } @Test @@ -318,7 +335,7 @@ public void testAlterTableAlterColumn() throws JSQLParserException { assertEquals(AlterOperation.ALTER, alterExpression.getOperation()); - assertEquals(alterExpression.hasColumn(), true); + assertTrue(alterExpression.hasColumn()); } @Test @@ -410,7 +427,7 @@ public void testAddConstraintKeyIssue320() throws JSQLParserException { } @Test - public void testIssue633() throws JSQLParserException, JSQLParserException, JSQLParserException { + public void testIssue633() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("ALTER TABLE team_phases ADD CONSTRAINT team_phases_id_key UNIQUE (id)"); } @@ -454,8 +471,9 @@ public void testAlterOnlyIssue928() throws JSQLParserException { Statement parsed = assertSqlCanBeParsedAndDeparsed(statement); Alter created = new Alter().withUseOnly(true).withTable(new Table("categories")).addAlterExpressions( new AlterExpression().withOperation(AlterOperation.ADD).withIndex(new NamedConstraint() - .withName(Arrays.asList("pk_categories")).withType("PRIMARY KEY") - .addColumns(new ColumnParams("category_id")))); + .withName(Collections.singletonList( + "pk_categories")).withType("PRIMARY KEY") + .addColumns(new ColumnParams("category_id")))); assertDeparse(created, statement); assertEqualsObjectTree(parsed, created); } @@ -465,6 +483,7 @@ public void testAlterConstraintWithoutFKSourceColumnsIssue929() throws JSQLParse assertSqlCanBeParsedAndDeparsed("ALTER TABLE orders ADD CONSTRAINT fk_orders_customers FOREIGN KEY (customer_id) REFERENCES customers"); } + @Test public void testAlterTableAlterColumnDropNotNullIssue918() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("ALTER TABLE \"user_table_t\" ALTER COLUMN name DROP NOT NULL"); } @@ -803,4 +822,52 @@ public void testAlterTableDropMultipleColumnsIfExists() throws JSQLParserExcepti public void testAlterTableDropMultipleColumnsIfExistsWithParams() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("ALTER TABLE test DROP COLUMN IF EXISTS name CASCADE, DROP COLUMN IF EXISTS surname CASCADE"); } + + @Test + public void testAlterTableAddColumnSpanner7() throws JSQLParserException { + final String sql = "ALTER TABLE ORDER_PATIENT ADD COLUMN FIRST_NAME_UPPERCASE STRING(MAX)" + + " AS (UPPER(FIRST_NAME)) STORED"; + Statement stmt = CCJSqlParserUtil.parse(sql); + assertStatementCanBeDeparsedAs(stmt, sql, true); + Alter alter = (Alter) stmt; + List<AlterExpression> alterExps = alter.getAlterExpressions(); + AlterExpression col1Exp = alterExps.get(0); + assertTrue(col1Exp.getColDataTypeList().get(0).toString().endsWith(" STORED")); + assertTrue(col1Exp.hasColumn()); + } + + @Test + public void testAlterTableAddColumnSpanner8() throws JSQLParserException { + final String sql = "ALTER TABLE ORDER_PATIENT ADD COLUMN NAMES ARRAY<STRING(MAX)>"; + Statement stmt = CCJSqlParserUtil.parse(sql); + assertStatementCanBeDeparsedAs(stmt, sql, true); + Alter alter = (Alter) stmt; + List<AlterExpression> alterExps = alter.getAlterExpressions(); + AlterExpression col1Exp = alterExps.get(0); + assertTrue(col1Exp.hasColumn()); + assertNotNull(col1Exp.getColDataTypeList()); + assertEquals(1, col1Exp.getColDataTypeList().size()); + ColumnDataType type = col1Exp.getColDataTypeList().get(0); + assertEquals("NAMES", type.getColumnName()); + assertEquals("ARRAY<STRING (MAX)>", type.getColDataType().toString()); + } + + @Test + public void testAlterColumnSetCommitTimestamp1() throws JSQLParserException { + // @todo: properly implement SET OPTIONS, the current hack is terrible + // final String sql = "ALTER TABLE FOCUS_PATIENT ALTER COLUMN UPDATE_DATE_TIME_GMT SET OPTIONS (allow_commit_timestamp=null)"; + + final String sql = "ALTER TABLE FOCUS_PATIENT ALTER COLUMN UPDATE_DATE_TIME_GMT SET OPTIONS (allow_commit_timestamp=true)"; + Statement stmt = CCJSqlParserUtil.parse(sql); + assertStatementCanBeDeparsedAs(stmt, sql); + Alter alter = (Alter) stmt; + List<AlterExpression> alterExps = alter.getAlterExpressions(); + AlterExpression col1Exp = alterExps.get(0); + assertTrue(col1Exp.hasColumn()); + assertNotNull(col1Exp.getColDataTypeList()); + assertEquals(1, col1Exp.getColDataTypeList().size()); + ColumnDataType type = col1Exp.getColDataTypeList().get(0); + assertEquals("UPDATE_DATE_TIME_GMT", type.getColumnName()); + assertEquals("UPDATE_DATE_TIME_GMT SET OPTIONS (allow_commit_timestamp=true)", type.toString()); + } } diff --git a/src/test/java/net/sf/jsqlparser/statement/builder/ReflectionModelTest.java b/src/test/java/net/sf/jsqlparser/statement/builder/ReflectionModelTest.java index 60ab4a28e..3aa030e13 100644 --- a/src/test/java/net/sf/jsqlparser/statement/builder/ReflectionModelTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/builder/ReflectionModelTest.java @@ -9,17 +9,19 @@ */ package net.sf.jsqlparser.statement.builder; -import java.util.List; import net.sf.jsqlparser.expression.AnyType; import net.sf.jsqlparser.expression.operators.relational.RegExpMatchOperatorType; import net.sf.jsqlparser.schema.Sequence.ParameterType; import net.sf.jsqlparser.statement.ExplainStatement.OptionType; import net.sf.jsqlparser.statement.create.table.ColDataType; import net.sf.jsqlparser.statement.select.SubSelect; -import static net.sf.jsqlparser.test.TestUtils.*; import net.sf.jsqlparser.util.ReflectionTestUtils; import org.junit.jupiter.api.Test; +import java.util.List; + +import static net.sf.jsqlparser.test.TestUtils.asList; + /** * Testing of setters, getters, with-/add-methods by calling them with random parameter-values * <ul> @@ -115,6 +117,7 @@ public class ReflectionModelTest { new net.sf.jsqlparser.statement.ExplainStatement.Option(OptionType.COSTS), new net.sf.jsqlparser.statement.SetStatement("name", null), new net.sf.jsqlparser.statement.ShowColumnsStatement(), + new net.sf.jsqlparser.statement.show.ShowIndexStatement(), new net.sf.jsqlparser.statement.ShowStatement(), new net.sf.jsqlparser.statement.Statements(), new net.sf.jsqlparser.statement.UseStatement(), new net.sf.jsqlparser.statement.alter.Alter(), @@ -148,7 +151,7 @@ public class ReflectionModelTest { new net.sf.jsqlparser.statement.drop.Drop(), new net.sf.jsqlparser.statement.execute.Execute(), new net.sf.jsqlparser.statement.grant.Grant(), new net.sf.jsqlparser.statement.insert.Insert(), new net.sf.jsqlparser.statement.merge.Merge(), - new net.sf.jsqlparser.statement.merge.MergeUpdate(), new net.sf.jsqlparser.statement.replace.Replace(), + new net.sf.jsqlparser.statement.merge.MergeUpdate(), new net.sf.jsqlparser.statement.select.AllColumns(), new net.sf.jsqlparser.statement.select.AllTableColumns(), new net.sf.jsqlparser.statement.select.Distinct(), new net.sf.jsqlparser.statement.select.ExceptOp(), diff --git a/src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java b/src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java index 6522f40d3..5ee5f9dbe 100644 --- a/src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java @@ -64,7 +64,7 @@ public void testCreateTable3() throws JSQLParserException { @Test public void testCreateTableAsSelect() - throws JSQLParserException, JSQLParserException, JSQLParserException, JSQLParserException { + throws JSQLParserException { String statement = "CREATE TABLE a AS SELECT col1, col2 FROM b"; assertSqlCanBeParsedAndDeparsed(statement); } @@ -905,4 +905,38 @@ public void testCreateTableBinaryIssue1596() throws JSQLParserException { + "INDEX name (name) USING BTREE" + ") ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin"); } + + @Test + public void testCreateTableSpanner() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed( + "CREATE TABLE COMMAND (\n" + + " DATASET_ID INT64 NOT NULL,\n" + + " COMMAND_ID STRING(MAX) NOT NULL,\n" + + " VAL_BOOL BOOL,\n" + + " VAL_BYTES BYTES(1024),\n" + + " VAL_DATE DATE,\n" + + " VAL_TIMESTAMP TIMESTAMP,\n" + + " VAL_COMMIT_TIMESTAMP TIMESTAMP NOT NULL OPTIONS (allow_commit_timestamp = true),\n" + + " VAL_FLOAT64 FLOAT64,\n" + + " VAL_JSON JSON(2048),\n" + + " VAL_NUMERIC NUMERIC,\n" + + " VAL_STRING STRING(MAX),\n" + + " VAL_TIMESTAMP TIMESTAMP,\n" + + " ARR_BOOL ARRAY<BOOL>,\n" + + " ARR_BYTES ARRAY<BYTES(1024)>,\n" + + " ARR_DATE ARRAY<DATE>,\n" + + " ARR_TIMESTAMP ARRAY<TIMESTAMP>,\n" + + " ARR_FLOAT64 ARRAY<FLOAT64>,\n" + + " ARR_JSON ARRAY<JSON(2048)>,\n" + + " ARR_NUMERIC ARRAY<NUMERIC>,\n" + + " ARR_STRING ARRAY<STRING(MAX)>,\n" + + " ARR_TIMESTAMP ARRAY<TIMESTAMP>,\n" + + " PAYLOAD STRING(MAX),\n" + + " AUTHOR STRING(MAX) NOT NULL,\n" + + " SEARCH STRING(MAX) AS (UPPER(AUTHOR)) STORED\n" + + " ) PRIMARY KEY ( DATASET_ID, COMMAND_ID )\n" + + ", INTERLEAVE IN PARENT DATASET ON DELETE CASCADE", true); + } + + } diff --git a/src/test/java/net/sf/jsqlparser/statement/create/CreateViewTest.java b/src/test/java/net/sf/jsqlparser/statement/create/CreateViewTest.java index ea3a7a767..ace507091 100644 --- a/src/test/java/net/sf/jsqlparser/statement/create/CreateViewTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/create/CreateViewTest.java @@ -10,14 +10,23 @@ package net.sf.jsqlparser.statement.create; import java.io.StringReader; + import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.parser.CCJSqlParserManager; +import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import net.sf.jsqlparser.parser.ParseException; import net.sf.jsqlparser.schema.Table; +import net.sf.jsqlparser.statement.create.view.AutoRefreshOption; import net.sf.jsqlparser.statement.create.view.CreateView; import net.sf.jsqlparser.statement.select.PlainSelect; import static net.sf.jsqlparser.test.TestUtils.*; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; + +import org.assertj.core.api.ThrowableAssert.ThrowingCallable; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.Test; public class CreateViewTest { @@ -30,7 +39,9 @@ public void testCreateView() throws JSQLParserException { CreateView createView = (CreateView) parserManager.parse(new StringReader(statement)); assertFalse(createView.isOrReplace()); assertEquals("myview", createView.getView().getName()); - assertEquals("mytab", ((Table) ((PlainSelect) createView.getSelect().getSelectBody()).getFromItem()).getName()); + assertEquals("mytab", + ((Table) ((PlainSelect) createView.getSelect().getSelectBody()).getFromItem()) + .getName()); assertEquals(statement, createView.toString()); } @@ -48,7 +59,8 @@ public void testCreateView3() throws JSQLParserException { @Test public void testCreateView4() throws JSQLParserException { - String stmt = "CREATE OR REPLACE VIEW view2 AS SELECT a, b, c FROM testtab INNER JOIN testtab2 ON testtab.col1 = testtab2.col2"; + String stmt = + "CREATE OR REPLACE VIEW view2 AS SELECT a, b, c FROM testtab INNER JOIN testtab2 ON testtab.col1 = testtab2.col2"; assertSqlCanBeParsedAndDeparsed(stmt); } @@ -65,14 +77,16 @@ public void testCreateView5() throws JSQLParserException { CreateView createView = (CreateView) parserManager.parse(new StringReader(statement)); assertFalse(createView.isOrReplace()); assertEquals("myview", createView.getView().getName()); - assertEquals("mytab", ((Table) ((PlainSelect) createView.getSelect().getSelectBody()).getFromItem()). - getName()); + assertEquals("mytab", + ((Table) ((PlainSelect) createView.getSelect().getSelectBody()).getFromItem()) + .getName()); assertEquals(statement2, createView.toString()); } @Test public void testCreateViewUnion() throws JSQLParserException { - String stmt = "CREATE VIEW view1 AS (SELECT a, b FROM testtab) UNION (SELECT b, c FROM testtab2)"; + String stmt = + "CREATE VIEW view1 AS (SELECT a, b FROM testtab) UNION (SELECT b, c FROM testtab2)"; assertSqlCanBeParsedAndDeparsed(stmt); } @@ -94,12 +108,14 @@ public void testCreateForceView1() throws JSQLParserException { @Test public void testCreateForceView2() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("CREATE OR REPLACE FORCE VIEW view1 AS SELECT a, b FROM testtab"); + assertSqlCanBeParsedAndDeparsed( + "CREATE OR REPLACE FORCE VIEW view1 AS SELECT a, b FROM testtab"); } @Test public void testCreateForceView3() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("CREATE OR REPLACE NO FORCE VIEW view1 AS SELECT a, b FROM testtab"); + assertSqlCanBeParsedAndDeparsed( + "CREATE OR REPLACE NO FORCE VIEW view1 AS SELECT a, b FROM testtab"); } @Test @@ -114,11 +130,83 @@ public void testCreateTemporaryViewIssue604_2() throws JSQLParserException { @Test public void testCreateTemporaryViewIssue665() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("CREATE VIEW foo(\"BAR\") AS WITH temp AS (SELECT temp_bar FROM foobar) SELECT bar FROM temp"); + assertSqlCanBeParsedAndDeparsed( + "CREATE VIEW foo(\"BAR\") AS WITH temp AS (SELECT temp_bar FROM foobar) SELECT bar FROM temp"); } @Test public void testCreateWithReadOnlyViewIssue838() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("CREATE VIEW v14(c1, c2) AS SELECT c1, C2 FROM t1 WITH READ ONLY"); + assertSqlCanBeParsedAndDeparsed( + "CREATE VIEW v14(c1, c2) AS SELECT c1, C2 FROM t1 WITH READ ONLY"); + } + + @Test + public void testCreateViewAutoRefreshNone() throws JSQLParserException { + String stmt = "CREATE VIEW myview AS SELECT * FROM mytab"; + CreateView createView = (CreateView) assertSqlCanBeParsedAndDeparsed(stmt); + assertEquals(createView.getAutoRefresh(), AutoRefreshOption.NONE); + } + + @Test + public void testCreateViewAutoRefreshYes() throws JSQLParserException { + String stmt = "CREATE VIEW myview AUTO REFRESH YES AS SELECT * FROM mytab"; + CreateView createView = (CreateView) assertSqlCanBeParsedAndDeparsed(stmt); + assertEquals(createView.getAutoRefresh(), AutoRefreshOption.YES); + } + + @Test + public void testCreateViewAutoRefreshNo() throws JSQLParserException { + String stmt = "CREATE VIEW myview AUTO REFRESH NO AS SELECT * FROM mytab"; + CreateView createView = (CreateView) assertSqlCanBeParsedAndDeparsed(stmt); + assertEquals(createView.getAutoRefresh(), AutoRefreshOption.NO); + } + + @Test + public void testCreateViewAutoFails() throws JSQLParserException { + String stmt = "CREATE VIEW myview AUTO AS SELECT * FROM mytab"; + + ThrowingCallable throwingCallable = () -> CCJSqlParserUtil.parse(stmt); + + assertThatThrownBy(throwingCallable).isInstanceOf(JSQLParserException.class) + .hasRootCauseInstanceOf(ParseException.class).rootCause() + .hasMessageStartingWith("Encountered unexpected token"); } + + @Test + public void testCreateViewRefreshFails() throws JSQLParserException { + String stmt = "CREATE VIEW myview REFRESH AS SELECT * FROM mytab"; + + ThrowingCallable throwingCallable = () -> CCJSqlParserUtil.parse(stmt); + + assertThatThrownBy(throwingCallable).isInstanceOf(JSQLParserException.class) + .hasRootCauseInstanceOf(ParseException.class).rootCause() + .hasMessageStartingWith("Encountered unexpected token"); + } + + @Test + public void testCreateViewAutoRefreshFails() throws JSQLParserException { + String stmt = "CREATE VIEW myview AUTO REFRESH AS SELECT * FROM mytab"; + + ThrowingCallable throwingCallable = () -> CCJSqlParserUtil.parse(stmt); + + assertThatThrownBy(throwingCallable).isInstanceOf(JSQLParserException.class) + .hasRootCauseInstanceOf(ParseException.class).rootCause() + .hasMessageStartingWith("Encountered unexpected token"); + } + + @Test + public void testCreateViewIfNotExists() throws JSQLParserException { + String stmt = "CREATE VIEW myview IF NOT EXISTS AS SELECT * FROM mytab"; + CreateView createView = (CreateView) assertSqlCanBeParsedAndDeparsed(stmt); + assertTrue(createView.isIfNotExists()); + } + + @Test + public void testCreateMaterializedViewIfNotExists() throws JSQLParserException { + String stmt = "CREATE MATERIALIZED VIEW myview IF NOT EXISTS AS SELECT * FROM mytab"; + CreateView createView = (CreateView) assertSqlCanBeParsedAndDeparsed(stmt); + assertTrue(createView.isMaterialized()); + assertTrue(createView.isIfNotExists()); + } + } diff --git a/src/test/java/net/sf/jsqlparser/statement/drop/DropTest.java b/src/test/java/net/sf/jsqlparser/statement/drop/DropTest.java index 2b33eb817..062374f39 100644 --- a/src/test/java/net/sf/jsqlparser/statement/drop/DropTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/drop/DropTest.java @@ -46,6 +46,11 @@ public void testDropIndex() throws JSQLParserException { assertDeparse(created, statement); assertEqualsObjectTree(parsed, created); } + + @Test + public void testDropIndexOnTable() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("DROP INDEX idx ON abc"); + } @Test public void testDrop2() throws JSQLParserException { @@ -82,6 +87,11 @@ public void testDropViewIssue545_2() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("DROP VIEW IF EXISTS myview"); } + @Test + public void testDropMaterializedView() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("DROP MATERIALIZED VIEW myview"); + } + @Test public void testDropSchemaIssue855() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("DROP SCHEMA myschema"); @@ -122,4 +132,10 @@ public void testDropFunctionWithNameAndType() throws JSQLParserException { public void testDropFunctionWithNameAndParameterizedType() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("DROP FUNCTION myFunc(amount integer, name varchar(255))"); } + + @Test + void dropTemporaryTableTestIssue1712() throws JSQLParserException { + String sqlStr="drop temporary table if exists tmp_MwYT8N0z"; + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + } } diff --git a/src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java b/src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java index b5c8f590c..c99c624bc 100644 --- a/src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java @@ -26,8 +26,6 @@ import net.sf.jsqlparser.statement.select.Select; import net.sf.jsqlparser.statement.update.UpdateSet; import net.sf.jsqlparser.statement.values.ValuesStatement; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; import java.io.StringReader; import java.util.Arrays; @@ -40,8 +38,12 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrowsExactly; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.fail; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.function.Executable; public class InsertTest { @@ -208,13 +210,12 @@ public void testInsertMultiRowValue() throws JSQLParserException { //@todo: Clarify, if and why this test is supposed to fail and if it is the Parser's job to decide //What if col1 and col2 are Array Columns? public void testInsertMultiRowValueDifferent() throws JSQLParserException { - try { - assertSqlCanBeParsedAndDeparsed("INSERT INTO mytable (col1, col2) VALUES (a, b), (d, e, c)"); - } catch (Exception e) { - return; - } - - fail("should not work"); + assertThrowsExactly(JSQLParserException.class, new Executable() { + @Override + public void execute() throws Throwable { + CCJSqlParserUtil.parse("INSERT INTO mytable (col1, col2) VALUES (a, b), (d, e, c)"); + } + }); } @Test @@ -308,7 +309,12 @@ public void testModifierPriority3() throws JSQLParserException { @Test public void testIssue223() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("INSERT INTO user VALUES (2001, '\\'Clark\\'', 'Kent')"); + String sqlStr="INSERT INTO user VALUES (2001, '\\'Clark\\'', 'Kent')"; + assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(true) + ); } @Test diff --git a/src/test/java/net/sf/jsqlparser/statement/replace/ReplaceTest.java b/src/test/java/net/sf/jsqlparser/statement/replace/ReplaceTest.java index c729ff6a7..180bee0ff 100644 --- a/src/test/java/net/sf/jsqlparser/statement/replace/ReplaceTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/replace/ReplaceTest.java @@ -9,67 +9,60 @@ */ package net.sf.jsqlparser.statement.replace; -import java.io.StringReader; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.JdbcParameter; import net.sf.jsqlparser.expression.LongValue; import net.sf.jsqlparser.expression.StringValue; -import net.sf.jsqlparser.expression.operators.relational.ExpressionList; -import net.sf.jsqlparser.parser.CCJSqlParserManager; import net.sf.jsqlparser.schema.Column; -import net.sf.jsqlparser.statement.select.SubSelect; +import net.sf.jsqlparser.statement.upsert.Upsert; import net.sf.jsqlparser.test.TestUtils; +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.Test; public class ReplaceTest { - - private static final CCJSqlParserManager PARSER_MANAGER = new CCJSqlParserManager(); - @Test public void testReplaceSyntax1() throws JSQLParserException { String statement = "REPLACE mytable SET col1='as', col2=?, col3=565"; - Replace replace = (Replace) PARSER_MANAGER.parse(new StringReader(statement)); - assertEquals("mytable", replace.getTable().getName()); - assertEquals(3, replace.getColumns().size()); - assertEquals("col1", ((Column) replace.getColumns().get(0)).getColumnName()); - assertEquals("col2", ((Column) replace.getColumns().get(1)).getColumnName()); - assertEquals("col3", ((Column) replace.getColumns().get(2)).getColumnName()); - assertEquals("as", ((StringValue) replace.getExpressions().get(0)).getValue()); - assertTrue(replace.getExpressions().get(1) instanceof JdbcParameter); - assertEquals(565, ((LongValue) replace.getExpressions().get(2)).getValue()); - assertEquals(statement, "" + replace); - + Upsert upsert = (Upsert) TestUtils.assertSqlCanBeParsedAndDeparsed(statement, true); + assertEquals("mytable", upsert.getTable().getName()); + assertEquals(3, upsert.getColumns().size()); + assertEquals("col1", ((Column) upsert.getColumns().get(0)).getColumnName()); + assertEquals("col2", ((Column) upsert.getColumns().get(1)).getColumnName()); + assertEquals("col3", ((Column) upsert.getColumns().get(2)).getColumnName()); + assertEquals("as", ((StringValue) upsert.getSetExpressions().get(0)).getValue()); + assertTrue( upsert.getSetExpressions().get(1) instanceof JdbcParameter); + assertEquals(565, ((LongValue) upsert.getSetExpressions().get(2)).getValue()); + assertEquals(statement, "" + upsert); } @Test public void testReplaceSyntax2() throws JSQLParserException { String statement = "REPLACE mytable (col1, col2, col3) VALUES ('as', ?, 565)"; - Replace replace = (Replace) PARSER_MANAGER.parse(new StringReader(statement)); + Upsert replace = (Upsert) TestUtils.assertSqlCanBeParsedAndDeparsed(statement, true); assertEquals("mytable", replace.getTable().getName()); assertEquals(3, replace.getColumns().size()); assertEquals("col1", ((Column) replace.getColumns().get(0)).getColumnName()); assertEquals("col2", ((Column) replace.getColumns().get(1)).getColumnName()); assertEquals("col3", ((Column) replace.getColumns().get(2)).getColumnName()); - assertEquals("as", ((StringValue) ((ExpressionList) replace.getItemsList()).getExpressions(). - get(0)).getValue()); - assertTrue(((ExpressionList) replace.getItemsList()).getExpressions().get(1) instanceof JdbcParameter); - assertEquals(565, ((LongValue) ((ExpressionList) replace.getItemsList()).getExpressions(). - get(2)).getValue()); + assertEquals("as", ((StringValue) replace.getSetExpressions().get(0) ).getValue() ); + assertTrue( replace.getSetExpressions().get(1) instanceof JdbcParameter); + assertEquals(565, ((LongValue) replace.getSetExpressions().get(2)).getValue()); assertEquals(statement, "" + replace); } @Test public void testReplaceSyntax3() throws JSQLParserException { String statement = "REPLACE mytable (col1, col2, col3) SELECT * FROM mytable3"; - Replace replace = (Replace) PARSER_MANAGER.parse(new StringReader(statement)); + Upsert replace = (Upsert) TestUtils.assertSqlCanBeParsedAndDeparsed(statement, true); assertEquals("mytable", replace.getTable().getName()); assertEquals(3, replace.getColumns().size()); assertEquals("col1", ((Column) replace.getColumns().get(0)).getColumnName()); assertEquals("col2", ((Column) replace.getColumns().get(1)).getColumnName()); assertEquals("col3", ((Column) replace.getColumns().get(2)).getColumnName()); - assertTrue(replace.getItemsList() instanceof SubSelect); + assertNotNull(replace.getSelect()); } @Test diff --git a/src/test/java/net/sf/jsqlparser/statement/select/ClickHouseTest.java b/src/test/java/net/sf/jsqlparser/statement/select/ClickHouseTest.java new file mode 100644 index 000000000..d7d97f627 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/statement/select/ClickHouseTest.java @@ -0,0 +1,23 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2019 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement.select; + +import org.junit.jupiter.api.Test; + +import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed; + +public class ClickHouseTest { + + @Test + public void testGlobalJoin() throws Exception { + String sql = "SELECT a.*,b.* from lineorder_all as a global left join supplier_all as b on a.LOLINENUMBER=b.SSUPPKEY"; + assertSqlCanBeParsedAndDeparsed(sql, true); + } +} diff --git a/src/test/java/net/sf/jsqlparser/statement/select/PostgresTest.java b/src/test/java/net/sf/jsqlparser/statement/select/PostgresTest.java index 7eccca477..0751a5369 100644 --- a/src/test/java/net/sf/jsqlparser/statement/select/PostgresTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/select/PostgresTest.java @@ -10,7 +10,9 @@ package net.sf.jsqlparser.statement.select; import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.expression.JsonExpression; import net.sf.jsqlparser.test.TestUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class PostgresTest { @@ -41,4 +43,14 @@ public void testExtractFunctionIssue1582() throws JSQLParserException { " as snijtijd_interval"; TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); } + + @Test + public void testJSonExpressionIssue1696() throws JSQLParserException { + String sqlStr="SELECT '{\"key\": \"value\"}'::json -> 'key' AS X"; + Select select = (Select) TestUtils.assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + SelectExpressionItem selectExpressionItem = (SelectExpressionItem) plainSelect.getSelectItems().get(0); + Assertions.assertEquals("'key'", selectExpressionItem.getExpression(JsonExpression.class).getIdents().get(0)); + } } diff --git a/src/test/java/net/sf/jsqlparser/statement/select/SQLiteTest.java b/src/test/java/net/sf/jsqlparser/statement/select/SQLiteTest.java new file mode 100644 index 000000000..cd8e41c95 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/statement/select/SQLiteTest.java @@ -0,0 +1,22 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2023 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement.select; + +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.test.TestUtils; +import org.junit.jupiter.api.Test; + +public class SQLiteTest { + @Test + void testInsertOrReplaceUpsert() throws JSQLParserException { + String sqlString="INSERT OR REPLACE INTO kjobLocks VALUES (?, ?, ?)"; + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlString, true); + } +} diff --git a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java index 14536699e..b27cf993b 100644 --- a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java @@ -42,10 +42,12 @@ import static net.sf.jsqlparser.test.TestUtils.*; import net.sf.jsqlparser.test.MemoryLeakVerifier; +import net.sf.jsqlparser.test.TestUtils; import org.apache.commons.io.IOUtils; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -58,6 +60,8 @@ import org.junit.jupiter.api.function.Executable; import org.junit.jupiter.api.parallel.Execution; import org.junit.jupiter.api.parallel.ExecutionMode; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; @Execution(ExecutionMode.CONCURRENT) public class SelectTest { @@ -1888,8 +1892,8 @@ public void testBrackets2() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed(stmt, false, parser -> parser.withSquareBracketQuotation(true)); } - - @Test + + @Test public void testIssue1595() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("SELECT [id] FROM [guest].[12tableName]", false, parser -> parser.withSquareBracketQuotation(true)); @@ -2149,20 +2153,16 @@ public void testOracleJoin2() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed(stmt); } - @Test - public void testOracleJoin2_1() throws JSQLParserException { - String[] values = new String[]{"(+)", "( +)", "(+ )", "( + )", " (+) "}; - for (String value : values) { - assertSqlCanBeParsedAndDeparsed("SELECT * FROM tabelle1, tabelle2 WHERE tabelle1.a" + value + " = tabelle2.b", true); - } + @ParameterizedTest + @ValueSource(strings = {"(+)", "( +)", "(+ )", "( + )", " (+) "}) + public void testOracleJoin2_1(String value) throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT * FROM tabelle1, tabelle2 WHERE tabelle1.a" + value + " = tabelle2.b", true); } - @Test - public void testOracleJoin2_2() throws JSQLParserException { - String[] values = new String[]{"(+)", "( +)", "(+ )", "( + )", " (+) "}; - for (String value : values) { - assertSqlCanBeParsedAndDeparsed("SELECT * FROM tabelle1, tabelle2 WHERE tabelle1.a = tabelle2.b" + value, true); - } + @ParameterizedTest + @ValueSource(strings = {"(+)", "( +)", "(+ )", "( + )", " (+) "}) + public void testOracleJoin2_2(String value) throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT * FROM tabelle1, tabelle2 WHERE tabelle1.a = tabelle2.b" + value, true); } @Test @@ -2887,7 +2887,7 @@ public void testSqlNoCache() throws JSQLParserException { String stmt = "SELECT SQL_NO_CACHE sales.date FROM sales"; assertSqlCanBeParsedAndDeparsed(stmt); } - + @Test public void testSqlCache() throws JSQLParserException { String stmt = "SELECT SQL_CACHE sales.date FROM sales"; @@ -3067,29 +3067,53 @@ public void testIssue162_doubleUserVar() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("SELECT @@SPID AS ID, SYSTEM_USER AS \"Login Name\", USER AS \"User Name\""); } - @Test - public void testIssue167_singleQuoteEscape() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("SELECT 'a'"); - assertSqlCanBeParsedAndDeparsed("SELECT ''''"); - assertSqlCanBeParsedAndDeparsed("SELECT '\\''"); - assertSqlCanBeParsedAndDeparsed("SELECT 'ab''ab'"); - assertSqlCanBeParsedAndDeparsed("SELECT 'ab\\'ab'"); - } - - @Test - public void testIssue167_singleQuoteEscape2() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("SELECT '\\'''"); - assertSqlCanBeParsedAndDeparsed("SELECT '\\\\\\''"); + @ParameterizedTest + @ValueSource(strings = { + "SELECT 'a'" + , "SELECT ''''" + , "SELECT '\\''" + , "SELECT 'ab''ab'" + , "SELECT 'ab\\'ab'" + }) + public void testIssue167_singleQuoteEscape(String sqlStr) throws JSQLParserException { + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(true) + ); + } + + @ParameterizedTest + @ValueSource(strings = { + "SELECT '\\'''" + , "SELECT '\\\\\\''" + }) + public void testIssue167_singleQuoteEscape2(String sqlStr) throws JSQLParserException { + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(true) + ); } @Test public void testIssue77_singleQuoteEscape2() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("SELECT 'test\\'' FROM dual"); + String sqlStr ="SELECT 'test\\'' FROM dual"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(true) + ); } @Test public void testIssue223_singleQuoteEscape() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("SELECT '\\'test\\''"); + String sqlStr = "SELECT '\\'test\\''"; + TestUtils.assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(true) + ); } @Test @@ -4063,11 +4087,10 @@ public void visit(PlainSelect plainSelect) { assertEquals("MONTH", item.getAlias().getName()); } - @Test - public void testRawStringExpressionIssue656() throws JSQLParserException { - for (String c : new String[]{"u", "e", "n", "r", "b", "rb"}) { - final String prefix = c; - String sql = "select " + c + "'test' from foo"; + @ParameterizedTest + @ValueSource(strings = {"u", "e", "n", "r", "b", "rb"}) + public void testRawStringExpressionIssue656(String prefix) throws JSQLParserException { + String sql = "select " + prefix + "'test' from foo"; Statement statement = CCJSqlParserUtil.parse(sql); assertNotNull(statement); statement.accept(new StatementVisitorAdapter() { @@ -4087,7 +4110,6 @@ public void visit(PlainSelect plainSelect) { }); } }); - } } @Test @@ -5059,7 +5081,7 @@ public void testLogicalExpressionSelectItemIssue1381() throws JSQLParserExceptio public void testKeywordAtIssue1414() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("SELECT * FROM table1 at"); } - + @Test public void testIgnoreNullsForWindowFunctionsIssue1429() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("SELECT lag(mydata) IGNORE NULLS OVER (ORDER BY sortorder) AS previous_status FROM mytable"); @@ -5068,52 +5090,52 @@ public void testIgnoreNullsForWindowFunctionsIssue1429() throws JSQLParserExcept @Test @Timeout(1000) public void testPerformanceIssue1438() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("" + - "SELECT \t* FROM TABLE_1 t1\n" + - "WHERE\n" + - "\t(((t1.COL1 = 'VALUE2' )\n" + - "\t\tAND (t1.CAL2 = 'VALUE2' ))\n" + - "\t\tAND (((1 = 1 )\n" + - "\t\t\tAND ((((((t1.id IN (940550 ,940600 ,940650 ,940700 ,940750 ,940800 ,940850 ,940900 ,940950 ,941000 ,941050 ,941100 ,941150 ,941200 ,941250 ,941300 ,941350 ,941400 ,941450 ,941500 ,941550 ,941600 ,941650 ,941700 ,941750 ,941800 ,941850 ,941900 ,941950 ,942000 ,942050 ,942100 ,942150 ,942200 ,942250 ,942300 ,942350 ,942400 ,942450 ,942500 ,942550 ,942600 ,942650 ,942700 ,942750 ,942800 ,942850 ,942900 ,942950 ,943000 ,943050 ,943100 ,943150 ,943200 ,943250 ,943300 ,943350 ,943400 ,943450 ,943500 ,943550 ,943600 ,943650 ,943700 ,943750 ,943800 ,943850 ,943900 ,943950 ,944000 ,944050 ,944100 ,944150 ,944200 ,944250 ,944300 ,944350 ,944400 ,944450 ,944500 ,944550 ,944600 ,944650 ,944700 ,944750 ,944800 ,944850 ,944900 ,944950 ,945000 ,945050 ,945100 ,945150 ,945200 ,945250 ,945300 ))\n" + - "\t\t\t\tOR (t1.id IN (945350 ,945400 ,945450 ,945500 ,945550 ,945600 ,945650 ,945700 ,945750 ,945800 ,945850 ,945900 ,945950 ,946000 ,946050 ,946100 ,946150 ,946200 ,946250 ,946300 ,946350 ,946400 ,946450 ,946500 ,946550 ,946600 ,946650 ,946700 ,946750 ,946800 ,946850 ,946900 ,946950 ,947000 ,947050 ,947100 ,947150 ,947200 ,947250 ,947300 ,947350 ,947400 ,947450 ,947500 ,947550 ,947600 ,947650 ,947700 ,947750 ,947800 ,947850 ,947900 ,947950 ,948000 ,948050 ,948100 ,948150 ,948200 ,948250 ,948300 ,948350 ,948400 ,948450 ,948500 ,948550 ,948600 ,948650 ,948700 ,948750 ,948800 ,948850 ,948900 ,948950 ,949000 ,949050 ,949100 ,949150 ,949200 ,949250 ,949300 ,949350 ,949400 ,949450 ,949500 ,949550 ,949600 ,949650 ,949700 ,949750 ,949800 ,949850 ,949900 ,949950 ,950000 ,950050 ,950100 )))\n" + - "\t\t\t\tOR (t1.id IN (950150 ,950200 ,950250 ,950300 ,950350 ,950400 ,950450 ,950500 ,950550 ,950600 ,950650 ,950700 ,950750 ,950800 ,950850 ,950900 ,950950 ,951000 ,951050 ,951100 ,951150 ,951200 ,951250 ,951300 ,951350 ,951400 ,951450 ,951500 ,951550 ,951600 ,951650 ,951700 ,951750 ,951800 ,951850 ,951900 ,951950 ,952000 ,952050 ,952100 ,952150 ,952200 ,952250 ,952300 ,952350 ,952400 ,952450 ,952500 ,952550 ,952600 ,952650 ,952700 ,952750 ,952800 ,952850 ,952900 ,952950 ,953000 ,953050 ,953100 ,953150 ,953200 ,953250 ,953300 ,953350 ,953400 ,953450 ,953500 ,953550 ,953600 ,953650 ,953700 )))\n" + - "\t\t\t\tOR (t1.id IN (953750 ,953800 ,953850 ,953900 ,953950 ,954000 ,954050 ,954100 ,954150 ,954200 ,954250 ,954300 ,954350 ,954400 ,954450 ,954500 ,954550 ,954600 ,954650 ,954700 ,954750 ,954800 ,954850 ,954900 ,954950 ,955000 ,955050 ,955100 ,955150 ,955200 ,955250 ,955300 ,955350 ,955400 ,955450 ,955500 ,955550 ,955600 ,955650 ,955700 ,955750 ,955800 ,955850 ,955900 ,955950 ,956000 ,956050 ,956100 ,956150 ,956200 ,956250 ,956300 ,956350 ,956400 ,956450 ,956500 ,956550 ,956600 ,956650 ,956700 ,956750 ,956800 ,956850 ,956900 ,956950 ,957000 ,957050 ,957100 ,957150 ,957200 ,957250 ,957300 )))\n" + - "\t\t\t\tOR (t1.id IN (944100, 944150, 944200, 944250, 944300, 944350, 944400, 944450, 944500, 944550, 944600, 944650, 944700, 944750, 944800, 944850, 944900, 944950, 945000 )))\n" + - "\t\t\t\tOR (t1.id IN (957350 ,957400 ,957450 ,957500 ,957550 ,957600 ,957650 ,957700 ,957750 ,957800 ,957850 ,957900 ,957950 ,958000 ,958050 ,958100 ,958150 ,958200 ,958250 ,958300 ,958350 ,958400 ,958450 ,958500 ,958550 ,958600 ,958650 ,958700 ,958750 ,958800 ,958850 ,958900 ,958950 ,959000 ,959050 ,959100 ,959150 ,959200 ,959250 ,959300 ,959350 ,959400 ,959450 ,959500 ,959550 ,959600 ,959650 ,959700 ,959750 ,959800 ,959850 ,959900 ,959950 ,960000 ,960050 ,960100 ,960150 ,960200 ,960250 ,960300 ,960350 ,960400 ,960450 ,960500 ,960550 ,960600 ,960650 ,960700 ,960750 ,960800 ,960850 ,960900 ,960950 ,961000 ,961050 ,961100 ,961150 ,961200 ,961250 ,961300 ,961350 ,961400 ,961450 ,961500 ,961550 ,961600 ,961650 ,961700 ,961750 ,961800 ,961850 ,961900 ,961950 ,962000 ,962050 ,962100 ))))\n" + - "\t\t\t\tOR (t1.id IN (962150 ,962200 ,962250 ,962300 ,962350 ,962400 ,962450 ,962500 ,962550 ,962600 ,962650 ,962700 ,962750 ,962800 ,962850 ,962900 ,962950 ,963000 ,963050 ,963100 ,963150 ,963200 ,963250 ,963300 ,963350 ,963400 ,963450 ,963500 ,963550 ,963600 ,963650 ,963700 ,963750 ,963800 ,963850 ,963900 ,963950 ,964000 ,964050 ,964100 ,964150 ,964200 ,964250 ,964300 ,964350 ,964400 ,964450 ,964500 ,964550 ,964600 ,964650 ,964700 ,964750 ,964800 ,964850 ,964900 ,964950 ,965000 ,965050 ,965100 ,965150 ,965200 ,965250 ,965300 ,965350 ,965400 ,965450 ,965500 ))))\n" + - "\tAND t1.COL3 IN (\n" + - "\t SELECT\n" + - "\t\t t2.COL3\n" + - "\t FROM\n" + - "\t\t TABLE_6 t6,\n" + - "\t\t TABLE_1 t5,\n" + - "\t\t TABLE_4 t4,\n" + - "\t\t TABLE_3 t3,\n" + - "\t\t TABLE_1 t2\n" + - "\t WHERE\n" + - "\t\t (((((((t5.CAL3 = T6.id)\n" + - "\t\t\t AND (t5.CAL5 = t6.CAL5))\n" + - "\t\t\t AND (t5.CAL1 = t6.CAL1))\n" + - "\t\t\t AND (t3.CAL1 IN (108500)))\n" + - "\t\t\t AND (t5.id = t2.id))\n" + - "\t\t\t AND NOT ((t6.CAL6 IN ('VALUE'))))\n" + - "\t\t\t AND ((t2.id = t3.CAL2)\n" + - "\t\t\t\t AND (t4.id = t3.CAL3))))\n" + - "ORDER BY\n" + - "\tt1.id ASC", true); + assertSqlCanBeParsedAndDeparsed("" + + "SELECT \t* FROM TABLE_1 t1\n" + + "WHERE\n" + + "\t(((t1.COL1 = 'VALUE2' )\n" + + "\t\tAND (t1.CAL2 = 'VALUE2' ))\n" + + "\t\tAND (((1 = 1 )\n" + + "\t\t\tAND ((((((t1.id IN (940550 ,940600 ,940650 ,940700 ,940750 ,940800 ,940850 ,940900 ,940950 ,941000 ,941050 ,941100 ,941150 ,941200 ,941250 ,941300 ,941350 ,941400 ,941450 ,941500 ,941550 ,941600 ,941650 ,941700 ,941750 ,941800 ,941850 ,941900 ,941950 ,942000 ,942050 ,942100 ,942150 ,942200 ,942250 ,942300 ,942350 ,942400 ,942450 ,942500 ,942550 ,942600 ,942650 ,942700 ,942750 ,942800 ,942850 ,942900 ,942950 ,943000 ,943050 ,943100 ,943150 ,943200 ,943250 ,943300 ,943350 ,943400 ,943450 ,943500 ,943550 ,943600 ,943650 ,943700 ,943750 ,943800 ,943850 ,943900 ,943950 ,944000 ,944050 ,944100 ,944150 ,944200 ,944250 ,944300 ,944350 ,944400 ,944450 ,944500 ,944550 ,944600 ,944650 ,944700 ,944750 ,944800 ,944850 ,944900 ,944950 ,945000 ,945050 ,945100 ,945150 ,945200 ,945250 ,945300 ))\n" + + "\t\t\t\tOR (t1.id IN (945350 ,945400 ,945450 ,945500 ,945550 ,945600 ,945650 ,945700 ,945750 ,945800 ,945850 ,945900 ,945950 ,946000 ,946050 ,946100 ,946150 ,946200 ,946250 ,946300 ,946350 ,946400 ,946450 ,946500 ,946550 ,946600 ,946650 ,946700 ,946750 ,946800 ,946850 ,946900 ,946950 ,947000 ,947050 ,947100 ,947150 ,947200 ,947250 ,947300 ,947350 ,947400 ,947450 ,947500 ,947550 ,947600 ,947650 ,947700 ,947750 ,947800 ,947850 ,947900 ,947950 ,948000 ,948050 ,948100 ,948150 ,948200 ,948250 ,948300 ,948350 ,948400 ,948450 ,948500 ,948550 ,948600 ,948650 ,948700 ,948750 ,948800 ,948850 ,948900 ,948950 ,949000 ,949050 ,949100 ,949150 ,949200 ,949250 ,949300 ,949350 ,949400 ,949450 ,949500 ,949550 ,949600 ,949650 ,949700 ,949750 ,949800 ,949850 ,949900 ,949950 ,950000 ,950050 ,950100 )))\n" + + "\t\t\t\tOR (t1.id IN (950150 ,950200 ,950250 ,950300 ,950350 ,950400 ,950450 ,950500 ,950550 ,950600 ,950650 ,950700 ,950750 ,950800 ,950850 ,950900 ,950950 ,951000 ,951050 ,951100 ,951150 ,951200 ,951250 ,951300 ,951350 ,951400 ,951450 ,951500 ,951550 ,951600 ,951650 ,951700 ,951750 ,951800 ,951850 ,951900 ,951950 ,952000 ,952050 ,952100 ,952150 ,952200 ,952250 ,952300 ,952350 ,952400 ,952450 ,952500 ,952550 ,952600 ,952650 ,952700 ,952750 ,952800 ,952850 ,952900 ,952950 ,953000 ,953050 ,953100 ,953150 ,953200 ,953250 ,953300 ,953350 ,953400 ,953450 ,953500 ,953550 ,953600 ,953650 ,953700 )))\n" + + "\t\t\t\tOR (t1.id IN (953750 ,953800 ,953850 ,953900 ,953950 ,954000 ,954050 ,954100 ,954150 ,954200 ,954250 ,954300 ,954350 ,954400 ,954450 ,954500 ,954550 ,954600 ,954650 ,954700 ,954750 ,954800 ,954850 ,954900 ,954950 ,955000 ,955050 ,955100 ,955150 ,955200 ,955250 ,955300 ,955350 ,955400 ,955450 ,955500 ,955550 ,955600 ,955650 ,955700 ,955750 ,955800 ,955850 ,955900 ,955950 ,956000 ,956050 ,956100 ,956150 ,956200 ,956250 ,956300 ,956350 ,956400 ,956450 ,956500 ,956550 ,956600 ,956650 ,956700 ,956750 ,956800 ,956850 ,956900 ,956950 ,957000 ,957050 ,957100 ,957150 ,957200 ,957250 ,957300 )))\n" + + "\t\t\t\tOR (t1.id IN (944100, 944150, 944200, 944250, 944300, 944350, 944400, 944450, 944500, 944550, 944600, 944650, 944700, 944750, 944800, 944850, 944900, 944950, 945000 )))\n" + + "\t\t\t\tOR (t1.id IN (957350 ,957400 ,957450 ,957500 ,957550 ,957600 ,957650 ,957700 ,957750 ,957800 ,957850 ,957900 ,957950 ,958000 ,958050 ,958100 ,958150 ,958200 ,958250 ,958300 ,958350 ,958400 ,958450 ,958500 ,958550 ,958600 ,958650 ,958700 ,958750 ,958800 ,958850 ,958900 ,958950 ,959000 ,959050 ,959100 ,959150 ,959200 ,959250 ,959300 ,959350 ,959400 ,959450 ,959500 ,959550 ,959600 ,959650 ,959700 ,959750 ,959800 ,959850 ,959900 ,959950 ,960000 ,960050 ,960100 ,960150 ,960200 ,960250 ,960300 ,960350 ,960400 ,960450 ,960500 ,960550 ,960600 ,960650 ,960700 ,960750 ,960800 ,960850 ,960900 ,960950 ,961000 ,961050 ,961100 ,961150 ,961200 ,961250 ,961300 ,961350 ,961400 ,961450 ,961500 ,961550 ,961600 ,961650 ,961700 ,961750 ,961800 ,961850 ,961900 ,961950 ,962000 ,962050 ,962100 ))))\n" + + "\t\t\t\tOR (t1.id IN (962150 ,962200 ,962250 ,962300 ,962350 ,962400 ,962450 ,962500 ,962550 ,962600 ,962650 ,962700 ,962750 ,962800 ,962850 ,962900 ,962950 ,963000 ,963050 ,963100 ,963150 ,963200 ,963250 ,963300 ,963350 ,963400 ,963450 ,963500 ,963550 ,963600 ,963650 ,963700 ,963750 ,963800 ,963850 ,963900 ,963950 ,964000 ,964050 ,964100 ,964150 ,964200 ,964250 ,964300 ,964350 ,964400 ,964450 ,964500 ,964550 ,964600 ,964650 ,964700 ,964750 ,964800 ,964850 ,964900 ,964950 ,965000 ,965050 ,965100 ,965150 ,965200 ,965250 ,965300 ,965350 ,965400 ,965450 ,965500 ))))\n" + + "\tAND t1.COL3 IN (\n" + + "\t SELECT\n" + + "\t\t t2.COL3\n" + + "\t FROM\n" + + "\t\t TABLE_6 t6,\n" + + "\t\t TABLE_1 t5,\n" + + "\t\t TABLE_4 t4,\n" + + "\t\t TABLE_3 t3,\n" + + "\t\t TABLE_1 t2\n" + + "\t WHERE\n" + + "\t\t (((((((t5.CAL3 = T6.id)\n" + + "\t\t\t AND (t5.CAL5 = t6.CAL5))\n" + + "\t\t\t AND (t5.CAL1 = t6.CAL1))\n" + + "\t\t\t AND (t3.CAL1 IN (108500)))\n" + + "\t\t\t AND (t5.id = t2.id))\n" + + "\t\t\t AND NOT ((t6.CAL6 IN ('VALUE'))))\n" + + "\t\t\t AND ((t2.id = t3.CAL2)\n" + + "\t\t\t\t AND (t4.id = t3.CAL3))))\n" + + "ORDER BY\n" + + "\tt1.id ASC", true); } @Test @Timeout(1000) public void testPerformanceIssue1397() throws Exception { - String sqlStr = IOUtils.toString( SelectTest.class.getResource( "/net/sf/jsqlparser/statement/select/performanceIssue1397.sql" ), Charset.defaultCharset() ); + String sqlStr = IOUtils.toString(SelectTest.class.getResource("/net/sf/jsqlparser/statement/select/performanceIssue1397.sql"), Charset.defaultCharset()); assertSqlCanBeParsedAndDeparsed(sqlStr, true); } /** - * The purpose of the test is to run into a timeout and to stop the parser when this happens. - * We provide an INVALID statement for this purpose, which will fail the SIMPLE parse - * and then hang with COMPLEX parsing until the timeout occurs. + * The purpose of the test is to run into a timeout and to stop the parser when this happens. We provide an INVALID + * statement for this purpose, which will fail the SIMPLE parse and then hang with COMPLEX parsing until the timeout + * occurs. * * We repeat that test multiple times and want to see no stale references to the Parser after timeout. * @@ -5121,49 +5143,49 @@ public void testPerformanceIssue1397() throws Exception { */ @Test public void testParserInterruptedByTimeout() { - String sqlStr = "" + - "SELECT \t* FROM TABLE_1 t1\n" + - "WHERE\n" + - "\t(((t1.COL1 = 'VALUE2' )\n" + - "\t\tAND (t1.CAL2 = 'VALUE2' ))\n" + - "\t\tAND (((1 = 1 )\n" + - "\t\t\tAND ((((((t1.id IN (940550 ,940600 ,940650 ,940700 ,940750 ,940800 ,940850 ,940900 ,940950 ,941000 ,941050 ,941100 ,941150 ,941200 ,941250 ,941300 ,941350 ,941400 ,941450 ,941500 ,941550 ,941600 ,941650 ,941700 ,941750 ,941800 ,941850 ,941900 ,941950 ,942000 ,942050 ,942100 ,942150 ,942200 ,942250 ,942300 ,942350 ,942400 ,942450 ,942500 ,942550 ,942600 ,942650 ,942700 ,942750 ,942800 ,942850 ,942900 ,942950 ,943000 ,943050 ,943100 ,943150 ,943200 ,943250 ,943300 ,943350 ,943400 ,943450 ,943500 ,943550 ,943600 ,943650 ,943700 ,943750 ,943800 ,943850 ,943900 ,943950 ,944000 ,944050 ,944100 ,944150 ,944200 ,944250 ,944300 ,944350 ,944400 ,944450 ,944500 ,944550 ,944600 ,944650 ,944700 ,944750 ,944800 ,944850 ,944900 ,944950 ,945000 ,945050 ,945100 ,945150 ,945200 ,945250 ,945300 ))\n" + - "\t\t\t\tOR (t1.id IN (945350 ,945400 ,945450 ,945500 ,945550 ,945600 ,945650 ,945700 ,945750 ,945800 ,945850 ,945900 ,945950 ,946000 ,946050 ,946100 ,946150 ,946200 ,946250 ,946300 ,946350 ,946400 ,946450 ,946500 ,946550 ,946600 ,946650 ,946700 ,946750 ,946800 ,946850 ,946900 ,946950 ,947000 ,947050 ,947100 ,947150 ,947200 ,947250 ,947300 ,947350 ,947400 ,947450 ,947500 ,947550 ,947600 ,947650 ,947700 ,947750 ,947800 ,947850 ,947900 ,947950 ,948000 ,948050 ,948100 ,948150 ,948200 ,948250 ,948300 ,948350 ,948400 ,948450 ,948500 ,948550 ,948600 ,948650 ,948700 ,948750 ,948800 ,948850 ,948900 ,948950 ,949000 ,949050 ,949100 ,949150 ,949200 ,949250 ,949300 ,949350 ,949400 ,949450 ,949500 ,949550 ,949600 ,949650 ,949700 ,949750 ,949800 ,949850 ,949900 ,949950 ,950000 ,950050 ,950100 )))\n" + - "\t\t\t\tOR (t1.id IN (950150 ,950200 ,950250 ,950300 ,950350 ,950400 ,950450 ,950500 ,950550 ,950600 ,950650 ,950700 ,950750 ,950800 ,950850 ,950900 ,950950 ,951000 ,951050 ,951100 ,951150 ,951200 ,951250 ,951300 ,951350 ,951400 ,951450 ,951500 ,951550 ,951600 ,951650 ,951700 ,951750 ,951800 ,951850 ,951900 ,951950 ,952000 ,952050 ,952100 ,952150 ,952200 ,952250 ,952300 ,952350 ,952400 ,952450 ,952500 ,952550 ,952600 ,952650 ,952700 ,952750 ,952800 ,952850 ,952900 ,952950 ,953000 ,953050 ,953100 ,953150 ,953200 ,953250 ,953300 ,953350 ,953400 ,953450 ,953500 ,953550 ,953600 ,953650 ,953700 )))\n" + - "\t\t\t\tOR (t1.id IN (953750 ,953800 ,953850 ,953900 ,953950 ,954000 ,954050 ,954100 ,954150 ,954200 ,954250 ,954300 ,954350 ,954400 ,954450 ,954500 ,954550 ,954600 ,954650 ,954700 ,954750 ,954800 ,954850 ,954900 ,954950 ,955000 ,955050 ,955100 ,955150 ,955200 ,955250 ,955300 ,955350 ,955400 ,955450 ,955500 ,955550 ,955600 ,955650 ,955700 ,955750 ,955800 ,955850 ,955900 ,955950 ,956000 ,956050 ,956100 ,956150 ,956200 ,956250 ,956300 ,956350 ,956400 ,956450 ,956500 ,956550 ,956600 ,956650 ,956700 ,956750 ,956800 ,956850 ,956900 ,956950 ,957000 ,957050 ,957100 ,957150 ,957200 ,957250 ,957300 )))\n" + - "\t\t\t\tOR (t1.id IN (944100, 944150, 944200, 944250, 944300, 944350, 944400, 944450, 944500, 944550, 944600, 944650, 944700, 944750, 944800, 944850, 944900, 944950, 945000 )))\n" + - "\t\t\t\tOR (t1.id IN (957350 ,957400 ,957450 ,957500 ,957550 ,957600 ,957650 ,957700 ,957750 ,957800 ,957850 ,957900 ,957950 ,958000 ,958050 ,958100 ,958150 ,958200 ,958250 ,958300 ,958350 ,958400 ,958450 ,958500 ,958550 ,958600 ,958650 ,958700 ,958750 ,958800 ,958850 ,958900 ,958950 ,959000 ,959050 ,959100 ,959150 ,959200 ,959250 ,959300 ,959350 ,959400 ,959450 ,959500 ,959550 ,959600 ,959650 ,959700 ,959750 ,959800 ,959850 ,959900 ,959950 ,960000 ,960050 ,960100 ,960150 ,960200 ,960250 ,960300 ,960350 ,960400 ,960450 ,960500 ,960550 ,960600 ,960650 ,960700 ,960750 ,960800 ,960850 ,960900 ,960950 ,961000 ,961050 ,961100 ,961150 ,961200 ,961250 ,961300 ,961350 ,961400 ,961450 ,961500 ,961550 ,961600 ,961650 ,961700 ,961750 ,961800 ,961850 ,961900 ,961950 ,962000 ,962050 ,962100 ))))\n" + - "\t\t\t\tOR (t1.id IN (962150 ,962200 ,962250 ,962300 ,962350 ,962400 ,962450 ,962500 ,962550 ,962600 ,962650 ,962700 ,962750 ,962800 ,962850 ,962900 ,962950 ,963000 ,963050 ,963100 ,963150 ,963200 ,963250 ,963300 ,963350 ,963400 ,963450 ,963500 ,963550 ,963600 ,963650 ,963700 ,963750 ,963800 ,963850 ,963900 ,963950 ,964000 ,964050 ,964100 ,964150 ,964200 ,964250 ,964300 ,964350 ,964400 ,964450 ,964500 ,964550 ,964600 ,964650 ,964700 ,964750 ,964800 ,964850 ,964900 ,964950 ,965000 ,965050 ,965100 ,965150 ,965200 ,965250 ,965300 ,965350 ,965400 ,965450 ,965500 ))))\n" + - "\tAND t1.COL3 IN (\n" + - "\t SELECT\n" + - "\t\t t2.COL3\n" + - "\t FROM\n" + - "\t\t TABLE_6 t6,\n" + - "\t\t TABLE_1 t5,\n" + - "\t\t TABLE_4 t4,\n" + - "\t\t TABLE_3 t3,\n" + - "\t\t TABLE_1 t2\n" + - "\t WHERE\n" + - "\t\t (((((((t5.CAL3 = T6.id)\n" + - "\t\t\t AND (t5.CAL5 = t6.CAL5))\n" + - "\t\t\t AND (t5.CAL1 = t6.CAL1))\n" + - "\t\t\t AND (t3.CAL1 IN (108500)))\n" + - "\t\t\t AND (t5.id = t2.id))\n" + - "\t\t\t AND NOT ((t6.CAL6 IN ('VALUE'))))\n" + - "\t\t\t AND ((t2.id = t3.CAL2)\n" + - "\t\t\t\t AND (t4.id = t3.CAL3))))\n" + - // add two redundant unmatched brackets in order to make the Simple Parser fail + String sqlStr = "" + + "SELECT \t* FROM TABLE_1 t1\n" + + "WHERE\n" + + "\t(((t1.COL1 = 'VALUE2' )\n" + + "\t\tAND (t1.CAL2 = 'VALUE2' ))\n" + + "\t\tAND (((1 = 1 )\n" + + "\t\t\tAND ((((((t1.id IN (940550 ,940600 ,940650 ,940700 ,940750 ,940800 ,940850 ,940900 ,940950 ,941000 ,941050 ,941100 ,941150 ,941200 ,941250 ,941300 ,941350 ,941400 ,941450 ,941500 ,941550 ,941600 ,941650 ,941700 ,941750 ,941800 ,941850 ,941900 ,941950 ,942000 ,942050 ,942100 ,942150 ,942200 ,942250 ,942300 ,942350 ,942400 ,942450 ,942500 ,942550 ,942600 ,942650 ,942700 ,942750 ,942800 ,942850 ,942900 ,942950 ,943000 ,943050 ,943100 ,943150 ,943200 ,943250 ,943300 ,943350 ,943400 ,943450 ,943500 ,943550 ,943600 ,943650 ,943700 ,943750 ,943800 ,943850 ,943900 ,943950 ,944000 ,944050 ,944100 ,944150 ,944200 ,944250 ,944300 ,944350 ,944400 ,944450 ,944500 ,944550 ,944600 ,944650 ,944700 ,944750 ,944800 ,944850 ,944900 ,944950 ,945000 ,945050 ,945100 ,945150 ,945200 ,945250 ,945300 ))\n" + + "\t\t\t\tOR (t1.id IN (945350 ,945400 ,945450 ,945500 ,945550 ,945600 ,945650 ,945700 ,945750 ,945800 ,945850 ,945900 ,945950 ,946000 ,946050 ,946100 ,946150 ,946200 ,946250 ,946300 ,946350 ,946400 ,946450 ,946500 ,946550 ,946600 ,946650 ,946700 ,946750 ,946800 ,946850 ,946900 ,946950 ,947000 ,947050 ,947100 ,947150 ,947200 ,947250 ,947300 ,947350 ,947400 ,947450 ,947500 ,947550 ,947600 ,947650 ,947700 ,947750 ,947800 ,947850 ,947900 ,947950 ,948000 ,948050 ,948100 ,948150 ,948200 ,948250 ,948300 ,948350 ,948400 ,948450 ,948500 ,948550 ,948600 ,948650 ,948700 ,948750 ,948800 ,948850 ,948900 ,948950 ,949000 ,949050 ,949100 ,949150 ,949200 ,949250 ,949300 ,949350 ,949400 ,949450 ,949500 ,949550 ,949600 ,949650 ,949700 ,949750 ,949800 ,949850 ,949900 ,949950 ,950000 ,950050 ,950100 )))\n" + + "\t\t\t\tOR (t1.id IN (950150 ,950200 ,950250 ,950300 ,950350 ,950400 ,950450 ,950500 ,950550 ,950600 ,950650 ,950700 ,950750 ,950800 ,950850 ,950900 ,950950 ,951000 ,951050 ,951100 ,951150 ,951200 ,951250 ,951300 ,951350 ,951400 ,951450 ,951500 ,951550 ,951600 ,951650 ,951700 ,951750 ,951800 ,951850 ,951900 ,951950 ,952000 ,952050 ,952100 ,952150 ,952200 ,952250 ,952300 ,952350 ,952400 ,952450 ,952500 ,952550 ,952600 ,952650 ,952700 ,952750 ,952800 ,952850 ,952900 ,952950 ,953000 ,953050 ,953100 ,953150 ,953200 ,953250 ,953300 ,953350 ,953400 ,953450 ,953500 ,953550 ,953600 ,953650 ,953700 )))\n" + + "\t\t\t\tOR (t1.id IN (953750 ,953800 ,953850 ,953900 ,953950 ,954000 ,954050 ,954100 ,954150 ,954200 ,954250 ,954300 ,954350 ,954400 ,954450 ,954500 ,954550 ,954600 ,954650 ,954700 ,954750 ,954800 ,954850 ,954900 ,954950 ,955000 ,955050 ,955100 ,955150 ,955200 ,955250 ,955300 ,955350 ,955400 ,955450 ,955500 ,955550 ,955600 ,955650 ,955700 ,955750 ,955800 ,955850 ,955900 ,955950 ,956000 ,956050 ,956100 ,956150 ,956200 ,956250 ,956300 ,956350 ,956400 ,956450 ,956500 ,956550 ,956600 ,956650 ,956700 ,956750 ,956800 ,956850 ,956900 ,956950 ,957000 ,957050 ,957100 ,957150 ,957200 ,957250 ,957300 )))\n" + + "\t\t\t\tOR (t1.id IN (944100, 944150, 944200, 944250, 944300, 944350, 944400, 944450, 944500, 944550, 944600, 944650, 944700, 944750, 944800, 944850, 944900, 944950, 945000 )))\n" + + "\t\t\t\tOR (t1.id IN (957350 ,957400 ,957450 ,957500 ,957550 ,957600 ,957650 ,957700 ,957750 ,957800 ,957850 ,957900 ,957950 ,958000 ,958050 ,958100 ,958150 ,958200 ,958250 ,958300 ,958350 ,958400 ,958450 ,958500 ,958550 ,958600 ,958650 ,958700 ,958750 ,958800 ,958850 ,958900 ,958950 ,959000 ,959050 ,959100 ,959150 ,959200 ,959250 ,959300 ,959350 ,959400 ,959450 ,959500 ,959550 ,959600 ,959650 ,959700 ,959750 ,959800 ,959850 ,959900 ,959950 ,960000 ,960050 ,960100 ,960150 ,960200 ,960250 ,960300 ,960350 ,960400 ,960450 ,960500 ,960550 ,960600 ,960650 ,960700 ,960750 ,960800 ,960850 ,960900 ,960950 ,961000 ,961050 ,961100 ,961150 ,961200 ,961250 ,961300 ,961350 ,961400 ,961450 ,961500 ,961550 ,961600 ,961650 ,961700 ,961750 ,961800 ,961850 ,961900 ,961950 ,962000 ,962050 ,962100 ))))\n" + + "\t\t\t\tOR (t1.id IN (962150 ,962200 ,962250 ,962300 ,962350 ,962400 ,962450 ,962500 ,962550 ,962600 ,962650 ,962700 ,962750 ,962800 ,962850 ,962900 ,962950 ,963000 ,963050 ,963100 ,963150 ,963200 ,963250 ,963300 ,963350 ,963400 ,963450 ,963500 ,963550 ,963600 ,963650 ,963700 ,963750 ,963800 ,963850 ,963900 ,963950 ,964000 ,964050 ,964100 ,964150 ,964200 ,964250 ,964300 ,964350 ,964400 ,964450 ,964500 ,964550 ,964600 ,964650 ,964700 ,964750 ,964800 ,964850 ,964900 ,964950 ,965000 ,965050 ,965100 ,965150 ,965200 ,965250 ,965300 ,965350 ,965400 ,965450 ,965500 ))))\n" + + "\tAND t1.COL3 IN (\n" + + "\t SELECT\n" + + "\t\t t2.COL3\n" + + "\t FROM\n" + + "\t\t TABLE_6 t6,\n" + + "\t\t TABLE_1 t5,\n" + + "\t\t TABLE_4 t4,\n" + + "\t\t TABLE_3 t3,\n" + + "\t\t TABLE_1 t2\n" + + "\t WHERE\n" + + "\t\t (((((((t5.CAL3 = T6.id)\n" + + "\t\t\t AND (t5.CAL5 = t6.CAL5))\n" + + "\t\t\t AND (t5.CAL1 = t6.CAL1))\n" + + "\t\t\t AND (t3.CAL1 IN (108500)))\n" + + "\t\t\t AND (t5.id = t2.id))\n" + + "\t\t\t AND NOT ((t6.CAL6 IN ('VALUE'))))\n" + + "\t\t\t AND ((t2.id = t3.CAL2)\n" + + "\t\t\t\t AND (t4.id = t3.CAL3))))\n" + + // add two redundant unmatched brackets in order to make the Simple Parser fail // and the complex parser stuck - " )) \n" + - "ORDER BY\n" + - "\tt1.id ASC"; + " )) \n" + + "ORDER BY\n" + + "\tt1.id ASC"; MemoryLeakVerifier verifier = new MemoryLeakVerifier(); int parallelThreads = Runtime.getRuntime().availableProcessors() + 1; ExecutorService executorService = Executors.newFixedThreadPool(parallelThreads); - for (int i=0; i<parallelThreads; i++) { + for (int i = 0; i < parallelThreads; i++) { executorService.submit(new Runnable() { @Override public void run() { @@ -5205,16 +5227,13 @@ public void testWithIsolation() throws JSQLParserException { isolation = ((PlainSelect) select.getSelectBody()).getWithIsolation().getIsolation(); assertEquals("Cs", isolation); assertSqlCanBeParsedAndDeparsed(statement); - - statement = "SELECT rs.col, * FROM mytable RS WHERE mytable.col = 9"; - assertSqlCanBeParsedAndDeparsed(statement); } - + @Test public void testLoclTimezone1471() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("SELECT TO_CHAR(CAST(SYSDATE AS TIMESTAMP WITH LOCAL TIME ZONE), 'HH:MI:SS AM TZD') FROM DUAL"); } - + @Test public void testMissingLimitIssue1505() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("(SELECT * FROM mytable) LIMIT 1"); @@ -5223,13 +5242,86 @@ public void testMissingLimitIssue1505() throws JSQLParserException { @Test public void testPostgresNaturalJoinIssue1559() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed( - "SELECT t1.ID,t1.name, t2.DID, t2.name\n" + - "FROM table1 as t1\n" + - "NATURAL RIGHT JOIN table2 as t2", true); + "SELECT t1.ID,t1.name, t2.DID, t2.name\n" + + "FROM table1 as t1\n" + + "NATURAL RIGHT JOIN table2 as t2", true); assertSqlCanBeParsedAndDeparsed( - "SELECT t1.ID,t1.name, t2.DID, t2.name\n" + - "FROM table1 as t1\n" + - "NATURAL RIGHT JOIN table2 as t2", true); + "SELECT t1.ID,t1.name, t2.DID, t2.name\n" + + "FROM table1 as t1\n" + + "NATURAL RIGHT JOIN table2 as t2", true); + } + + @Test + public void testNamedWindowDefinitionIssue1581() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT sum(salary) OVER w, avg(salary) OVER w FROM empsalary WINDOW w AS (PARTITION BY depname ORDER BY salary DESC)"); + } + + @Test + public void testNamedWindowDefinitionIssue1581_2() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT sum(salary) OVER w1, avg(salary) OVER w2 FROM empsalary WINDOW w1 AS (PARTITION BY depname ORDER BY salary DESC), w2 AS (PARTITION BY depname2 ORDER BY salary2)"); + } + + @Test + public void testTimestamptzDateTimeLiteral() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT * FROM table WHERE x >= TIMESTAMPTZ '2021-07-05 00:00:00+00'"); + } + + @Test + public void testFunctionComplexExpressionParametersIssue1644() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT test(1=1, 'a', 'b')", true); + assertSqlCanBeParsedAndDeparsed("SELECT if(instr('avc','a')=0, 'avc', 'aaa')", true); + } + + @Test + public void testOracleDBLink() throws JSQLParserException { + String sqlStr = "SELECT * from tablename@dblink"; + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + Select select = (Select) CCJSqlParserUtil.parse(sqlStr); + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + Table table = (Table) plainSelect.getFromItem(); + + assertNotEquals("tablename@dblink", table.getName()); + assertEquals("tablename", table.getName()); + assertEquals("dblink", table.getDBLinkName()); + } + + @Test + public void testSelectStatementWithForUpdateAndSkipLockedTokens() throws JSQLParserException { + String sql = "SELECT * FROM test FOR UPDATE SKIP LOCKED"; + assertSqlCanBeParsedAndDeparsed(sql); + + Select select = (Select) CCJSqlParserUtil.parse(sql); + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + assertTrue(plainSelect.isForUpdate()); + assertTrue(plainSelect.isSkipLocked()); + } + + @Test + public void testSelectStatementWithForUpdateButWithoutSkipLockedTokens() throws JSQLParserException { + String sql = "SELECT * FROM test FOR UPDATE"; + assertSqlCanBeParsedAndDeparsed(sql); + + Select select = (Select) CCJSqlParserUtil.parse(sql); + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + assertTrue(plainSelect.isForUpdate()); + assertFalse(plainSelect.isSkipLocked()); + } + + @Test + public void testSelectStatementWithoutForUpdateAndSkipLockedTokens() throws JSQLParserException { + String sql = "SELECT * FROM test"; + assertSqlCanBeParsedAndDeparsed(sql); + + Select select = (Select) CCJSqlParserUtil.parse(sql); + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + assertFalse(plainSelect.isForUpdate()); + assertFalse(plainSelect.isSkipLocked()); + } + + @Test + public void testSelectMultidimensionalArrayStatement() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT f1, f2[1][1], f3[1][2][3] FROM test"); } } diff --git a/src/test/java/net/sf/jsqlparser/statement/select/SpecialOracleTest.java b/src/test/java/net/sf/jsqlparser/statement/select/SpecialOracleTest.java index 39144cc67..b8ae25a2f 100644 --- a/src/test/java/net/sf/jsqlparser/statement/select/SpecialOracleTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/select/SpecialOracleTest.java @@ -55,6 +55,8 @@ public class SpecialOracleTest { private final List<String> EXPECTED_SUCCESSES = Arrays.asList( "aggregate01.sql", + "analytic_query04.sql", + "analytic_query05.sql", "analytic_query06.sql", "analytic_query08.sql", "analytic_query09.sql", @@ -135,6 +137,7 @@ public class SpecialOracleTest { "function05.sql", "for_update04.sql", "for_update05.sql", + "for_update06.sql", "for_update08.sql", "function01.sql", "function02.sql", @@ -162,6 +165,7 @@ public class SpecialOracleTest { "insert02.sql", "interval02.sql", "interval04.sql", + "interval05.sql", "join01.sql", "join02.sql", "join03.sql", @@ -216,6 +220,7 @@ public class SpecialOracleTest { "query_factoring02.sql", "query_factoring03.sql", "query_factoring06.sql", + "query_factoring07.sql", "query_factoring08.sql", "query_factoring09.sql", "query_factoring11.sql", diff --git a/src/test/java/net/sf/jsqlparser/statement/select/WindowFunctionTest.java b/src/test/java/net/sf/jsqlparser/statement/select/WindowFunctionTest.java new file mode 100644 index 000000000..e6d8f1e92 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/statement/select/WindowFunctionTest.java @@ -0,0 +1,26 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2019 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement.select; + +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.test.TestUtils; +import org.junit.jupiter.api.Test; + +public class WindowFunctionTest { + @Test + public void testListAggOverIssue1652() throws JSQLParserException { + String sqlString = + "SELECT\n" + + " LISTAGG (d.COL_TO_AGG, ' / ') WITHIN GROUP (ORDER BY d.COL_TO_AGG) OVER (PARTITION BY d.PART_COL) AS MY_LISTAGG\n" + + "FROM cte_dummy_data d"; + + TestUtils.assertSqlCanBeParsedAndDeparsed(sqlString, true); + } +} diff --git a/src/test/java/net/sf/jsqlparser/statement/update/UpdateTest.java b/src/test/java/net/sf/jsqlparser/statement/update/UpdateTest.java index f06de1401..fb830110d 100644 --- a/src/test/java/net/sf/jsqlparser/statement/update/UpdateTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/update/UpdateTest.java @@ -24,6 +24,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; + import org.junit.jupiter.api.Test; public class UpdateTest { @@ -79,7 +80,13 @@ public void testUpdateWithSelect2() throws JSQLParserException { @Test public void testUpdateIssue167_SingleQuotes() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("UPDATE tablename SET NAME = 'Customer 2', ADDRESS = 'Address \\' ddad2', AUTH_KEY = 'samplekey' WHERE ID = 2"); + String sqlStr = "UPDATE tablename SET NAME = 'Customer 2', ADDRESS = 'Address \\' ddad2', AUTH_KEY = 'samplekey' WHERE ID = 2"; + + assertSqlCanBeParsedAndDeparsed( + sqlStr + , true + , parser -> parser.withBackslashEscapeCharacter(true) + ); } @Test diff --git a/src/test/java/net/sf/jsqlparser/test/AssortedFeatureTests.java b/src/test/java/net/sf/jsqlparser/test/AssortedFeatureTests.java new file mode 100644 index 000000000..971a7f434 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/test/AssortedFeatureTests.java @@ -0,0 +1,60 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2022 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.test; + +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.expression.LongValue; +import net.sf.jsqlparser.expression.StringValue; +import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import net.sf.jsqlparser.statement.Statement; +import net.sf.jsqlparser.util.deparser.ExpressionDeParser; +import net.sf.jsqlparser.util.deparser.SelectDeParser; +import net.sf.jsqlparser.util.deparser.StatementDeParser; +import org.junit.jupiter.api.Test; + +public class AssortedFeatureTests { + + static class ReplaceColumnAndLongValues extends ExpressionDeParser { + + @Override + public void visit(StringValue stringValue) { + this.getBuffer().append("?"); + } + + @Override + public void visit(LongValue longValue) { + this.getBuffer().append("?"); + } + } + + public static String cleanStatement(String sql) throws JSQLParserException { + StringBuilder buffer = new StringBuilder(); + ExpressionDeParser expr = new ReplaceColumnAndLongValues(); + + SelectDeParser selectDeparser = new SelectDeParser(expr, buffer); + expr.setSelectVisitor(selectDeparser); + expr.setBuffer(buffer); + + StatementDeParser stmtDeparser = new StatementDeParser(expr, selectDeparser, buffer); + + Statement stmt = CCJSqlParserUtil.parse(sql); + + stmt.accept(stmtDeparser); + return stmtDeparser.getBuffer().toString(); + } + + @Test + public void testIssue1608() throws JSQLParserException { + System.out.println(cleanStatement("SELECT 'abc', 5 FROM mytable WHERE col='test'")); + System.out.println(cleanStatement("UPDATE table1 A SET A.columna = 'XXX' WHERE A.cod_table = 'YYY'")); + System.out.println(cleanStatement("INSERT INTO example (num, name, address, tel) VALUES (1, 'name', 'test ', '1234-1234')")); + System.out.println(cleanStatement("DELETE FROM table1 where col=5 and col2=4")); + } +} diff --git a/src/test/java/net/sf/jsqlparser/test/HowToUseSample.java b/src/test/java/net/sf/jsqlparser/test/HowToUseSample.java new file mode 100644 index 000000000..a86aa782b --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/test/HowToUseSample.java @@ -0,0 +1,155 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2022 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.test; + +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.expression.*; +import net.sf.jsqlparser.expression.operators.relational.EqualsTo; +import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import net.sf.jsqlparser.schema.Column; +import net.sf.jsqlparser.schema.Table; +import net.sf.jsqlparser.statement.Statement; +import net.sf.jsqlparser.statement.StatementVisitorAdapter; +import net.sf.jsqlparser.statement.select.PlainSelect; +import net.sf.jsqlparser.statement.select.Select; +import net.sf.jsqlparser.statement.select.SelectExpressionItem; +import net.sf.jsqlparser.statement.select.SelectVisitorAdapter; +import net.sf.jsqlparser.util.deparser.*; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +@SuppressWarnings("PMD") +public class HowToUseSample { + //@formatter:off + /* + SQL Text + └─Statements: net.sf.jsqlparser.statement.select.Select + └─selectBody: net.sf.jsqlparser.statement.select.PlainSelect + ├─selectItems -> Collection<SelectExpressionItem> + │ └─selectItems: net.sf.jsqlparser.statement.select.SelectExpressionItem + │ └─LongValue: 1 + ├─Table: dual + └─where: net.sf.jsqlparser.expression.operators.relational.EqualsTo + ├─Column: a + └─Column: b + */ + //@formatter:on + + @Test + void writeSQL() { + String expectedSQLStr = "SELECT 1 FROM dual t WHERE a = b"; + + // Step 1: generate the Java Object Hierarchy for + SelectExpressionItem selectExpressionItem = + new SelectExpressionItem().withExpression(new LongValue().withValue(1)); + + Table table = new Table().withName("dual").withAlias(new Alias("t", false)); + + Column columnA = new Column().withColumnName("a"); + Column columnB = new Column().withColumnName("b"); + Expression whereExpression = + new EqualsTo().withLeftExpression(columnA).withRightExpression(columnB); + + PlainSelect plainSelect = new PlainSelect().addSelectItems(selectExpressionItem) + .withFromItem(table).withWhere(whereExpression); + Select select = new Select().withSelectBody(plainSelect); + + // Step 2a: Print into a SQL Statement + Assertions.assertEquals(expectedSQLStr, select.toString()); + + // Step 2b: De-Parse into a SQL Statement + StringBuilder builder = new StringBuilder(); + StatementDeParser deParser = new StatementDeParser(builder); + deParser.visit(select); + + Assertions.assertEquals(expectedSQLStr, builder.toString()); + } + + @Test + public void howToParseStatement() throws JSQLParserException { + String sqlStr = "select 1 from dual where a=b"; + + Statement statement = CCJSqlParserUtil.parse(sqlStr); + if (statement instanceof Select) { + Select select = (Select) statement; + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + + SelectExpressionItem selectExpressionItem = + (SelectExpressionItem) plainSelect.getSelectItems().get(0); + Assertions.assertEquals(new LongValue(1), selectExpressionItem.getExpression()); + + Table table = (Table) plainSelect.getFromItem(); + Assertions.assertEquals("dual", table.getName()); + + EqualsTo equalsTo = (EqualsTo) plainSelect.getWhere(); + Column a = (Column) equalsTo.getLeftExpression(); + Column b = (Column) equalsTo.getRightExpression(); + Assertions.assertEquals("a", a.getColumnName()); + Assertions.assertEquals("b", b.getColumnName()); + } + } + + @Test + public void howToUseVisitors() throws JSQLParserException { + + // Define an Expression Visitor reacting on any Expression + // Overwrite the visit() methods for each Expression Class + ExpressionVisitorAdapter expressionVisitorAdapter = new ExpressionVisitorAdapter() { + public void visit(EqualsTo equalsTo) { + equalsTo.getLeftExpression().accept(this); + equalsTo.getRightExpression().accept(this); + } + + public void visit(Column column) { + System.out.println("Found a Column " + column.getColumnName()); + } + }; + + // Define a Select Visitor reacting on a Plain Select invoking the Expression Visitor on the + // Where Clause + SelectVisitorAdapter selectVisitorAdapter = new SelectVisitorAdapter() { + @Override + public void visit(PlainSelect plainSelect) { + plainSelect.getWhere().accept(expressionVisitorAdapter); + } + }; + + // Define a Statement Visitor for dispatching the Statements + StatementVisitorAdapter statementVisitor = new StatementVisitorAdapter() { + public void visit(Select select) { + select.getSelectBody().accept(selectVisitorAdapter); + } + }; + + String sqlStr = "select 1 from dual where a=b"; + Statement stmt = CCJSqlParserUtil.parse(sqlStr); + + // Invoke the Statement Visitor + stmt.accept(statementVisitor); + } + + @Test + public void howToUseFeatures() throws JSQLParserException { + + String sqlStr = "select 1 from [sample_table] where [a]=[b]"; + + // T-SQL Square Bracket Quotation + Statement stmt = + CCJSqlParserUtil.parse(sqlStr, parser -> parser.withSquareBracketQuotation(true)); + + // Set Parser Timeout to 6000 ms + Statement stmt1 = CCJSqlParserUtil.parse(sqlStr, + parser -> parser.withSquareBracketQuotation(true).withTimeOut(6000)); + + // Allow Complex Parsing (which allows nested Expressions, but is much slower) + Statement stmt2 = CCJSqlParserUtil.parse(sqlStr, parser -> parser + .withSquareBracketQuotation(true).withAllowComplexParsing(true).withTimeOut(6000)); + } +} diff --git a/src/test/java/net/sf/jsqlparser/test/TestUtils.java b/src/test/java/net/sf/jsqlparser/test/TestUtils.java index 322250559..3d871aa68 100644 --- a/src/test/java/net/sf/jsqlparser/test/TestUtils.java +++ b/src/test/java/net/sf/jsqlparser/test/TestUtils.java @@ -9,12 +9,16 @@ */ package net.sf.jsqlparser.test; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.function.Consumer; +import java.util.logging.*; import java.util.regex.Pattern; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -34,36 +38,37 @@ import net.sf.jsqlparser.util.deparser.ExpressionDeParser; import net.sf.jsqlparser.util.deparser.SelectDeParser; import net.sf.jsqlparser.util.deparser.StatementDeParser; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.builder.MultilineRecursiveToStringStyle; import org.apache.commons.lang3.builder.ReflectionToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; + /** * * @author toben */ public class TestUtils { - private static final Pattern SQL_COMMENT_PATTERN = Pattern. - compile("(--.*$)|(/\\*.*?\\*/)", Pattern.MULTILINE); + private static final Pattern SQL_COMMENT_PATTERN = + Pattern.compile("(--.*$)|(/\\*.*?\\*/)", Pattern.MULTILINE); - private static final Pattern SQL_SANITATION_PATTERN - = Pattern.compile("(\\s+)", 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 static final Pattern SQL_SANITATION_PATTERN2 = + Pattern.compile("\\s*([!/,()=+\\-*|\\]<>:])\\s*", Pattern.MULTILINE); /** * @param statement * @return the parsed {@link Statement} * @throws JSQLParserException */ - public static Statement assertSqlCanBeParsedAndDeparsed(String statement) throws JSQLParserException { + public static Statement assertSqlCanBeParsedAndDeparsed(String statement) + throws JSQLParserException { return assertSqlCanBeParsedAndDeparsed(statement, false); } @@ -71,26 +76,26 @@ public static Statement assertSqlCanBeParsedAndDeparsed(String statement) throws * Tries to parse and deparse the given statement. * * @param statement - * @param laxDeparsingCheck removes all linefeeds from the original and removes all double spaces. The check is - * caseinsensitive. + * @param laxDeparsingCheck removes all linefeeds from the original and removes all double + * spaces. The check is caseinsensitive. * @return the parsed {@link Statement} * @throws JSQLParserException */ - public static Statement assertSqlCanBeParsedAndDeparsed(String statement, boolean laxDeparsingCheck) - throws JSQLParserException { + public static Statement assertSqlCanBeParsedAndDeparsed(String statement, + boolean laxDeparsingCheck) throws JSQLParserException { return assertSqlCanBeParsedAndDeparsed(statement, laxDeparsingCheck, null); } /** * @param statement - * @param laxDeparsingCheck removes all linefeeds from the original and removes all double spaces. The check is - * caseinsensitive. + * @param laxDeparsingCheck removes all linefeeds from the original and removes all double + * spaces. The check is caseinsensitive. * @param consumer - a parser-consumer for parser-configurations from outside * @return the parsed {@link Statement} * @throws JSQLParserException */ - public static Statement assertSqlCanBeParsedAndDeparsed(String statement, boolean laxDeparsingCheck, - Consumer<CCJSqlParser> consumer) throws JSQLParserException { + public static Statement assertSqlCanBeParsedAndDeparsed(String statement, + boolean laxDeparsingCheck, Consumer<CCJSqlParser> consumer) throws JSQLParserException { Statement parsed = CCJSqlParserUtil.parse(statement, consumer); assertStatementCanBeDeparsedAs(parsed, statement, laxDeparsingCheck); return parsed; @@ -100,20 +105,62 @@ public static void assertStatementCanBeDeparsedAs(Statement parsed, String state assertStatementCanBeDeparsedAs(parsed, statement, false); } - public static void assertStatementCanBeDeparsedAs(Statement parsed, String statement, boolean laxDeparsingCheck) { + public static void assertStatementCanBeDeparsedAs(Statement parsed, String statement, + boolean laxDeparsingCheck) { String sanitizedInputSqlStr = buildSqlString(parsed.toString(), laxDeparsingCheck); String sanitizedStatementStr = buildSqlString(statement, laxDeparsingCheck); assertEquals(sanitizedStatementStr, sanitizedInputSqlStr); + // Export all the Test SQLs to /tmp/net/sf/jsqlparser + boolean exportToFile = Boolean.parseBoolean(System.getenv("EXPORT_TEST_TO_FILE")); + if (exportToFile) { + writeTestToFile(sanitizedInputSqlStr); + } + StringBuilder builder = new StringBuilder(); - parsed.accept( new StatementDeParser(builder) ); + parsed.accept(new StatementDeParser(builder)); String sanitizedDeparsedStr = buildSqlString(builder.toString(), laxDeparsingCheck); assertEquals(sanitizedStatementStr, sanitizedDeparsedStr); } + private static void writeTestToFile(String sanitizedInputSqlStr) { + StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); + String testMethodName; + String testClassName; + int i = 1; + do { + testMethodName = stackTrace[i].getMethodName(); + testClassName = stackTrace[i].getClassName(); + i++; + } while (testMethodName.equals("writeTestToFile") || testMethodName.startsWith("assert")); + + if (!testMethodName.equals("testRelObjectNameExt")) { + int classNameSeparator = testClassName.lastIndexOf("."); + String simpleClassName = testClassName.substring(classNameSeparator + 1); + String packageName = testClassName.substring(0, classNameSeparator).replace(".", + System.getProperty("file.separator")); + + File file = new File(System.getProperty("java.io.tmpdir") + + System.getProperty("file.separator") + packageName); + file.mkdirs(); + file = new File(file, simpleClassName + ".sql"); + try (FileWriter fileWriter = new FileWriter(file, true)) { + IOUtils.write("-- " + testMethodName + "\n", fileWriter); + IOUtils.write(sanitizedInputSqlStr, fileWriter); + if (!sanitizedInputSqlStr.trim().endsWith(";")) { + IOUtils.write("\n;", fileWriter); + } + IOUtils.write("\n\n", fileWriter); + } catch (IOException ex) { + Logger.getLogger(TestUtils.class.getName()).log(Level.SEVERE, + "Writing SQL to file failed.", ex); + } + } + } + /** * Asserts that the {@link Statement} can be deparsed and deparsing results in given #statement * @@ -136,7 +183,8 @@ public static void assertEqualsObjectTree(Statement parsed, Statement created) { /** * @param stmt - * @return a {@link String} build by {@link ToStringBuilder} and {@link ObjectTreeToStringStyle#INSTANCE} + * @return a {@link String} build by {@link ToStringBuilder} and + * {@link ObjectTreeToStringStyle#INSTANCE} */ public static String toReflectionString(Statement stmt) { return toReflectionString(stmt, false); @@ -144,17 +192,20 @@ public static String toReflectionString(Statement stmt) { /** * @param stmt - * @return a {@link String} build by {@link ToStringBuilder} and {@link ObjectTreeToStringStyle#INSTANCE} + * @return a {@link String} build by {@link ToStringBuilder} and + * {@link ObjectTreeToStringStyle#INSTANCE} */ public static String toReflectionString(Statement stmt, boolean includingASTNode) { ReflectionToStringBuilder strb = new ReflectionToStringBuilder(stmt, - includingASTNode ? ObjectTreeToStringStyle.INSTANCE_INCLUDING_AST : ObjectTreeToStringStyle.INSTANCE); + includingASTNode ? ObjectTreeToStringStyle.INSTANCE_INCLUDING_AST + : ObjectTreeToStringStyle.INSTANCE); return strb.build(); } /** - * Replacement of {@link Arrays#asList(Object...)} which returns java.util.Arrays$ArrayList not java.util.ArrayList, - * the internal model uses java.util.ArrayList by default, which supports modification + * Replacement of {@link Arrays#asList(Object...)} which returns java.util.Arrays$ArrayList not + * java.util.ArrayList, the internal model uses java.util.ArrayList by default, which supports + * modification * * @param <T> * @param obj @@ -175,7 +226,8 @@ private static final class ObjectTreeToStringStyle extends MultilineRecursiveToS private static final long serialVersionUID = 1L; public static final ObjectTreeToStringStyle INSTANCE = new ObjectTreeToStringStyle(false); - public static final ObjectTreeToStringStyle INSTANCE_INCLUDING_AST = new ObjectTreeToStringStyle(true); + public static final ObjectTreeToStringStyle INSTANCE_INCLUDING_AST = + new ObjectTreeToStringStyle(true); private boolean includingASTNode; @@ -205,10 +257,12 @@ public void append(final StringBuffer buffer, final String fieldName, final Obje } /** - * empty {@link Collection}'s should be printed as <code>null</code>, otherwise the outcome cannot be compared + * empty {@link Collection}'s should be printed as <code>null</code>, otherwise the outcome + * cannot be compared */ @Override - protected void appendDetail(final StringBuffer buffer, final String fieldName, final Collection<?> coll) { + protected void appendDetail(final StringBuffer buffer, final String fieldName, + final Collection<?> coll) { if (coll.isEmpty()) { appendNullText(buffer, fieldName); } else { @@ -217,10 +271,12 @@ protected void appendDetail(final StringBuffer buffer, final String fieldName, f } /** - * empty {@link Map}'s should be printed as <code>null</code>, otherwise the outcome cannot be compared + * empty {@link Map}'s should be printed as <code>null</code>, otherwise the outcome cannot + * be compared */ @Override - protected void appendDetail(final StringBuffer buffer, final String fieldName, final Map<?, ?> coll) { + protected void appendDetail(final StringBuffer buffer, final String fieldName, + final Map<?, ?> coll) { if (coll.isEmpty()) { appendNullText(buffer, fieldName); } else { @@ -248,8 +304,8 @@ public boolean isNotANode(Class<?> clazz) { * * @param stmt * @param statement - * @param laxDeparsingCheck removes all linefeeds from the original and removes all double spaces. The check is - * caseinsensitive. + * @param laxDeparsingCheck removes all line feeds from the original and removes all double + * spaces. The check is case-insensitive. */ public static void assertDeparse(Statement stmt, String statement, boolean laxDeparsingCheck) { StatementDeParser deParser = new StatementDeParser(new StringBuilder()); @@ -268,7 +324,18 @@ public static String buildSqlString(final String originalSql, boolean laxDeparsi // assure spacing around Syntax Characters sanitizedSqlStr = SQL_SANITATION_PATTERN2.matcher(sanitizedSqlStr).replaceAll("$1"); - return sanitizedSqlStr.trim().toLowerCase(); + + sanitizedSqlStr = sanitizedSqlStr.trim().toLowerCase(); + + // Rewrite statement separators "/" and "GO" + if (sanitizedSqlStr.endsWith("/")) { + sanitizedSqlStr = sanitizedSqlStr.substring(0, sanitizedSqlStr.length() - 1) + ";"; + } else if (sanitizedSqlStr.endsWith("go")) { + sanitizedSqlStr = sanitizedSqlStr.substring(0, sanitizedSqlStr.length() - 2) + ";"; + } + + return sanitizedSqlStr; + } else { // remove comments only return SQL_COMMENT_PATTERN.matcher(originalSql).replaceAll(""); @@ -277,7 +344,8 @@ public static String buildSqlString(final String originalSql, boolean laxDeparsi @Test public void testBuildSqlString() { - assertEquals("select col from test", buildSqlString(" SELECT col FROM \r\n \t TEST \n", true)); + assertEquals("select col from test", + buildSqlString(" SELECT col FROM \r\n \t TEST \n", true)); assertEquals("select col from test", buildSqlString("select col from test", false)); } @@ -292,7 +360,8 @@ public static void assertExpressionCanBeDeparsedAs(final Expression parsed, Stri assertEquals(expression, stringBuilder.toString()); } - public static void assertExpressionCanBeParsedAndDeparsed(String expressionStr, boolean laxDeparsingCheck) throws JSQLParserException { + public static void assertExpressionCanBeParsedAndDeparsed(String expressionStr, + boolean laxDeparsingCheck) throws JSQLParserException { Expression expression = CCJSqlParserUtil.parseExpression(expressionStr); assertEquals(buildSqlString(expressionStr, laxDeparsingCheck), buildSqlString(expression.toString(), laxDeparsingCheck)); diff --git a/src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java b/src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java index 261688e5a..72645c4b0 100644 --- a/src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java +++ b/src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java @@ -9,11 +9,6 @@ */ package net.sf.jsqlparser.util; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.StringReader; -import java.util.Iterator; -import java.util.List; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.OracleHint; @@ -29,18 +24,24 @@ import net.sf.jsqlparser.statement.insert.Insert; import net.sf.jsqlparser.statement.merge.Merge; import net.sf.jsqlparser.statement.merge.MergeInsert; -import net.sf.jsqlparser.statement.replace.Replace; import net.sf.jsqlparser.statement.select.Select; import net.sf.jsqlparser.statement.simpleparsing.CCJSqlParserManagerTest; import net.sf.jsqlparser.statement.update.Update; import net.sf.jsqlparser.statement.upsert.Upsert; import net.sf.jsqlparser.test.TestException; +import org.junit.jupiter.api.Test; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.util.Iterator; +import java.util.List; + import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.Test; public class TablesNamesFinderTest { @@ -275,7 +276,7 @@ public void testGetTableListFromReplace() throws Exception { String sql = "REPLACE INTO MY_TABLE1 (a) VALUES ((SELECT a from MY_TABLE2 WHERE a = 1))"; net.sf.jsqlparser.statement.Statement statement = pm.parse(new StringReader(sql)); - Replace replaceStatement = (Replace) statement; + Upsert replaceStatement = (Upsert) statement; TablesNamesFinder tablesNamesFinder = new TablesNamesFinder(); List<String> tableList = tablesNamesFinder.getTableList(replaceStatement); assertEquals(2, tableList.size()); diff --git a/src/test/java/net/sf/jsqlparser/util/deparser/StatementDeParserTest.java b/src/test/java/net/sf/jsqlparser/util/deparser/StatementDeParserTest.java index 9c9bc8a74..fc5842784 100644 --- a/src/test/java/net/sf/jsqlparser/util/deparser/StatementDeParserTest.java +++ b/src/test/java/net/sf/jsqlparser/util/deparser/StatementDeParserTest.java @@ -13,6 +13,8 @@ import java.util.List; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.LongValue; +import net.sf.jsqlparser.expression.StringValue; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.schema.Column; @@ -27,6 +29,7 @@ import net.sf.jsqlparser.statement.update.Update; import net.sf.jsqlparser.statement.update.UpdateSet; import net.sf.jsqlparser.statement.upsert.Upsert; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -381,4 +384,33 @@ public void testIssue1500AllTableColumns() throws JSQLParserException { PlainSelect selectBody = (PlainSelect) select.getSelectBody(); selectBody.accept(new SelectDeParser()); } + + @Test + public void testIssue1608DeparseValueList() throws JSQLParserException { + String providedSql ="INSERT INTO example (num, name, address, tel) VALUES (1, 'name', 'test ', '1234-1234')"; + String expectedSql ="INSERT INTO example (num, name, address, tel) VALUES (?, ?, ?, ?)"; + + net.sf.jsqlparser.statement.Statement statement = CCJSqlParserUtil.parse(providedSql); + StringBuilder builder = new StringBuilder(); + ExpressionDeParser expressionDeParser = new ExpressionDeParser() { + @Override + public void visit(StringValue stringValue) { + buffer.append("?"); + } + + @Override + public void visit(LongValue longValue) { + buffer.append("?"); + } + }; + + SelectDeParser selectDeParser = new SelectDeParser(expressionDeParser, builder); + expressionDeParser.setSelectVisitor(selectDeParser); + expressionDeParser.setBuffer(builder); + + StatementDeParser statementDeParser = new StatementDeParser(expressionDeParser, selectDeParser, builder); + statement.accept(statementDeParser); + + Assertions.assertEquals(expectedSql, builder.toString()); + } } diff --git a/src/test/java/net/sf/jsqlparser/util/validation/validator/ReplaceValidatorTest.java b/src/test/java/net/sf/jsqlparser/util/validation/validator/ReplaceValidatorTest.java index ff7c39f82..25f25c7d1 100644 --- a/src/test/java/net/sf/jsqlparser/util/validation/validator/ReplaceValidatorTest.java +++ b/src/test/java/net/sf/jsqlparser/util/validation/validator/ReplaceValidatorTest.java @@ -9,7 +9,6 @@ */ package net.sf.jsqlparser.util.validation.validator; -import java.util.Arrays; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.parser.feature.Feature; import net.sf.jsqlparser.util.validation.ValidationTestAsserts; @@ -17,6 +16,8 @@ import net.sf.jsqlparser.util.validation.feature.FeaturesAllowed; import org.junit.jupiter.api.Test; +import java.util.Arrays; + public class ReplaceValidatorTest extends ValidationTestAsserts { @Test @@ -33,7 +34,7 @@ public void testValidateReplaceNotAllowed() throws JSQLParserException { for (String sql : Arrays.asList("REPLACE mytable SET col1='as', col2=?, col3=565", "REPLACE mytable (col1, col2, col3) VALUES ('as', ?, 565)", "REPLACE mytable (col1, col2, col3) SELECT * FROM mytable3")) { - validateNotAllowed(sql, 1, 1, FeaturesAllowed.SELECT.copy().add(FeaturesAllowed.JDBC), Feature.replace); + validateNotAllowed(sql, 1, 1, FeaturesAllowed.SELECT.copy().add(FeaturesAllowed.JDBC), Feature.upsert); } } diff --git a/src/test/java/net/sf/jsqlparser/util/validation/validator/ShowIndexStatementValidatorTest.java b/src/test/java/net/sf/jsqlparser/util/validation/validator/ShowIndexStatementValidatorTest.java new file mode 100644 index 000000000..ee9469460 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/util/validation/validator/ShowIndexStatementValidatorTest.java @@ -0,0 +1,42 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2020 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.util.validation.validator; + +import java.util.Arrays; + +import org.junit.jupiter.api.Test; + +import net.sf.jsqlparser.parser.feature.Feature; +import net.sf.jsqlparser.util.validation.ValidationTestAsserts; +import net.sf.jsqlparser.util.validation.feature.DatabaseType; +import net.sf.jsqlparser.util.validation.feature.FeaturesAllowed; + +/** +* +* @author Jayant Kumar Yadav +*/ + +public class ShowIndexStatementValidatorTest extends ValidationTestAsserts { + + @Test + public void testValidationShowIndex() throws Exception { + for (String sql : Arrays.asList("SHOW INDEX FROM mydatabase")) { + validateNoErrors(sql, 1, DatabaseType.MARIADB, DatabaseType.MYSQL); + } + } + + + @Test + public void testValidationShowIndexNotAllowed() throws Exception { + for (String sql : Arrays.asList("SHOW INDEX FROM mydatabase")) { + validateNotAllowed(sql, 1, 1, FeaturesAllowed.DML, Feature.showIndex); + } + } +} \ No newline at end of file diff --git a/src/test/java/net/sf/jsqlparser/util/validation/validator/UpsertValidatorTest.java b/src/test/java/net/sf/jsqlparser/util/validation/validator/UpsertValidatorTest.java index bdce72845..2e5c3b5f7 100644 --- a/src/test/java/net/sf/jsqlparser/util/validation/validator/UpsertValidatorTest.java +++ b/src/test/java/net/sf/jsqlparser/util/validation/validator/UpsertValidatorTest.java @@ -9,16 +9,19 @@ */ package net.sf.jsqlparser.util.validation.validator; -import java.util.Arrays; import net.sf.jsqlparser.parser.feature.Feature; import net.sf.jsqlparser.util.validation.ValidationTestAsserts; import net.sf.jsqlparser.util.validation.feature.DatabaseType; import net.sf.jsqlparser.util.validation.feature.FeaturesAllowed; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import java.util.Arrays; + public class UpsertValidatorTest extends ValidationTestAsserts { @Test + @Disabled public void testValidationExecuteNotSupported() throws Exception { for (String sql : Arrays.asList("UPSERT INTO TEST (NAME, ID) VALUES ('foo', 123)", "UPSERT INTO TEST (ID, COUNTER) VALUES (123, 0) ON DUPLICATE KEY UPDATE COUNTER = COUNTER + 1", diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/large-sql-issue-923-2.txt b/src/test/resources/net/sf/jsqlparser/statement/select/large-sql-issue-923-2.txt index 080412b8f..45f061cb5 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/large-sql-issue-923-2.txt +++ b/src/test/resources/net/sf/jsqlparser/statement/select/large-sql-issue-923-2.txt @@ -292,7 +292,6 @@ AP_CLAIMS AS --MAIN QUERY SELECT STARTS HERE - SELECT --ORIGINAL @@ -349,7 +348,6 @@ ALL_KINAL_NET_PENALTY, ALL_KINAL_NET_INTEREST, ALL_KINAL_STATUS, - -- DUP 5 CASE WHEN ALL_KINAL_STATUS = 'CLEAN' THEN NULL ELSE TRIM(REPLACE(ALL_KINAL_EOB,',',''))END AS ALL_KINAL_EOB, @@ -368,8 +366,6 @@ CRM_SUBTOPIC ,INFO_CODE3 ,INFO_CODE3_ENTRY_DATE - - FROM --MAIN QUERY TABLE BEGINS TEST3 diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query04.sql index 23e851ec9..f0b32e881 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query04.sql @@ -13,4 +13,5 @@ select deptno , listagg(ename, ',') within group (order by hiredate) over (partition by deptno) as employees from emp ---@FAILURE: Encountered unexpected token: "by" "BY" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "by" "BY" recorded first on Aug 3, 2021, 7:20:08 AM +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Nov 14, 2022, 11:44:23 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query05.sql index e34620dd6..6b4f671ae 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query05.sql @@ -25,4 +25,5 @@ from timegrouped_rawdata d ---@FAILURE: Encountered unexpected token: "by" "BY" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "by" "BY" recorded first on Aug 3, 2021, 7:20:08 AM +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Nov 14, 2022, 11:44:22 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/compound_statements03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/compound_statements03.sql index 12e993aad..d75c5a304 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/compound_statements03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/compound_statements03.sql @@ -14,4 +14,5 @@ BEGIN example_table; END ---@FAILURE: Encountered unexpected token: "BEGIN" "BEGIN" recorded first on May 27, 2022, 10:29:48 PM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "BEGIN" "BEGIN" recorded first on May 27, 2022, 10:29:48 PM +--@FAILURE: Encountered unexpected token: ":" ":" recorded first on 9 Dec 2022, 14:03:29 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update06.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update06.sql index 76efc0e1d..7d12ec290 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update06.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update06.sql @@ -11,4 +11,5 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update of employee_id skip locked ---@FAILURE: Encountered unexpected token: "skip" "SKIP" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "skip" "SKIP" recorded first on Aug 3, 2021, 7:20:08 AM +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Oct 19, 2022, 6:34:12 PM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert01.sql index 5a3b59e59..2564f35d4 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert01.sql @@ -14,4 +14,5 @@ insert into t2 ( x, y ) values ( s.nextval, created ) select object_id, created from all_objects ---@FAILURE: Encountered unexpected token: "when" "WHEN" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "when" "WHEN" recorded first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: Encountered unexpected token: "insert" "INSERT" recorded first on 11 Jan 2023, 21:07:10 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert03.sql index 927a36124..3435fa022 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert03.sql @@ -23,4 +23,5 @@ else values (empno,ename,job,mgr,sal,deptno) select * from emp ---@FAILURE: Encountered unexpected token: "when" "WHEN" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "when" "WHEN" recorded first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: Encountered unexpected token: "insert" "INSERT" recorded first on 11 Jan 2023, 21:07:10 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert04.sql index 98dc6acf8..ddf745c89 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert04.sql @@ -14,4 +14,5 @@ into ap_orders values (order_date, program_id) select program_id, delivered_date, customer_id, order_date from airplanes ---@FAILURE: Encountered unexpected token: "into" "INTO" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "into" "INTO" recorded first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: Encountered unexpected token: "ap_cust" <S_IDENTIFIER> recorded first on 24 Oct 2021, 16:56:39 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert05.sql index aba4caad0..99385692b 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert05.sql @@ -17,4 +17,5 @@ into t (pid, fname, lname) values (3, 'helen', 'lofstrom') select * from dual ---@FAILURE: Encountered unexpected token: "into" "INTO" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "into" "INTO" recorded first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: Encountered unexpected token: "t" <S_IDENTIFIER> recorded first on 24 Oct 2021, 16:56:39 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert11.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert11.sql index 6755f6fd1..34b8d4df2 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert11.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert11.sql @@ -14,4 +14,5 @@ returning empno into x ---@FAILURE: Encountered unexpected token: "into" "INTO" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "into" "INTO" recorded first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: Encountered unexpected token: "x" <S_IDENTIFIER> recorded first on 24 Oct 2021, 16:56:39 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert12.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert12.sql index d72a3af2f..8c5c511c3 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert12.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/insert12.sql @@ -14,4 +14,5 @@ returning rowid into r ---@FAILURE: Encountered unexpected token: "into" "INTO" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "into" "INTO" recorded first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: Encountered unexpected token: "r" <S_IDENTIFIER> recorded first on 24 Oct 2021, 16:56:39 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/interval05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/interval05.sql index 490ef6a85..d37798104 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/interval05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/interval05.sql @@ -10,4 +10,5 @@ -- see metalink note 1056382.1 select 'yes' from dual where (sysdate-5,sysdate) overlaps (sysdate-2,sysdate-1) ---@FAILURE: Encountered unexpected token: "overlaps" <S_IDENTIFIER> recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "overlaps" <S_IDENTIFIER> recorded first on Aug 3, 2021, 7:20:08 AM +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on 31.08.2022 20:18:36 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier04.sql index 0535515f1..bea6452c2 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier04.sql @@ -13,5 +13,4 @@ union all (select null keep, null keep_until from v$backup_piece bp) - --@SUCCESSFULLY_PARSED_AND_DEPARSED first on 3 Jun 2022, 18:48:09 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/loop01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/loop01.sql index c9d4dd3f1..409d8754d 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/loop01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/loop01.sql @@ -16,4 +16,5 @@ begin bulk collect into :empnos; end; ---@FAILURE: Encountered unexpected token: "begin" "BEGIN" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "begin" "BEGIN" recorded first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: Encountered unexpected token: "forall" <S_IDENTIFIER> recorded first on 9 Dec 2022, 14:03:29 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/loop02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/loop02.sql index 06e0fac64..035af9ec2 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/loop02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/loop02.sql @@ -21,4 +21,5 @@ BEGIN END LOOP outer_loop; END; ---@FAILURE: Encountered unexpected token: "BEGIN" "BEGIN" recorded first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "BEGIN" "BEGIN" recorded first on Aug 3, 2021, 7:20:07 AM +--@FAILURE: Encountered unexpected token: "<<" "<<" recorded first on 9 Dec 2022, 14:03:29 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/numbers01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/numbers01.sql index cf909d5db..38a5cd90d 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/numbers01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/numbers01.sql @@ -32,4 +32,5 @@ select 25 from dual ---@FAILURE: Encountered unexpected token: "d" <S_IDENTIFIER> recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "d" <S_IDENTIFIER> recorded first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select 25,+6.34,0.5,25e-03,-1,25f,+6.34 f,0.5 d,-1d,1.,.5,(sysdate-1d),sysdate-1m,sysdate-1dm,1.-+.5,1.+.5,1.+.5 d,1.+.5 dm,1. d,1. m,.5 m,.5 dm from dual recorded first on 11 Jan 2023, 21:07:10 \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring07.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring07.sql index 27f9aee72..bd3934e5a 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring07.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring07.sql @@ -86,4 +86,5 @@ select ) ) ---@FAILURE: Encountered unexpected token: "by" "BY" recorded first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@FAILURE: Encountered unexpected token: "by" "BY" recorded first on Aug 3, 2021, 7:20:08 AM +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Nov 14, 2022, 11:44:23 AM \ No newline at end of file